我正在尝试使用第三方工具解决一个问题。该工具需要能够确保我告诉它工作的命名空间存在。为此,它运行:
kubectl get namespace my-namespace-name-here
我让第三方工具以其身份运行的用户在my-namespace-name-here
命名空间中具有edit
权限。(通过使用称为edit
的clusterrole
的rolebinding
到命名空间。(
但是,编辑权限不足以允许它检查(使用该命令(命名空间是否存在。
理想情况下,我想要一种方法来授予用户权限,只获取上面的一个命名空间。但是,如果我可以只授予列出名称空间的权限,而不授予集群级别的其他新内容,我会感到满意。
如何仅向列表命名空间添加权限
我想通了!
我需要将Role
的作用域设置为my-namespace-name-here
,以授予获取名称空间的能力。然后创建一个rolebinding
,将该权限授予我的用户。运行kubectl apply -f ./my-yaml-file-below.yaml
做到了。
这是yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: namespace-reader
namespace: my-namespace-name-here
rules:
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get"]
---
apiVersion: "rbac.authorization.k8s.io/v1"
kind: RoleBinding
metadata:
name: my-username-here-namespace-reader
namespace: my-namespace-name-here
roleRef:
apiGroup: "rbac.authorization.k8s.io"
kind: Role
name: namespace-reader
subjects:
- apiGroup: "rbac.authorization.k8s.io"
kind: User
name: "my-username-here@mydomain.com"
这允许用户只在授予权限的命名空间上执行kubectl get namespace
。