-
规划标签体系:明确Namespace(如
env=prod
)和Pod(如app=api
)的标签规则,确保权限与业务逻辑匹配。 -
创建带标签的Namespace:
kubectl create namespace dev kubectl label namespace/dev env=prod
-
定义RBAC角色(Role/ClusterRole):
# dev-role.yaml(限制仅操作带app=api标签的Pod) apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: dev name: pod-manager rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list", "delete"] resourceNames: ["*"] # 原生RBAC不支持标签筛选,需配合准入控制器实现
-
绑定用户/组(RoleBinding):
# dev-binding.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: dev-access namespace: dev subjects: - kind: User name: user@example.com roleRef: kind: Role name: pod-manager apiGroup: rbac.authorization.k8s.io
-
补充动态准入控制(如OPA Gatekeeper):
- 定义ConstraintTemplate限制Pod创建时必须包含指定标签
- 实现基于Pod标签的精细化控制
注意:原生RBAC仅支持Namespace和资源类型级控制,Pod标签级需通过准入控制器扩展。