1、权限控制 RBAC
题目:
设置配置环境:
[candidate@node-1] $ kubectl config use-context k8s
Context
为部署流水线创建一个新的 ClusterRole 并将其绑定到范围为特定的 namespace 的特定 ServiceAccount。
Task
创建一个名为 deployment-clusterrole 且仅允许创建以下资源类型的新 ClusterRole:
Deployment
StatefulSet
DaemonSet
在现有的 namespace app-team1 中创建一个名为 cicd-token 的新 ServiceAccount。
限于 namespace app-team1 中,将新的 ClusterRole deployment-clusterrole 绑定到新的 ServiceAccount cicd-token。
考点:
RBAC 授权模型的理解。
参考链接:
没必要参考网址,使用-h 帮助更方便。
kubectl create clusterrole -h
kubectl create rolebinding -h
https://kubernetes.io/docs/reference/access-authn-authz/rbac/#command-line-utilities
解答:
更换 context
$ kubectl config use-context k8s
创建 ClusterRole
$ kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,daemonset,statefulset
创建 ServiceAccount
$ kubectl create sa cicd-token -n app-team1
创建 rolebinding
rolebinding 后面的名字 cicd-token-rolebinding 随便起的,因为题目中没有要求,如果题目中有要求,就不能随便起了。
kubectl -n app-team1 create rolebinding cicd-token-rolebinding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token
检查
$ kubectl -n app-team1 describe rolebinding cicd-token-rolebinding
$ kubectl auth can-i create deployment --as system:serviceaccount:app-team1:cicd-token
no
$ kubectl auth can-i create deployment -n app-team1 --as system:serviceaccount:app-team1:cicd-token
yes