为pods / portforward添加创建权限似乎会删除configmap的获取权限

问题描述 投票:0回答:1

我正在尝试从该名称空间中的容器运行helm status --tiller-namespace=$NAMESPACE $RELEASE_NAME

我有规则的作用

  - apiGroups:
      - ""
    resources:
      - pods
      - configmaps
    verbs:
      - get
      - watch

绑定到默认服务帐户。但是我得到了错误

错误:禁止使用pods:用户“ system:serviceaccount:mynamespace:default”无法在名称空间“ mynamespace”中的API组“”中列出资源“ pods”]

所以我像这样添加了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 ""。注意我正在运行kubectl get cm $CMNAME 之前我正在运行helm status命令。

所以似乎我确实有权执行kubectl get cm 直到我试图添加许可以创建pod / portforward。

任何人都可以向我解释一下吗?

集群也正在运行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"}
kubernetes kubernetes-helm rbac
1个回答
2
投票

我的问题是我正在部署清单,将这些角色作为头盔图表的一部分。但是,用于分till的部署服务帐户没有create pods/portforward权限。因此,它无法授予该权限,因此在尝试使用角色部署清单时出错。这意味着未创建configmap获取权限角色,因此出现了奇怪的错误。

© www.soinside.com 2019 - 2024. All rights reserved.