1.题目概述

  • 创建名称 deployment-clusterrole 的 ClusterRole
  • 该角色具备创建 Deployment、Statefulset、Daemonset 的权限
  • 在命名空间 app-team1 中创建名称为 cicd-token 的 ServiceAccount
  • 绑定 ClusterRole 到 ServiceAccount,且限定命名空间为 app-team1

    2.解析

  • 需要熟悉创建 serviceaccount、clusterrole 和 rolebinding 的方法

  • 需要限定在 ns 级别,因此最好使用 rolebinding

    3.参考答案

    1. # 创建命名空间
    2. kubectl create ns app-team1
    3. # 创建clusterrole
    4. kubectl create clusterrole deployment-clusterrole \
    5. --verb=create --resource=deployment,statefulset,daemonset
    6. # 创建serviceaccount
    7. kubectl create sa cicd-token -n app-team1
    8. # 创建rolebinding,绑定账号和角色
    9. kubectl create rolebinding test-rb -n app-team1 \
    10. --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token

    4.验证

    1. # 返回yes则成功,no反之
    2. kubectl -n app-team1 auth can-i create deployment \
    3. --as=system:serviceaccount:app-team1:cicd-token