kubernetes RBAC角色动词到exec到pod

9rnv2umw  于 2023-05-06  发布在  Kubernetes
关注(0)|答案(1)|浏览(168)

我的1.9集群为dev用户创建了这个部署角色。部署按预期工作。现在我想给予exec和日志访问开发人员。我需要为pod中的exec添加什么角色?

kind: Role
name: deployment-manager
  rules:
  - apiGroups: ["", "extensions", "apps"]
    resources: ["deployments", "replicasets", "pods"]
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

错误信息:

kubectl exec nginx -it -- sh  

Error from server (Forbidden): pods "nginx" is forbidden: User "dev" cannot create pods/exec in the namespace "dev"

谢谢SR

mwkjh3gx

mwkjh3gx1#

RBAC文档说
大多数资源都是用它们名称的字符串表示形式来表示的,例如“pod”,就像它在相关API端点的URL中出现的一样。然而,一些Kubernetes API涉及“子资源”,例如Pod的日志。[...]要在RBAC角色中表示此资源,请使用斜杠分隔资源和子资源。
要允许一个subject读取pod和pod日志,并且能够执行pod,你可以这样写:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: pod-and-pod-logs-reader
rules:
- apiGroups: [""]
  resources: ["pods", "pods/log"]
  verbs: ["get", "list"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create"]

一些客户端库可能会执行httpGET来首先协商一个WebSocket,这需要“get”动词。kubectl发送一个http POST,这就是为什么在这种情况下它需要“create”动词。

相关问题