【问题标题】:Can't assign a deployment creation role to serviceAccount in Kubernetes无法将部署创建角色分配给 Kubernetes 中的 serviceAccount
【发布时间】:2020-04-05 20:01:29
【问题描述】:

我想要一个可以创建部署的服务帐户。所以我正在创建一个服务帐户,然后是一个角色,然后是一个角色绑定。 yaml 文件如下:

服务帐户:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: testsa
  namespace: default

角色:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: testrole
  namespace: default
rules:
  - apiGroups:
      - ""
      - batch
      - apps
    resources:
      - jobs
      - pods
      - deployments
      - deployments/scale   
      - replicasets
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
      - scale 

角色绑定:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: testrolebinding
  namespace: default
subjects:
  - kind: ServiceAccount
    name: testsa
    namespace: default
roleRef:
  kind: Role
  name: testrole
  apiGroup: rbac.authorization.k8s.io

但是在应用这些文件之后,当我执行以下命令来检查服务帐户是否可以创建部署时,它会回答否。

kubectl auth can-i --as=system:serviceaccount:default:testsa create deployment

确切的答案是: no - no RBAC policy matched

当我检查 Pod 时它工作正常。

我做错了什么?

我的kubernetes版本如下:

kubectl version --short

Client Version: v1.16.1
Server Version: v1.12.10-gke.17

【问题讨论】:

    标签: kubernetes google-kubernetes-engine rbac kubernetes-deployment


    【解决方案1】:

    由于您使用的是 1.12 集群,因此您应该在 Role 中为 deployments 资源添加 extensions API 组。

    这在 Kubernetes 1.16 中已被弃用,取而代之的是 apps 组:https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/

    【讨论】:

      猜你喜欢
      • 2019-06-26
      • 1970-01-01
      • 2018-06-25
      • 2021-02-11
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多