1.题目

Create a service account name dev-sa in default namespace, dev-sa can create below components in dev namespace:

  • Deployment
  • StatefulSet
  • DaemonSet

    2.解析

    本题目考测RBAC,题意是创建一个service account,该service account具有在命名空间dev下创建Deployment, StatefulSet, DaemonSet的权限。我们首先应创建符合题目要求的service account以及role,然后再通过role binding进行授予权限,注意题目提及到两个命名空间。

    3.答案

  1. 首先创建一个service account

    1. # 创建名为dev-sa的service account
    2. kubectl create sa dev-sa -n default
  2. 接下来赋给该SA指定权限

    1. # 创建在dev的namespace下能create以上三个组件的role
    2. kubectl create role sa-role -n dev \
    3. --resource=deployment,statefulset,daemonset --verb=create
    4. # 创建role binding,授予service account权限
    5. kubectl create rolebinding sa-rolebinding -n dev \
    6. --role=sa-role --serviceaccount=default:dev-sa
  3. 最后,通过以下命令验证是否成功,如返回yes,表示成功,反之不成功

    1. kubectl auth can-i create deployment -n dev \
    2. --as=system:serviceaccount:default:dev-sa