К основному содержанию
скилл Claude Code Gemini CLI CX Codex официальный · Google

gke-manifest-generation — скилл для GKE: манифесты и установка

Создаёт и обновляет Kubernetes-манифесты для GKE Autopilot и Standard. Подойдёт, когда нужно описать ресурсы, проверки здоровья и сетевые маршруты приложения.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add google/skills --skill gke-manifest-generation -a claude-code
Открыть на GitHub

Что делает gke-manifest-generation

Скилл помогает превратить описание приложения или изменения в коде в YAML-манифесты. Он задаёт требования к namespace и ServiceAccount, CPU и памяти, проверкам liveness и readiness, а для медленно запускающихся приложений — startupProbe. Также описывает настройки безопасности контейнеров, подключение Secret и volumes, сервисы и маршруты через Gateway API.

Для GKE Autopilot запросы и лимиты ресурсов должны совпадать; для GKE Standard скилл предлагает учитывать планирование и не задавать чрезмерное превышение лимитов. Для тестовых и staging-нагрузок или запроса на снижение затрат он добавляет настройки Spot VMs. Для медленно запускающихся приложений нужны startupProbe; на GKE Standard для Spot VMs предполагается настроенный Spot node pool.

Ставьте его, если создаёте или меняете манифесты для GKE. Для действий с живым кластером, диагностики Pod и подготовки инфраструктуры кластера он не предназначен.

Какие задачи решает

  • задать запросы и лимиты CPU и памяти для контейнеров
  • добавить проверки liveness, readiness и запуска приложения
  • настроить запуск контейнера без root и ограничить его привилегии
  • подключить Secret как файл только для чтения
  • описать внешний маршрут через GKE Gateway API

Примеры запросов агенту

  • Создай Deployment для GKE Autopilot с проверками здоровья и ограничениями ресурсов.
  • Обнови манифесты: подключи Secret как read-only файл и настрой запуск без root.
  • Подготовь для staging Deployment с настройками Spot VMs и Gateway API.

Как установить gke-manifest-generation

1Через Skills CLI (Vercel)

npx skills add google/skills --skill gke-manifest-generation -a claude-code

2Вручную: положить файлы

~/.claude/skills/gke-manifest-generation/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/gke-manifest-generation/

Похожие

wizard Matt Pocock Скилл создаёт интерактивный bash-скрипт для ручных шагов: настройки сервисов, секретов CI и разовых миграций. Claude Code 553 369установок setup-pre-commit Matt Pocock Скилл настраивает pre-commit для JavaScript-репозитория: Husky запускает форматирование, проверку типов и тесты перед коммитом. Claude Code 489 289установок hyperframes-cli heygen-com Управляет проектами HyperFrames через терминал: собирает таймлайн, проверяет контраст кадров, запускает предпросмотр и рендерит видео локально или в облаке. Claude Code CX Codex Cursor +1 1 200 000установок using-git-worktrees Jesse Vincent Готовит изолированное рабочее дерево перед доработкой или выполнением плана. Проверяет текущий репозиторий, выбирает нативные средства платформы либо Git. Claude Code CX Codex 217 153установок finishing-a-development-branch Jesse Vincent Скилл проверяет тесты и помогает выбрать, как завершить работу в ветке: слить её, открыть Pull Request или оставить как есть. Claude Code CX Codex 214 439установок lark-event larksuite Слушает события Lark/Feishu и отдаёт их потоком NDJSON. Подходит для ботов, обработчиков сообщений и долгих подписчиков. Claude Code CX Codex Cursor +1 466 200установок

Вопросы о gke-manifest-generation

Как установить gke-manifest-generation в Claude Code?

Выполните npx skills add google/skills --skill gke-manifest-generation -a claude-code.

Что делает gke-manifest-generation?

Создаёт и обновляет Kubernetes YAML-манифесты для GKE Autopilot и GKE Standard, включая настройки ресурсов, безопасности и проверок здоровья.

Подойдёт ли скилл для диагностики Pod в работающем кластере?

Нет. Он предназначен для создания и изменения манифестов, а не для диагностики Pod или операций с живым кластером.

