我试图删除泰克顿 kubernetes配置的服务帐户上下文中的deletecollection资源,并且遇到了使用所有tekton资源访问deletecollection的特定错误。一个示例错误如下:
pipelines.tekton.dev被禁止:用户“system:serviceaccount:my-account:默认的”API组中的"tekton.dev“命名空间”my-命名空间“中的”不能删除资源管道“。
我试图在这里应用RBAC来帮助您,但是仍然会遇到同样的错误。我的RBAC尝试如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: my-role
namespace: my-namespace
rules:
- apiGroups: ["tekton.dev"]
resources: ["pipelines", "pipelineruns", "tasks", "taskruns"]
verbs: ["get", "watch", "list", "delete", "deletecollection"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: my-role-binding
namespace: my-namespace
subjects:
- kind: User
name: system:serviceaccount:my-account:default
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: my-role
apiGroup: rbac.authorization.k8s.io这些RBAC配置继续导致相同的错误。这是必要的,还是类似的?在与tekton资源进行接口时,是否有RBAC的例子,特别是删除?
发布于 2020-07-28 14:49:38
给定两个名称空间my-namespace和my-account,my-account命名空间中的默认服务帐户被正确地授予my-namespace中pipelines上的deletecollection谓词的权限。
在应用之后,您可以像这样使用kubectl auth can-i来验证这一点:
$ kubectl -n my-namespace --as="system:serviceaccount:my-account:default" auth can-i deletecollection pipelines.tekton.de
yes验证您是否实际应用了RBAC清单。
发布于 2020-07-28 14:11:25
更改RBAC如下
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: my-role
namespace: my-namespace
rules:
- apiGroups: ["tekton.dev"]
resources: ["pipelines", "pipelineruns", "tasks", "taskruns"]
verbs: ["get", "watch", "list", "delete", "deletecollection"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: my-rolebinding
namespace: my-namespace
subjects:
- kind: ServiceAccount
name: default
namespace: my-account
roleRef:
kind: Role
name: my-role
apiGroup: rbac.authorization.k8s.io有几件事值得注意:
subjects使用来自User的ServiceAccount。这实际上是导致失败的原因,因为服务帐户没有被授予RBAC。my-namespace命名空间的default服务帐户删除my-account中的Tekton资源。如果情况不同,则需要相应地对Role和RoleBinding进行更改。https://stackoverflow.com/questions/63135505
复制相似问题