CKA考试练习-权限控制 RBAC
1、集群练习环境
candidate@node01:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready control-plane 70d v1.31.0
node01 Ready worker 70d v1.31.0
node02 NotReady worker 70d v1.31.0
2、安装自动补全
sudo apt install -y bash-completion
echo "source <(kubectl completion bash)" >> .bashrc
source ~/.bashrc
3、题目
4、结题过程
4.1.切换集群
candidate@node01:~$ kubectl config use-context ak8s
Switched to context "ak8s".
4.2.打开K8S官网,检索“role”或“角色” 参照内容作答
地址:https://kubernetes.io/zh-cn/docs/reference/access-authn-authz/rbac/ 该页面查找: 一些命令行工具
创建(create)一个clusterrole,名字为:deployment-clusterrole;动作(verb)是:创建,允许创建的资源类型(resource)是:deployment、statefulset、daemonset,注意命令中三种资源类型需要加S
candidate@node01:~$ kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets ##注意deployments,statefulsets,daemonsets 要加s
clusterrole.rbac.authorization.k8s.io/deployment-clusterrole created
在命名空间(namespace)的app-team1 下创建(create)一个服务账号(serviceaccount)名为:cicd-token
candidate@node01:~$ kubectl -n app-team1 create serviceaccount cicd-token
serviceaccount/cicd-token created
将创建的clusterrole与服务账号进行绑定
注意:在特定的名字空间中对 Role 或 ClusterRole 授权使用 rolebinding,根据题目是对命名空间,所以选择:rolebinding
在整个集群(所有名字空间)中用 ClusterRole 授权使用:clusterrolebinding
candidate@node01:~$ kubectl -n app-team1 create rolebinding cicd-token-rolebinding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token
rolebinding.rbac.authorization.k8s.io/cicd-token-rolebinding created
5、验证结果
## 查看绑定描述
candidate@node01:~$ kubectl -n app-team1 describe rolebindings cicd-token-rolebinding
Name: cicd-token-rolebinding
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: deployment-clusterrole
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount cicd-token app-team1
#验证服务账号在集群的权限
candidate@node01:~$ kubectl auth can-i create deployment --as system:serviceaccount:app-team1:cicd-token
no ##很明显在集群下没有权限
candidate@node01:~$
#验证服务账号在集群 app-team1 命名空间下的权限
candidate@node01:~$ kubectl auth can-i create deployment -n app-team1 --as system:serviceaccount:app-team1:cicd-token
yes ## 在 app-team1 命名空间中,以 cicd-token 服务账户的身份,是否有权限创建 deployment 资源。执行此命令后,Kubernetes 会返回“yes”或“no”,表明该服务账户是否具有创建部署的权限。
candidate@node01:~$
6、提示
平时练习可以参考左侧链接,深刻理解角色、服务账号、绑定之间的关系和区别。命令练熟背会,考试时,可以快速使用命令完成题目,实在记不住
就要在平时练习在终端使用-kubectl create --help 快速查询命令手册。此类送分题能完全靠命令解决的,就不要上官网搜索了,以节约考试时间。
评论区