
GKE App Onboarding
FreeStreamline your application deployment to GKE.
Free · Opens the source repo
What GKE App Onboarding does
GKE App Onboarding is a specialized skill designed to assist developers in the process of containerizing and deploying applications to Google Kubernetes Engine (GKE). This skill provides a structured workflow that guides users through the essential steps of onboarding an application for the first time, ensuring that all necessary considerations are addressed before deployment. It covers everything from initial app assessment to the final deployment, making it an invaluable tool for developers new to GKE.
The onboarding process begins with an app assessment, where users evaluate the application's technology stack, dependencies, configuration, statefulness, networking requirements, and health endpoints. This foundational step ensures that developers have a clear understanding of the application’s needs before proceeding to containerization. The skill provides a recommended Dockerfile setup, emphasizing best practices such as multi-stage builds and the use of distroless images, which help create secure and efficient container images.
Once the application is containerized, the skill guides users through image management, including building and pushing the container image to Google’s Artifact Registry. It also emphasizes the importance of vulnerability scanning to ensure the security of the application’s dependencies. Following image management, the skill assists in generating Kubernetes manifests that define the deployment and service configurations necessary for running the application on GKE.
Finally, the skill provides commands for deploying the application using the preferred MCP tools, alongside kubectl fallback options for those familiar with Kubernetes command-line operations. This comprehensive approach not only simplifies the onboarding process but also equips developers with the knowledge and tools needed for successful application deployment on GKE.
When to use it
Use this skill when you are onboarding or deploying an application to GKE for the first time, or when you need to containerize an application specifically for GKE.
When not to use it
This skill is not suitable for general GKE cluster administration or upgrades; use gke-basics or gke-upgrades for those tasks instead.
What you can build with it
First-Time GKE Deployment
Use this skill to guide your team through the process of deploying an application to GKE for the first time.
Containerizing Legacy Apps
Leverage the workflows to containerize and migrate legacy applications to GKE, ensuring they meet modern deployment standards.
Setting Up CI/CD for GKE
Integrate this skill into your CI/CD pipeline to automate the onboarding and deployment of applications to GKE.
How to install GKE App Onboarding
View source1. Install with the skills CLI
npx skills add google/skills/gke-app-onboarding --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by googleGKE 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
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:
Dockerfile (recommended for most apps):
# 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"]
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
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:latest
3. 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 \
--quiet
4. Manifest Generation
Generate Kubernetes manifests for the application:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: default
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: ClusterIP
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)
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-app
Next Steps
Once the application is running on GKE:
- Configure autoscaling — see the
gke-workload-scalingskill - Set up observability — see the
gke-observabilityskill - Harden security — see the
gke-workload-securityskill - Configure reliability (PDBs, topology spread) — see the
gke-reliabilityskill
Frequently asked questions about GKE App Onboarding
Similar skills
Turborepo
Optimized build system for JavaScript/TypeScript monorepos.
Azure Pipelines Validation
Streamline your Azure DevOps pipeline changes locally.
Azure Developer CLI
Streamline your Azure project workflows with best practices.
Azure Container Registry CLI
Manage Azure Container Registry resources with ease.
Aspire
Build and orchestrate polyglot distributed applications seamlessly.
Vercel CLI
Manage and deploy Vercel projects from the command line.
