mcpField
G
gke-multi-tenancy

gke-multi-tenancy

github.com/googlecloudplatformクラウド・DevOps16948 回インストール3 日前に更新
リポジトリ

gke-multi-tenancy について

gke-multi-tenancyは、GKEクラスターを複数のテナントで共有する際の分離とガバナンスを案内するスキルです。名前空間、RBAC、リソースクォータ、ネットワークポリシーを扱います。

主な機能

  1. 01名前空間によるテナント分離
  2. 02最小権限RBACの設定
  3. 03リソースクォータの設定
  4. 04ネットワークポリシーによる通信分離

活用シーン

  1. 01チームごとのGKEワークロード分離
  2. 02ユーザーとサービスアカウントの権限制限
  3. 03特定テナントによるリソース占有の防止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/googlecloudplatform/gke-mcp --skill gke-multi-tenancy

インストール後、Claude Code で/gke-multi-tenancyを入力して読み込まれたか確認します。

詳細

GKE のマルチテナンシーとガバナンス

このスキルでは、Google Kubernetes Engine(GKE)クラスターでマルチテナンシーとガバナンスを実装する方法について説明します。

概要

マルチテナンシーを利用すると、1 つの GKE クラスターを複数のチームやアプリケーションで安全に共有できます。ガバナンスにより、ポリシーとリソースの上限が確実に適用されます。

ワークフロー

1. 分離のための Namespace の作成

Namespace は名前のスコープを提供し、Kubernetes における主要な分離単位です。

手順:

  1. テナントごとに Namespace を作成します。

Namespace マニフェストの例:

apiVersion: v1
kind: Namespace
metadata:
  name: tenant-a
  labels:
    team: alpha
2. 最小権限の RBAC の設定

ロールベースアクセス制御(RBAC)を利用すると、Namespace 内のリソースに誰がアクセスできるかを制御できます。

手順:

  1. 特定の権限を持つ Role を定義します。
  2. RoleBinding を使用して、Role をユーザーまたはグループにバインドします。

Role と RoleBinding のマニフェスト例:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: tenant-a
  name: pod-reader
rules:
  - apiGroups: [""] # "" indicates the core API group
    resources: ["pods"]
    verbs: ["get", "watch", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: tenant-a
subjects:
  - kind: User
    name: [email protected] # Name is case sensitive
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: pod-reader
  apiGroup: rbac.authorization.k8s.io
3. リソースクォータの適用

リソースクォータにより、1 つのテナントがクラスター内のすべてのリソースを消費するのを防ぎます。

ResourceQuota マニフェストの例:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: tenant-a-quota
  namespace: tenant-a
spec:
  hard:
    requests.cpu: "2"
    requests.memory: 4Gi
    limits.cpu: "4"
    limits.memory: 8Gi

ベストプラクティス

  1. テナントごとに Namespace を使用:チームやアプリケーションごとに、必ず別々の Namespace を使用します。
  2. 最小権限の RBAC:ユーザーやサービスアカウントが業務を行うために必要な権限のみを付与します。
  3. クォータの適用:Resource Quotas を使用して、クラスターリソースを公平に共有できるようにします。
  4. ネットワークポリシー:Namespace とネットワークポリシー(gke-workload-security を参照)を組み合わせて、テナント間のトラフィックを制限します。

コメント