Исходный текст

SKILL.md · Apache-2.0
---
name: gke-manifest-generation
metadata:
  version: "1.0.1"
  category: Containers
description: >-
  Generates and updates secure, production-ready Kubernetes YAML manifests optimized for GKE Autopilot and GKE Standard clusters. Use when creating or modifying GKE deployment manifests, configuring container security contexts, setting CPU/memory resource limits, defining readiness/liveness/startup probes, mounting secrets and volumes, configuring GKE Gateway API routes, targeting Spot VMs, or deploying AI model inference workloads (vLLM, TGI, Gemma). Don't use for live cluster operations, pod troubleshooting (use gke-workload-troubleshooting), or cluster infrastructure provisioning (use gke-cluster-creation).
---

# GKE Manifest Generation Skill

This skill provides guidelines, tooling integration, and templates to translate
natural language descriptions or application code changes into secure,
compliant, and cost-effective Kubernetes YAML manifests optimized for both GKE
Autopilot and GKE Standard clusters.

## Attribution

**MUST READ**: Before executing any `gcloud`, REST API, or MCP command, you
MUST read [Usage Attribution](references/attribution.md). 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-manifest-generation)"`
and append `agent-skills/1.0 (skill:gke-manifest-generation)` to `User-Agent` headers.

## Core Rules & Verification

When generating or updating YAML manifests, you **must** strictly adhere to the
following rules:

### 1. Namespace & Resource Isolation

-   **Explicit Namespace**: Always declare `namespace: {namespace}` explicitly
    in the metadata of every resource (Deployments, Services, ConfigMaps,
    Secrets, PVCs, Roles, bindings). Map it to the namespace configured in your
    active `SETTINGS.md`. Never omit the namespace.
-   **Dedicated ServiceAccount**: Avoid using the namespace's `default`
    ServiceAccount. Always create and reference a dedicated `ServiceAccount`
    (e.g., `devteam-agent-sa`) for each microservice.

### 2. GKE Resource Tuning (Autopilot & Standard)

-   **Resources Requests & Limits**: Always specify CPU and Memory requests and
    limits for all containers.
    -   *GKE Autopilot*: Requests determine pod billing directly; requests and
        limits must be equal. If they differ, Autopilot will automatically scale
        requests up to match limits, which can significantly increase costs.
    -   *GKE Standard*: Requests ensure stable scheduling and bin-packing;
        limits prevent resource starvation/noisy-neighbor issues.
-   **Density Defaults**: For stateless apps or sidecars on GKE Standard,
    default to conservative requests (e.g., `requests.cpu: "100m"` or `"200m"`,
    `requests.memory: "256Mi"` or `"512Mi"`) with burstable limits. Use a
    reasonable overcommit ratio for limits (e.g., 2x to 4x requests, like
    `limits.cpu: "400m"` to `"800m"`, and `limits.memory: "512Mi"` to `"1Gi"`).
    Avoid excessive overcommit limits (like `limits.cpu: "4"` for a `100m`
    request) to prevent severe CPU throttling and latency degradation under
    heavy scheduling load, particularly in environments without guaranteed node
    shares.
-   **Spot VMs for Staging/Dev**: For non-production workloads (e.g., namespaces
    containing `-test`, `-dev`, or `-staging`), or if the user requests cost
    optimization, automatically target GKE Spot VMs. This requires injecting
    both the `nodeSelector` targeting Spot VMs AND the corresponding toleration
    to tolerate the Spot VM taint:

    ```yaml
    nodeSelector:
      cloud.google.com/gke-spot: "true"
    tolerations:
      - key: "cloud.google.com/gke-spot"
        operator: "Equal"
        value: "true"
        effect: "NoSchedule"
    ```

    (On GKE Standard, this assumes a Spot node pool is configured).

### 3. Container Security Hardening (Pod Security Standards)

-   **Non-Root Execution**: Always configure `securityContext` at the Pod level
    (and container level if overriding) to run as a non-root user (e.g.,
    `runAsNonRoot: true`, `runAsUser: 10000`, `runAsGroup: 10000`, `fsGroup:
    10000`). This is strictly enforced on GKE Autopilot and is a critical
    security baseline for GKE Standard.
