我想拥有一个可以创建部署的服务帐户。所以我要创建一个服务帐户,然后创建一个角色,然后进行角色绑定。 yaml文件如下:
ServiceAccount:
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
答案 0 :(得分:2)
由于使用的是1.12群集,因此应在extensions
资源的Role
中包括deployments
API组。
在Kubernetes 1.16中不推荐使用此方法,而推荐使用apps
组:https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/