关于 gke-multi-tenancy
gke-multi-tenancy 为使用 Google Kubernetes Engine(GKE)的团队提供多租户与治理实践,涵盖命名空间隔离、权限控制和资源配额。
主要功能
- 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) 集群中实施多租户与治理的指导。
概述
多租户允许多个团队或应用安全地共享单个 GKE 集群。治理可确保策略和资源限制得到执行。
工作流
1. 创建命名空间以实现隔离
命名空间为名称提供作用域,是 Kubernetes 中的主要隔离单位。
步骤:
- 为每个租户创建一个命名空间。
命名空间清单示例:
apiVersion: v1
kind: Namespace
metadata:
name: tenant-a
labels:
team: alpha
2. 配置 RBAC,以遵循最小权限原则
基于角色的访问控制(RBAC)可用于控制谁能访问命名空间内的哪些资源。
步骤:
- 定义一个具有特定权限的
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. 强制执行资源配额
资源配额可防止单个租户耗尽集群中的所有资源。
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
最佳实践
- 每个租户使用一个命名空间:始终为不同团队或应用使用独立的命名空间。
- 遵循最小权限原则配置 RBAC:仅授予用户和服务账号完成工作所需的权限。
- 强制执行配额:使用资源配额确保公平共享集群资源。
- 网络策略:将命名空间与网络策略结合使用(参见 gke-workload-security),以限制跨租户流量。
评论
支持 Markdown