gke-multitenancy — скилл для Claude Code: установка и задачи
Планирует мультитенантность в GKE: изоляцию команд, RBAC, лимиты ресурсов и разнесение затрат. Нужен, когда один кластер используют несколько команд или сред.
npx skills add google/skills --skill gke-multitenancy -a claude-codeЧто делает gke-multitenancy
Скилл помогает выбрать модель разделения GKE-кластера: namespace для команды или среды, отдельный node pool либо отдельный кластер. Он настраивает namespace, роли и RoleBinding с минимальными правами, ResourceQuota, LimitRange и NetworkPolicy для изоляции трафика.
Внутри есть примеры манифестов Kubernetes и команды kubectl для создания namespace, меток и квот. Также он описывает включение GKE cost allocation по namespace и меткам. Перед вызовами gcloud, REST API или MCP-инструментов нужно прочитать references/attribution.md; для прямых команд в терминале требуется префикс с атрибуцией.
Ставьте его для общего GKE-кластера с несколькими командами. Для однопользовательского кластера или обычного деплоя лучше взять gke-basics либо gke-app-onboarding.
Какие задачи решает
- разделить команды по namespace в одном GKE-кластере
- выдать RBAC-права в пределах namespace
- ограничить CPU, память и число Pod через ResourceQuota
- задать контейнерам значения ресурсов через LimitRange
- изолировать сетевой трафик и разнести затраты по меткам
Примеры запросов агенту
- «Спланируй namespace-per-team для команд в GKE-кластере.»
- «Создай Role и RoleBinding для team-a в namespace team-a.»
- «Добавь ResourceQuota, LimitRange и NetworkPolicy для team-a.»
Как установить gke-multitenancy
1Через Skills CLI (Vercel)
npx skills add google/skills --skill gke-multitenancy -a claude-code2Вручную: положить файлы
~/.claude/skills/gke-multitenancy/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/gke-multitenancy/
1Через Skills CLI (Vercel)
npx skills add google/skills --skill gke-multitenancy -a codex2Вручную: положить файлы
.agents/skills/gke-multitenancy/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/gke-multitenancy/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install google/skills gke-multitenancy2Вручную: положить файлы
.github/skills/gke-multitenancy/SKILL.md1Через Skills CLI (Vercel)
npx skills add google/skills --skill gke-multitenancy -a gemini-cli2Командой платформы
gemini skills install https://github.com/google/skills --path skills/cloud/gke-multitenancyВручную: положить файлы
.devin/skills/gke-multitenancy/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о gke-multitenancy
Как установить gke-multitenancy в Claude Code?
Выполните npx skills add google/skills --skill gke-multitenancy -a claude-code. Файл скилла будет расположен в ~/.claude/skills/gke-multitenancy/SKILL.md.
Что делает gke-multitenancy?
Скилл проектирует и настраивает мультитенантность GKE: namespace, RBAC, квоты ресурсов, LimitRange, сетевую изоляцию и распределение затрат.
Какая модель мультитенантности рекомендована для старта?
Для экономии ресурсов скилл советует начать с namespace-per-team. Более строгую изоляцию стоит выбирать, когда этого требуют требования к соответствию.
Исходный текст
SKILL.md · Apache-2.0
--- name: gke-multitenancy description: >- Plans and configures multi-tenancy on GKE. Covers namespace isolation, RBAC planning for teams, resource quotas, LimitRanges, network isolation, and cost allocation. Use when designing GKE multi-tenancy, configuring GKE namespaces, setting up resource quotas, or isolating GKE teams. Don't use for single-tenant cluster configuration or general deployment instructions (use gke-basics or gke-app-onboarding instead). metadata: version: "1.0.1" category: Containers --- # GKE Multi-Tenancy This reference covers enterprise multi-tenancy patterns on GKE, including namespace isolation, RBAC planning, resource quotas, and network segmentation. > **MCP Tools:** `apply_k8s_manifest`, `get_k8s_resource`, `check_k8s_auth`, > `describe_k8s_resource`, `delete_k8s_resource` ## 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-multitenancy)"` and append `agent-skills/1.0 (skill:gke-multitenancy)` to `User-Agent` headers. ## When to Use - Multiple teams sharing a single GKE cluster - Isolating workloads by environment (dev/staging/prod) within one cluster - Implementing least-privilege access control - Cost allocation across teams or projects ## Multi-Tenancy Models | Model | Isolation | Complexity | Cost | | ----------------------------- | ------------ | ---------- | -------------- | | **Namespace-per-team** | Soft (RBAC + | Low | Lowest (shared | : : Network : : cluster) : : : Policy) : : : | **Namespace-per-environment** | Soft | Low | Low | | **Node pool-per-team** | Medium | Medium | Medium | : : (dedicated : : : : : compute) : : : | **Cluster-per-team** | Hard (full | High | Highest | : : isolation) : : : > **Golden path recommendation**: Start with namespace-per-team for cost > efficiency. Escalate to stronger isolation only when compliance requires it. ## Namespace Isolation Setup ### 1. Create Namespaces ```bash kubectl create namespace team-a kubectl create namespace team-b kubectl label namespace team-a team=a kubectl label namespace team-b team=b ``` ### 2. RBAC Configuration **Principle**: Grant minimal permissions per namespace. Never bind to `system:authenticated`. ```yaml # Namespace-scoped role for a team apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: team-a-developer namespace: team-a rules: - apiGroups: ["", "apps", "batch"] resources: ["pods", "deployments", "services", "configmaps", "jobs"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: team-a-developers namespace: team-a subjects: - kind: Group name: "[email protected]" # Google Group apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: team-a-developer apiGroup: rbac.authorization.k8s.io ``` **RBAC best practices:** Use Google Groups for subject bindings. Prefer namespace-scoped Roles over ClusterRoles. See the `gke-platform-security` skill for full RBAC hardening guidance. ### 3. Resource Quotas Prevent any single team from consuming all cluster resources: ```yaml apiVersion: v1 kind: ResourceQuota metadata: name: team-a-quota namespace: team-a spec: hard: requests.cpu: "10" requests.memory: "20Gi" limits.cpu: "20" limits.memory: "40Gi" pods: "50" services: "10" persistentvolumeclaims: "10" ``` ### 4. LimitRanges Set default and maximum resource constraints per container: ```yaml apiVersion: v1 kind: LimitRange metadata: name: team-a-limits namespace: team-a spec: limits: - type: Container default: cpu: "500m" memory: "512Mi" defaultRequest: cpu: "100m" memory: "128Mi" max: cpu: "4" memory: "8Gi" ``` > [!IMPORTANT] **Mandatory Defaults**: When defining `min` or `max` limits in a > `LimitRange`, you **must** also define corresponding `default` and > `defaultRequest` values. If you set a `min` or `max` without defaults, any pod > deployed without explicit resource requests/limits will be rejected by the > admission controller. ### 5. Network Isolation Apply default-deny per namespace (see the `gke-workload-security` skill), then allow intra-team traffic: ```yaml # Allow same-namespace pods to talk + DNS apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-same-namespace namespace: team-a spec: podSelector: {} ingress: - from: - podSelector: {} egress: - to: - podSelector: {} - to: # Allow DNS - namespaceSelector: {} podSelector: matchLabels: k8s-app: kube-dns ports: - protocol: UDP port: 53 ``` ## Cost Allocation ### Labels for Cost Attribution ```bash # Label namespaces for billing kubectl label namespace team-a cost-center=engineering kubectl label namespace team-b cost-center=data-science ``` ### GKE Cost Allocation Enable GKE cost allocation to break down costs by namespace and label: ```bash gcloud container clusters update <CLUSTER_NAME> --region <REGION> \ --enable-cost-allocation ``` View in Cloud Billing > GKE Cost Allocation.
© google · Apache-2.0 · google/skills