-   **Minimal Privileges**: Always set `allowPrivilegeEscalation: false` and
    `seccompProfile: {type: RuntimeDefault}`.
-   **Read-Only Root Filesystem**: Set `readOnlyRootFilesystem: true` to prevent
    modifications to the container image filesystem.
    -   *Writable Directory Fallback*: If `readOnlyRootFilesystem` is enabled,
        mount a local `emptyDir` volume to `/tmp` or `/var/run/` to allow
        applications (like Java/Nginx) to write temp files without crashing.
-   **Secret Volume Mounting**: Prefer mounting Secrets as read-only files
    (configured in the `volumes` spec with `defaultMode: 0400`) instead of
    mapping them as environment variables, unless the application framework
    exclusively supports env-var based configuration. This prevents secrets
    leaking into application logs.

### 4. Health Checking (Mandatory Probes)

-   **Liveness & Readiness Probes**: Every Deployment container must define both
    `livenessProbe` and `readinessProbe`.
    -   **Web/API**: Use `httpGet` probes.
    -   **TCP Services**: Use `tcpSocket` probes.
    -   **Databases/Caches**: Use command-based `exec` probes (e.g.,
        `exec.command: ["redis-cli", "ping"]`).
-   **Startup Probes for Slow-Starting Apps**: For applications with slow boot
    times (e.g., Java spring boot, complex Python scripts, LLM model servers),
    you **must** also define a `startupProbe`. When a `startupProbe` is defined,
    the liveness and readiness probes are disabled until it succeeds, preventing
    Kubernetes from prematurely killing the pod during startup:

    ```yaml
    startupProbe:
      httpGet:
        path: /healthz
        port: 8080
      failureThreshold: 30
      periodSeconds: 10
    ```

-   **Sensible Defaults**: Set `initialDelaySeconds: 5` to `15` depending on
    startup time (e.g., Java requires a longer delay than Go/Nginx).

### 5. Services & Ingress Routing

-   **Internal ClusterIP**: Default all internal microservices to `type:
    ClusterIP`. Never use `type: LoadBalancer` or `NodePort` unless the workload
    is explicitly intended to be publicly accessible from the internet.
-   **Port Naming**: Always assign clear, standard names to service and
    container ports (e.g., `name: http-web` or `name: grpc-api`) to enable
    automatic protocol discovery, tracing, and Web App routing.
-   **Prefer Gateway API**: When exposing APIs externally, prioritize using GKE
    Gateway API (`Gateway` and `HTTPRoute` resources) over legacy `Ingress`
    objects to enable advanced L7 routing and security features (e.g., Cloud
    Armor).

### 6. Volume Mounts, StorageClasses & subPath Safety

-   **Avoid Directory Overwrites**: When mounting a `ConfigMap` or `Secret` to
    an application directory containing other files (like Nginx public
    directories), always use `subPath` to overlay only the specific file.
    *Caveat*: Note that containers using `subPath` volume mounts do not receive
    automatic configuration updates if the underlying ConfigMap or Secret is
    modified; pods must be restarted manually to pick up changes.
-   **StorageClass Selection**: Use the correct GKE storage class in
    PersistentVolumeClaims:
    -   *CSI Driver Clusters (Autopilot & Modern Standard)*: Use `standard-rwo`
        (default balanced PD) or `premium-rwo` (SSD PD).
    -   *Legacy Standard Clusters*: Use `standard` (default PD) or `premium`
        (SSD PD) if `standard-rwo`/`premium-rwo` are not configured.
    -   *Database rule*: Use SSD storage classes (`premium-rwo` or `premium`)
        only when the prompt explicitly requests high IOPS, low latency, or
        database storage.

### 7. High Availability on GKE

-   **Topology Spread**: For deployments with >1 replica, use `podAntiAffinity`
    or `topologySpreadConstraints` with `topologyKey: "kubernetes.io/hostname"`
    to distribute pods across GKE nodes and availability zones.
