适用场景
多团队共用一个集群,核心是"隔离":资源不能互相抢占、网络不能乱窜、权限不能越界。四件事缺一件都会出问题。
配置步骤(RBAC 与命名空间权限)
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata: { name: dev-team, namespace: team-a }
subjects: [{ kind: User, name: dev1, apiGroup: rbac.authorization.k8s.io }]
roleRef: { kind: ClusterRole, name: edit, apiGroup: rbac.authorization.k8s.io }
关键参数与建议
- 命名空间:按团队/环境划分,禁止使用 default
- RBAC:按命名空间授权,禁止随意 cluster-admin
- 网络策略:默认拒绝跨命名空间,按需放通
- 资源配额:ResourceQuota + LimitRange,防止单团队吃满
- 审计与标签:资源必须有 owner 标签,便于计量与清理
容易踩的坑
- 直接给 cluster-admin,越权风险大
- 用 Group 管理成员,离职未移除导致权限遗留
- 未限制 exec/port-forward,可进入他人容器
验证与巡检
kubectl auth can-i get pods --namespace=team-b --as=dev1
- 巡检:无多余 cluster-admin 绑定、权限季度复核
小结
多租户的验收:模拟一个团队尝试越权(访问别的命名空间、抢资源、跨网访问),全部应被拒绝。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。