Catalog
google/gke-app-onboarding

google

gke-app-onboarding

Manages GKE application onboarding, covering containerization, deployment manifests, and migration. Use when onboarding or deploying an application to GKE for the first time, or containerizing an app for GKE. Don't use for general GKE cluster administration or upgrades (use gke-basics or gke-upgrades instead).

New~1.2kUpdated Jun 28, 2026

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-scaling skill
  • Set up observability — see the gke-observability skill
  • Harden security — see the gke-security skill
  • Configure reliability (PDBs, topology spread) — see the gke-reliability skill
Files5
5 files · 13.6 KB

Select a file to preview

Overall Score

88/100

Grade

A

Excellent

Safety

87

Quality

90

Clarity

88

Completeness

85

Summary

A reference guide for containerizing and deploying applications to Google Kubernetes Engine (GKE) for the first time. It covers application assessment, Dockerfile creation, image management, Kubernetes manifest generation, and deployment using MCP tools. The skill provides best practices for security (multi-stage builds, distroless images, non-root users) and includes practical examples with Node.js and Go applications.

Static Analysis Findings

1 finding

Patterns detected by deterministic static analysis before AI scoring. Hover over any finding code for detailed information and remediation guidance.

Credential Exposure
SEC-020Direct .env File Access

Direct .env file access

assets/index.js.env

Detected Capabilities

read yaml filesread dockerfile filesread source code filesread package manifestsapply kubernetes manifests via MCP toolsquery kubernetes resources via MCP toolsdocker build and push commandsgcloud artifact registry commandskubectl commands (fallback)environment variable reads

Trigger Keywords

Phrases that MCP clients use to match this skill to user intent.

containerize for gkedeploy app to gkegke onboardingkubernetes manifestsdockerfile best practicesgke first deploymentnode app to gkecontainer image management

Risk Signals

INFO

Direct .env file access reference in example code (process.env.PORT)

assets/index.js:3
INFO

Process environment variable reads (process.env.PORT || 8080)

assets/index.js:3

Referenced Domains

External domains referenced in skill content, detected by static analysis.

buildpacks.iowww.apache.org

Use Cases

  • Containerize a new application for GKE deployment
  • Create Kubernetes deployment manifests for an app
  • Deploy a containerized application to GKE
  • Migrate an existing app to run on GKE
  • Set up health checks and resource limits for GKE pods
  • Configure container security best practices (non-root, read-only filesystems)
  • Integrate Cloud Native Buildpacks for automatic container image building

Quality Notes

  • Comprehensive workflow covering all major onboarding stages from assessment to deployment
  • Excellent security practices demonstrated throughout (multi-stage builds, distroless images, non-root users, securityContext)
  • Clear scope boundaries: explicitly states when NOT to use this skill (cluster administration, upgrades)
  • Well-structured with logical sections and checklists for verification
  • Practical examples provided for both Go and Node.js applications
  • Cross-references to related skills for autoscaling, observability, and security hardening
  • MCP tools preferred with kubectl fallback documented
  • Asset files (Dockerfile, deployment.yaml, index.js) provide concrete working examples
  • Security hardening checklist in deployment.yaml is production-ready
  • Environment variable handling is standard practice for containerized apps
Model: claude-haiku-4-5-20251001Analyzed: Jun 28, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Version History

  1. v1.1

    Content updated

    ✦ AINo behavioral changes detected.

    2026-06-28

    Latest
  2. v1.0

    2026-06-24

    View This VersionInitial version

Use google/gke-app-onboarding in your dev environment

Command Palette

Search for a command to run...