设置配置环境

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

rbac-0