添加 pods/portforward 的创建权限似乎删除了 configmaps 的获取权限
Adding a create permission for pods/portforward seems to remove the get permission for configmaps
我正在尝试从该命名空间内的容器中 运行 helm status --tiller-namespace=$NAMESPACE $RELEASE_NAME
。
我在规则中扮演角色
- apiGroups:
- ""
resources:
- pods
- configmaps
verbs:
- get
- watch
绑定到默认服务帐户。但是我得到了错误
Error: pods is forbidden: User "system:serviceaccount:mynamespace:default" cannot list resource "pods" in API group "" in the namespace "mynamespace"
所以我像这样添加了 list
动词
- apiGroups:
- ""
resources:
- pods
- configmaps
verbs:
- get
- watch
- list
现在我已经进展到错误 cannot create resource "pods/portforward" in API group ""
。我在 k8s 文档中找不到任何关于如何将不同的动词分配给同一 apiGroup 中的不同资源的任何内容,但基于 this example 我认为这应该有效:
- apiGroups:
- ""
resources:
- pods
- configmaps
verbs:
- get
- watch
- list
- apiGroups:
- ""
resources:
- pods/portforward
verbs:
- create
但是,现在我收到错误 cannot get resource "configmaps" in API group ""
。请注意,在 运行 helm status
命令之前,我 运行 宁 kubectl get cm $CMNAME
。
看来我确实有权执行 kubectl get cm
直到 我尝试添加创建 pods/portforward 的权限。
有人能给我解释一下吗?
集群也是运行ning k8s版本
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.7+1.2.3.el7", GitCommit:"cfc2012a27408ac61c8883084204d10b31fe020c", GitTreeState:"archive", BuildDate:"2019-05-23T20:00:05Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}
和头盔版本
Server: &version.Version{SemVer:"v2.12.1", GitCommit:"02a47c7249b1fc6d8fd3b94e6b4babf9d818144e", GitTreeState:"clean"}
我的问题是我正在部署具有这些角色的清单作为 helm chart 的一部分(使用 helm 2)。但是部署的tiller的服务账号没有create
pods/portforward
权限。因此它无法授予该权限,因此在尝试使用角色部署清单时出错。这意味着未创建 configmap 获取权限角色,因此出现了奇怪的错误。
我正在尝试从该命名空间内的容器中 运行 helm status --tiller-namespace=$NAMESPACE $RELEASE_NAME
。
我在规则中扮演角色
- apiGroups:
- ""
resources:
- pods
- configmaps
verbs:
- get
- watch
绑定到默认服务帐户。但是我得到了错误
Error: pods is forbidden: User "system:serviceaccount:mynamespace:default" cannot list resource "pods" in API group "" in the namespace "mynamespace"
所以我像这样添加了 list
动词
- apiGroups:
- ""
resources:
- pods
- configmaps
verbs:
- get
- watch
- list
现在我已经进展到错误 cannot create resource "pods/portforward" in API group ""
。我在 k8s 文档中找不到任何关于如何将不同的动词分配给同一 apiGroup 中的不同资源的任何内容,但基于 this example 我认为这应该有效:
- apiGroups:
- ""
resources:
- pods
- configmaps
verbs:
- get
- watch
- list
- apiGroups:
- ""
resources:
- pods/portforward
verbs:
- create
但是,现在我收到错误 cannot get resource "configmaps" in API group ""
。请注意,在 运行 helm status
命令之前,我 运行 宁 kubectl get cm $CMNAME
。
看来我确实有权执行 kubectl get cm
直到 我尝试添加创建 pods/portforward 的权限。
有人能给我解释一下吗?
集群也是运行ning k8s版本
Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.7+1.2.3.el7", GitCommit:"cfc2012a27408ac61c8883084204d10b31fe020c", GitTreeState:"archive", BuildDate:"2019-05-23T20:00:05Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}
和头盔版本
Server: &version.Version{SemVer:"v2.12.1", GitCommit:"02a47c7249b1fc6d8fd3b94e6b4babf9d818144e", GitTreeState:"clean"}
我的问题是我正在部署具有这些角色的清单作为 helm chart 的一部分(使用 helm 2)。但是部署的tiller的服务账号没有create
pods/portforward
权限。因此它无法授予该权限,因此在尝试使用角色部署清单时出错。这意味着未创建 configmap 获取权限角色,因此出现了奇怪的错误。