New to Claude Skills? Learn how to install them →

google on GitHub

GKE App Onboarding

Free

Streamline your application deployment to GKE.

by google17.6k stars on google/skills
1 views
Updated Aug 10, 2026
Get this skill

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 source

1. Install with the skills CLI

npx skills add google/skills/gke-app-onboarding --agent claude-code

2. 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 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

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 stdout and stderr for 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-scaling skill
  • Set up observability — see the gke-observability skill
  • Harden security — see the gke-workload-security skill
  • Configure reliability (PDBs, topology spread) — see the gke-reliability skill

Frequently asked questions about GKE App Onboarding

Similar skills