Kir*_*ill 9 roles rbac kubernetes kubernetes-deployment kubernetes-pod
我需要使用 RBAC 授予对一个部署和此部署的所有 pod 的访问权限。我已经成功地配置Role和RoleBinding对deploymet,这是工作的罚款:
---
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: ""
Run Code Online (Sandbox Code Playgroud)
使用此角色用户可以访问、更新和修补部署。此部署创建具有动态名称(如<deployment>-5594cbfcf4-v4xx8)的pod 。我试图允许此用户使用部署名称和使用部署名称 + 通配符字符访问这些 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"]
Run Code Online (Sandbox Code Playgroud)
我还更新了角色绑定。但是当我尝试获取 pod 时:
---
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: ""
Run Code Online (Sandbox Code Playgroud)
我收到错误:
来自服务器的错误(禁止):禁止 pods“<deployment>-5594cbfcf4-v4xx8”:用户“<username>”无法在命名空间“<namespace>”中的 API 组“”中获取资源“pods”
如果我添加<deployment>-5594cbfcf4-v4xx8到 的列表中resourceNames,用户可以访问此 pod。
是否可以根据部署名称授予对特定 Pod 的访问权限?
Utk*_*mir 17
在 Kubernetes 中,Pod 被视为短暂的“牛”,它们来来去去。您不应该尝试管理每个 Pod 的 RBAC。
在您的用例中,遗憾的是无法通过一组匹配特定名称的 pod 授予角色,因为该resourceNames字段不支持 prefixes/suffixes 之类的模式。不要混淆:单个星号字符 ( '*') 具有特殊含义,表示“全部”,但它不是模式。因此,'my-app-*在 resourceNames 中将不起作用。此功能已打开票证,但未实施:https :
//github.com/kubernetes/kubernetes/issues/56582
还有一个请求能够通过标签管理 RBAC,但该功能也没有实现:https :
//github.com/kubernetes/kubernetes/issues/44703
因此,您可能需要更改模型以向用户授予管理特定命名空间中所有 Pod 的角色。您的部署应该是该命名空间中唯一的“pod 来源”。这样,您就不需要指定任何资源名称。
| 归档时间: |
|
| 查看次数: |
3131 次 |
| 最近记录: |