【发布时间】:2020-04-15 08:51:21
【问题描述】:
我需要使用 RBAC 授予对一个部署和该部署的所有 pod 的访问权限。
我已经成功地为deploymet 配置了Role 和RoleBinding,并且工作正常:
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: <my-namespace>
name: <deployment>-manager-role
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["deployments"]
resourceNames: ["<deployment>"]
verbs: ["get", "list", "watch", "update", "patch"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: <deployment>-manager-binding
namespace: <my-namespace>
subjects:
- kind: User
name: <username>
apiGroup: ""
roleRef:
kind: Role
name: <deployment>-manager-role
apiGroup: ""
使用此角色,用户可以访问、更新和修补部署。此部署创建具有动态名称的 pod(如 <deployment>-5594cbfcf4-v4xx8)。我尝试允许该用户使用部署名称和使用部署名称 + 通配符字符 * 访问这些 pod(获取、列出、监视、读取日志、执行、删除):
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: <my-namespace>
name: <deployment>-pods-manager-role
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["pods"]
resourceNames: ["<deployment>*"]
verbs: ["get", "list", "watch", "update", "patch", "exec", "delete"]
我还更新了角色绑定。但是当我尝试获取吊舱时:
kubectl --context=<username>-ctx -n <namespace> get pods <deployment>-5594cbfcf4-v4xx8
我收到错误:
来自服务器的错误(禁止):pod“
-5594cbfcf4-v4xx8”被禁止:用户“ ”无法在命名空间“ ”中的 API 组“”中获取资源“pods”
如果我将<deployment>-5594cbfcf4-v4xx8 添加到resourceNames 的列表中,用户就可以访问这个pod。
是否可以根据部署名称授予对特定 pod 的访问权限?
【问题讨论】:
-
权限通常由命名空间设置,改为使用该模型 - 会更容易。
标签: kubernetes roles rbac kubernetes-pod kubernetes-deployment