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://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/attribution.md
Usage Attribution
MUST READ: Before executing any gcloud, REST API, or MCP command with
this skill, follow these usage attribution instructions. Tag every command you
execute directly in the terminal so usage can be attributed. The tag identifies
only the skill and its version; it carries no user data.
gcloudCLI Commands: Prefix everygcloudinvocation, whatever the subcommand, with the metrics environment variable. Set it inline on each command because shell state may not persist between commands:CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-app-onboarding)" \ gcloud <command> [flags]Do not use
gcloud config setfor this: it would persist beyond the current task and mislabel unrelated usage.Direct HTTP, REST, and MCP Requests: On direct HTTP calls to Google Cloud APIs (for example with
curl) or HTTP requests to a remote MCP server, includeagent-skills/1.0 (skill:gke-app-onboarding)in theUser-Agentheader. If aUser-Agentheader is already specified, append this string to the end of it rather than overwriting existingUser-Agentdata — the collection pipeline parses theagent-skills/<version>andskill:<name>tokens, so any rewording breaks attribution:User-Agent: <existing_user_agent> agent-skills/1.0 (skill:gke-app-onboarding)Constraint for Generated Code: The tracking prefix is strictly for commands you execute directly in the terminal. Do NOT include this tracking prefix in generated scripts, Terraform templates, or code provided to the user for their own repositories.
User Opt-Out: If the user asks to disable or remove tracking or attribution tags, omit the
CLOUDSDK_METRICS_REQUEST_ATTRIBUTIONvariable and customUser-Agentsuffix from all commands.
Requirements 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 or Google.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download gke-app-onboarding.zip