gke-multi-tenancy について
gke-multi-tenancyは、GKEクラスターを複数のテナントで共有する際の分離とガバナンスを案内するスキルです。名前空間、RBAC、リソースクォータ、ネットワークポリシーを扱います。
主な機能
- 01名前空間によるテナント分離
- 02最小権限RBACの設定
- 03リソースクォータの設定
- 04ネットワークポリシーによる通信分離
活用シーン
- 01チームごとのGKEワークロード分離
- 02ユーザーとサービスアカウントの権限制限
- 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 における主要な分離単位です。
手順:
- テナントごとに Namespace を作成します。
Namespace マニフェストの例:
apiVersion: v1
kind: Namespace
metadata:
name: tenant-a
labels:
team: alpha
2. 最小権限の RBAC の設定
ロールベースアクセス制御(RBAC)を利用すると、Namespace 内のリソースに誰がアクセスできるかを制御できます。
手順:
- 特定の権限を持つ
Roleを定義します。 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
ベストプラクティス
- テナントごとに Namespace を使用:チームやアプリケーションごとに、必ず別々の Namespace を使用します。
- 最小権限の RBAC:ユーザーやサービスアカウントが業務を行うために必要な権限のみを付与します。
- クォータの適用:Resource Quotas を使用して、クラスターリソースを公平に共有できるようにします。
- ネットワークポリシー:Namespace とネットワークポリシー(gke-workload-security を参照)を組み合わせて、テナント間のトラフィックを制限します。
コメント
Markdown 対応