kubernetes - Kubernetes 管理员隔离
问题描述
大多数 Kubernetes 操作员都需要能够创建集群角色、集群角色绑定和 crd。
我想要一个适当的 rbac 隔离,并且我想避免将部署服务帐户直接作为管理员。
但是如果我只给它集群角色编辑权限,似乎它允许它把自己放在最后。
处理这个问题的正确方法是什么?(如果有的话)。
解决方案
您可以拥有命名空间并拥有只能访问您想要的特定资源和 apiGroups 的服务帐户。
apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab-tez-dev # account name
namespace: tez-dev #namespace
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tez-dev-full-access #role
namespace: tez-dev
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["deployments", "replicasets", "pods", "services"] #resources to which permissions are granted
verbs: ["*"] # what actions are allowed
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tez-dev-view
namespace: tez-dev
subjects:
- kind: ServiceAccount
name: gitlab-tez-dev
namespace: tez-dev
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: tez-dev-full-access
因此,上述角色没有集群访问权限,如果仅限于定义的命名空间以及指定的特定资源和操作,则它的访问权限。
然后,您可以使用它在定义的命名空间中进行部署。
推荐阅读
- python - Python - 使用文件引导程序 SuperCollider
- javascript - 将 socket.io 封装在一个类中
- mysql - Logstash 聚合重置值
- reactjs - create-react-app:没有使用 create-react-app 错误/启动脚本提供的模板(即使在删除全局安装的 create-react-app 之后)
- linux - 从目录中的文本文件创建新文件并插入文本
- list - Ansible根据其他项目列表创建项目列表
- angular6 - 如何使用复选框实现 p-autocomplete?
- mysql - sql文件无法验证多个存储过程
- python - WARNING:tensorflow:Layer my_model 将输入张量从 dtype float64 转换为 layer 的 float32 dtype,这是 TensorFlow 2 中的新行为
- jquery - 浏览器 XMLHttpRequest 中的 Jquery 问题?