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

gke-multitenancy — скилл для Claude Code: установка и задачи

Планирует мультитенантность в GKE: изоляцию команд, RBAC, лимиты ресурсов и разнесение затрат. Нужен, когда один кластер используют несколько команд или сред.

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

Что делает 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-code

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

~/.claude/skills/gke-multitenancy/SKILL.md

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

Похожие

wizard Matt Pocock Скилл создаёт интерактивный bash-скрипт для ручных шагов: настройки сервисов, секретов CI и разовых миграций. Claude Code 553 369установок setup-pre-commit Matt Pocock Скилл настраивает pre-commit для JavaScript-репозитория: Husky запускает форматирование, проверку типов и тесты перед коммитом. Claude Code 489 289установок 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установок dotnet-upgrade официальный github Помогает спланировать обновление проектов .NET: проверить зависимости, выбрать порядок миграции и подготовить проверки после неё. GitHub Copilot 11 475установок create-github-action-workflow-specification официальный github Скилл разбирает существующий GitHub Actions workflow и оформляет его поведение, зависимости и ограничения как спецификацию для ИИ. GitHub Copilot 10 745установок

Вопросы о 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

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

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

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