【云原生】cka 第⼀题:权限控制rbac-爱代码爱编程
考题概述:
创建名称 deployment-clusterrole 的 ClusterRole,该⻆⾊具备创建 Deployment、Statefulset、
Daemonset 的权限,在命名空间 app-team1 中创建名称为 cicd-token 的 ServiceAccount,绑定
ClusterRole 到 ServiceAccount,且限定命名空间为 app-team1。
考题解析:
需要熟悉创建 serviceaccount、clusterrole 和 rolebinding 的⽅法,需要限定在 ns 级别,因此最好使
⽤ rolebinding
参考⽅法
# 考试时执行,切换集群。模拟环境中练习不需要执行。真实考试环境会提示你切换
root@cka-master1:~# kubectl config use-context k8s
# 题目中说明已存在名称空间 “在现有的 namespace app-team1 ” 则不需要创建该名称空间。因为我们在自己的模拟环境中,则手动创建该名称空间
root@cka-master1:~# kubectl create ns app-team1
# 接下来正式做题
root@cka-master1:~# kubectl create clusterrole deployment-clusterrole --verb=create --resource=Deployment,StatefulSet,DaemonSet
root@cka-master1:~# kubectl create serviceaccount cicd-token -n app-team1
# 题目中写了 “限于 namespace app team1 中”,则创建 rolebinding,没有写的话,则创建clusterrolebinding;rolebinding 后面的名字 rb-cicd-token 随便起的,因为题目中没有要求,如果题目中有要求,就不能随便起了。
root@cka-master1:~# kubectl create rolebinding rb-cicd-token --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token --namespace=app-team1
# 检查验证
root@cka-master1:~# kubectl describe rolebindings rb-cicd-token -n app-team1
Name: rb-cicd-token
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: deployment-clusterrole
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount cicd-token app-team1
什么是RoleBinding
RoleBinding通过已经定义的Role权限授予到用户、用户组,从而让用户获得在NameSpace对应的操作资源权限。
RoleBinding基本操作
通过YAML资源定义清单创建RoleBinding
kubectl apply -f pod-rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1 kind: RoleBinding metadata: name: pod-rolebinding namespace: default subjects: - kind: User name: carry apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: pod-role apiGroup: rbac.authorization.k8s.io
什么是ClusterRoleBinding
ClusterRoleBinding通过已经定义的ClusterRole权限授予到用户或用户组,从而让用户获得集群内对应的操作资源权限。
ClusterRoleBinding基本操作
通过YAML资源定义清单创建ClusterRoleBinding
kubectl apply -f pod-clusterrolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: pod-clusterrolebinding subjects: - kind: Group name: super-admin apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pod-clusterrole apiGroup: rbac.authorization.k8s.io
相关参数
RoleBinding、ClusterRoleBinding绑定的Subject对象可以是User、Group、Service Account