设置配置环境:

[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


参考:

kubectl create clusterrole -h kubectl create rolebinding -h https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/


解答:

考试的时候务必记住切换集群, 注意集群名称 kubectl config use-context k8s

kubectl config use-context k8s
# 创建clusterrole
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets

# 创建 sc cicd-token
kubectl -n app-team1 create serviceaccount cicd-token

# 创建 rolebinding
# 题目中写了“限于namespace app-team1中”,则创建rolebinding。没有写的话,则创建clusterrolebinding
kubectl -n app-team1 create rolebinding cicd-token-rolebinding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token
# rolebinding后面的名字cicd-token-rolebinding随便起的,因为题目中没有要求,如果题目中有要求,就不能随便起了

检查(考试时,可以不检查的):
kubectl -n app-team1 describe rolebinding cicd-token-rolebinding
kubectl auth can-i create deployment --as system:serviceaccount:app-team1:cicd-token
kubectl auth can-i create deployment -n app-team1 --as system:serviceaccount:app-team1:cicd-token

file