-   **PodDisruptionBudget**: For deployments with >1 replica, declare a
    `PodDisruptionBudget` to guarantee minimum replica availability during
    voluntary GKE node upgrades and maintenance cycles.

### 8. Updates & Server-Side Apply Reconciliations

-   **Stable List Keys**: Under Kubernetes Server-Side Apply (SSA), elements in
    associative lists (like volumes, volume mounts, ports, and container
    definitions) are matched and merged by their unique identifier keys
    (typically `name`). You **must** keep the `name` key stable when modifying
    properties of an existing list item. Renaming the `name` key will cause SSA
    to create a brand new entry and leave the old entry intact (orphaned) rather
    than modifying it.
-   **Minimal Diff**: Make only the changes requested. Adhere closely to
    existing labels, annotations, and conventions.

--------------------------------------------------------------------------------

## Specialty Workloads: GKE AI/Inference Serving (vLLM, TGI, etc.)

For model serving workloads, prioritize using optimized tooling like GKE
Inference Quickstart if available. If generating manually:

1.  **GPU Request & Allocation**:
    -   Always request `nvidia.com/gpu` in both `requests` and `limits`.
    -   Add a `nodeSelector` or node affinity targeting the desired GKE
        accelerator tag (e.g., `cloud.google.com/gke-accelerator: nvidia-l4`).
2.  **Shared Memory Boost**:
    -   Model servers require high shared memory (`/dev/shm`) for inter-process
        communications. Always declare and mount an `emptyDir` volume with
        `medium: Memory` to `/dev/shm`.
3.  **Weight Loading Optimization**:
    -   Mount model weight directories (like GCS buckets) using the GKE GCS Fuse
        CSI driver (`csi.storage.gke.io`) as `readOnly: true` for efficient
        cold-starts.

--------------------------------------------------------------------------------

## Tooling & Grounding Guidelines

When generating manifests, you should leverage the following tooling to reduce
hallucinations and optimize configurations:

1.  **Inference Workloads (GKE Inference Quickstart CLI)**:

    -   Make sure you have the
        [Google Cloud SDK](https://cloud.google.com/sdk/docs/install) installed.
    -   For all AI/LLM inference workloads (e.g. model serving), you **must**
        prioritize using the `gcloud` CLI GKE Inference Quickstart command to
        generate the optimized manifests instead of writing them manually:

        ```bash
        gcloud container ai profiles manifests create \
          --model={model_name} \
          --model-server={server_name} \
          --accelerator-type={accelerator_type} \
          --output=manifest \
          --output-path={output_file_path}
        ```

    -   *Constraint*: You must include all resources returned by this command
        (Deployments, Services, PodMonitoring, etc.) without filtering.

2.  **Grounding in Official Documentation (Developer Knowledge API)**:

    -   For GKE-specific features, API defaults, manifest examples, or security
        contexts, you **must** query Google's developer knowledge base to
        retrieve official GKE documentation:
        -   **`answer_query`**: Use this to ask direct questions (e.g., *"How to
            configure GCS Fuse CSI driver in GKE"*). This is the preferred tool
            for general queries.
        -   **`search_documents`**: Use this to search for relevant GKE guides
            or examples when you don't have a specific question.
        -   **`get_document`**: Use this to fetch full document contents when
            you have a specific document ID.

--------------------------------------------------------------------------------

## Reference Examples

For detailed, production-ready manifest templates, consult the following
reference guides:

-   **[Basic Hardened Nginx Workload](references/basic-workload.md)**:
    Production-ready deployment with dedicated service account, security
    contexts, probes, anti-affinity, and PodDisruptionBudget.
-   **[Network Policy](references/network-policy.md)**: Default-deny ingress
    network policy and selective ingress allowance for specific apps.
-   **[AI/LLM Inference Workload](references/ai-inference.md)**: GPU resource
    allocation, Workload Identity, GCS FUSE CSI driver mounting, `/dev/shm`
    shared memory boost, and startup probes.
-   **[GKE Gateway API Routing](references/gateway-api.md)**: Exposing workloads
    using GKE L7 Gateway API (`Gateway` and `HTTPRoute` resources).

© google · Apache-2.0 · google/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой