kubernetes - 如何制作一个允许对命名空间中的角色和角色绑定进行所有操作的 k8s 角色?
问题描述
我想创建一个角色,允许在命名空间级别上对“Roles”和“RoleBindings”(但不是 ClusterRoles 或 ClusterRoleBindings)执行任何操作。
这是我放在一起的角色 YAML,但是当它绑定到服务帐户时,它现在被应用了。我做错了什么?
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: role-binder
namespace: foo-namespace
rules:
- apiGroups:
- rbac.authorization.k8s.io
resources:
- Role
- RoleBinding
verbs:
- '*'
解决方案
您可以通过以下规则实现:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: role-grantor
rules:
- apiGroups: ["rbac.authorization.k8s.io"]
resources: ["rolebindings"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["rbac.authorization.k8s.io"]
resources: ["roles"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: role-grantor-binding
namespace: office
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: role-grantor
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: employee
我在我的实验室对其进行了测试,它可以按您的意愿工作:
$ kubectl --context=employee-context get role
NAME AGE
deployment-manager 15m
role-binder 12m
$ kubectl --context=employee-context get rolebindings
NAME AGE
deployment-manager-binding 15m
role-grantor-binding 3m37s
$ kubectl --context=employee-context get clusterrolebindings
Error from server (Forbidden): clusterrolebindings.rbac.authorization.k8s.io is forbidden: User "employee" cannot list resource "clusterrolebindings" in API group "rbac.authorization.k8s.io" at the cluster scope
您可以在文档中详细了解此内容。
推荐阅读
- h.264 - 高动态范围:我可以将 ICtCp 数据直接馈送到视频编码器吗?
- azure - 访问虚拟机的成本
- windows - 将视频文件的帧率和分辨率导出为 excel 或 txt 文件
- python - 尝试安装 psycopg2/psycopg2-binary 时出现 widnows 错误 1120
- javascript - 需要一种从 css 文件中获取颜色代码的方法
- java - 在 Spring Boot 中,哪个类将首先初始化 @Component 或 @Configuration
- python - XGB 性能优于神经网络
- tfs - Git tfs clone - 服务器无法处理请求。---> 生成 XML 文档时出错。---> 指定的强制转换无效
- java - 不使用 android studio 和 ms sql 数据库在 android 应用程序中显示图像
- reactjs - 链接按钮的材质 UI 图标不起作用