Gke App Onboarding
GoogleOfficialPublished by Google
- Skill
- Workflow
- Cloud and DevOps
- Apache-2.0
- Low risk
- Has scripts
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a comprehensive, step-by-step guide for onboarding applications to GKE. It covers the entire lifecycle from initial application assessment and containerization best practices—such as using multi-stage builds and non-root users—to generating production-hardened Kubernetes manifests and executing the deployment. It emphasizes security, reliability, and observability by mandating resource requests, health probes, and proper IAM configurations.
What it does
- Assesses application requirements for containerization and GKE compatibility.
- Provides guidance on creating secure, multi-stage Dockerfiles.
- Facilitates image building and pushing to Google Artifact Registry.
- Generates production-hardened Kubernetes Deployment and Service manifests.
- Executes deployments using MCP tools or kubectl.
- Enforces a golden path checklist for security and reliability standards.
When to use it
- When deploying an application to GKE for the first time.
- When containerizing an existing application for GKE deployment.
- When you need to ensure your deployment manifests meet production-hardened security standards.
- When you need a reliable, repeatable process for migrating workloads to GKE.
Advantages
- Ensures consistent, secure, and reliable deployment configurations.
- Reduces attack surface through distroless images and non-root execution.
- Promotes best practices like health probes and resource requests.
- Provides clear, actionable steps for both containerization and manifest generation.
Usage examples
- “Help me containerize my Node.js application for GKE.”
- The agent will guide you through creating a multi-stage Dockerfile, setting up health endpoints, and configuring a hardened deployment manifest.
- “How do I deploy my containerized app to GKE with production standards?”
- The agent will review your current setup against the golden path checklist, including resource requests, probes, and IAM/Workload Identity requirements.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/google/gke-app-onboarding/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip gke-app-onboarding.zip -d .agents/skills
Documentation by Google
GKE App Onboarding
This reference provides workflows for containerizing and deploying applications to GKE for the first time.
MCP Tools:
apply_k8s_manifest,get_k8s_resource,get_k8s_rollout_status,get_k8s_logs,describe_k8s_resource
Attribution
MUST READ: Before executing any gcloud, REST API, or MCP command, you
MUST read Usage Attribution. For commands executed
directly in the terminal (never in generated scripts, Terraform, or user code),
prefix gcloud with
CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-app-onboarding)"
and append agent-skills/1.0 (skill:gke-app-onboarding) to User-Agent headers.
Workflow
1. App Assessment
Before containerizing, assess the application:
Language & Framework: Identify the tech stack
Dependencies: List required libraries and external services
Configuration: How is the app configured? (env vars, config files, secrets)
Statefulness: Does it need persistent storage? (databases, file storage)
Networking: Port mapping and protocol (HTTP, gRPC, TCP)
Health endpoints: Does the app expose health check endpoints?
2. Containerization
Create a container image. A Dockerfile with a multi-stage build is recommended
for most apps — see the Go Dockerfile in
references/go-example.md for a worked example.
Best practices:
Use multi-stage builds to keep production images small
Use distroless or minimal base images to reduce attack surface
Run as non-root user
Log to
stdoutandstderrfor Cloud Logging collection
A complete worked Node.js example is provided in assets/:
Dockerfile (non-root node user),
index.js (implements distinct /healthz and /readyz
endpoints), package.json, and
deployment.yaml (hardened Deployment plus
ClusterIP Service, probes wired to /healthz and /readyz).
For applications where writing a Dockerfile is not preferred, you can use Cloud Native Buildpacks to automatically detect the language and build a container image:
pack build <image> --builder gcr.io/buildpacks/builder:latest3. Image Management
Build and store the container image:
# Configure Docker for Artifact Registry
gcloud auth configure-docker <REGION>-docker.pkg.dev --quiet
# Build and push
docker build -t <REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG> .
docker push <REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG>Vulnerability scanning: Enable automatic scanning in Artifact Registry to detect issues in base images and dependencies.
# Check scan results
gcloud artifacts docker images describe \
<REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG> \
--show-package-vulnerability \
--quiet4. Manifest Generation
Generate Kubernetes manifests for the application. A baseline Deployment +
ClusterIP Service manifest (probes, resource requests/limits, 2 replicas) is in
references/go-example.md.
Checklist for manifests:
Resource requests and limits set
Liveness and readiness probes configured
At least 2 replicas for production
Service type appropriate (ClusterIP for internal, use Gateway API for external)
See assets/deployment.yaml for a hardened worked
example. A production-hardened pod spec must include ALL of: runAsNonRoot: true, readOnlyRootFilesystem: true, allowPrivilegeEscalation: false,
capabilities.drop: ["ALL"], seccompProfile: {type: RuntimeDefault},
automountServiceAccountToken: false (unless the pod needs the token — then say
why), resource requests, digest-pinned image, and a ClusterIP Service.
That checklist is the baseline for any pod spec produced here. For manifest work
beyond it — Gateway API routes, GCS FUSE and secret volume mounting, subPath
overlays, Spot VM targeting, or AI/inference serving specs — see
gke-manifest-generation.
5. Deploy
# MCP (preferred)
apply_k8s_manifest(parent="projects/<PROJECT>/locations/<REGION>/clusters/<CLUSTER>", yamlManifest="<manifest>")
# Verify
get_k8s_rollout_status(parent="...", resourceType="deployment", name="my-app")
get_k8s_resource(parent="...", resourceType="pod", labelSelector="app=my-app")kubectl fallback:
kubectl apply -f manifests/
kubectl rollout status deployment/my-app
kubectl get pods -l app=my-appGolden Path Onboarding Checklist
For every production application onboarding to GKE:
Container Security: Non-root user (
runAsNonRoot: true), lockfile install, minimal/distroless base image.Resource Requests: Explicit CPU and memory requests (mandatory for GKE Autopilot).
Health Probes: Both liveness (
livenessProbe) and readiness (readinessProbe) probes configured.Reliability & Availability: At least 2 replicas and a
PodDisruptionBudget(minAvailable: 1or2).IAM & Workload Identity: Workload Identity (
iam.gke.io/gcp-service-account) instead of static service account keys.
Next Steps
Once the application is running on GKE:
Configure autoscaling — see the
gke-workload-scalingskillSet up observability — see the
gke-observabilityskillHarden security — see the
gke-workload-securityskillConfigure reliability (PDBs, topology spread) — see the
gke-reliabilityskill
Files
- ATTRIBUTION.mdAdded by AutoGineer854 B
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md5.9 KiB
- assets/Dockerfile531 B
- assets/deployment.yaml1.9 KiB
- assets/index.jsScript863 B
- assets/package-lock.json193 B
- assets/package.json125 B
- references/attribution.md1.8 KiB
- references/go-example.md2.0 KiB
references/go-example.md
Go Containerization & Manifest Example
<!-- disableFinding(LINK_RELATIVE_G3DOC) -->
Worked Go example for the gke-app-onboarding workflow: a
multi-stage distroless Dockerfile and a baseline Deployment + Service manifest.
For a complete hardened Node.js example (app code, Dockerfile, and manifest),
see ../assets/.
Multi-stage Go Dockerfile
Multi-stage build producing a small, non-root distroless image:
# Multi-stage build for smaller, more secure images
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN CGO_ENABLED=0 go build -o server .
FROM gcr.io/distroless/static:nonroot
COPY --from=builder /app/server /server
USER nonroot:nonroot
EXPOSE 8080
ENTRYPOINT ["/server"]Baseline Deployment + Service manifest
Starting-point manifest with resource requests/limits, liveness/readiness
probes, 2 replicas, and a ClusterIP Service. For a hardened variant (non-root
securityContext, read-only root filesystem, digest-pinned image), see
../assets/deployment.yaml.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: my-app # Replace with your namespace
spec:
replicas: 2
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: <REGION>-docker.pkg.dev/<PROJECT>/<REPO>/<IMAGE>:<TAG>
ports:
- containerPort: 8080
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
readinessProbe:
httpGet:
path: /readyz
port: 8080
initialDelaySeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
type: ClusterIPRequirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs a command-line tool, Needs Node.js
Security
What our scanner noticed· Low risk
- Scripts that your agent may run
This skill includes scripts that your agent may run. Read them before you use it.
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- Publisher
- Google (Official)
- Source
- google/skills · skills/cloud/gke-app-onboarding · commit 2194d3b
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Google.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download gke-app-onboarding.zip