无法将部署创建角色分配给 Kubernetes 中的 serviceAccount
Can't assign a deployment creation role to serviceAccount in Kubernetes
我想要一个可以创建部署的服务帐户。所以我正在创建一个服务帐户,然后是一个角色,然后是一个角色绑定。 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
当我检查 Pods 时它工作正常。
我做错了什么?
我的kubernetes版本如下:
kubectl version --short
Client Version: v1.16.1
Server Version: v1.12.10-gke.17
由于您使用的是 1.12 集群,因此您应该在 deployments
资源的 Role
中包含 extensions
API 组。
这在 Kubernetes 1.16 中已弃用,取而代之的是 apps
组:https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/
我想要一个可以创建部署的服务帐户。所以我正在创建一个服务帐户,然后是一个角色,然后是一个角色绑定。 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
当我检查 Pods 时它工作正常。
我做错了什么?
我的kubernetes版本如下:
kubectl version --short
Client Version: v1.16.1
Server Version: v1.12.10-gke.17
由于您使用的是 1.12 集群,因此您应该在 deployments
资源的 Role
中包含 extensions
API 组。
这在 Kubernetes 1.16 中已弃用,取而代之的是 apps
组:https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/