侧边栏壁纸
博主头像
一揽芳华 博主等级

行动起来,活在当下

  • 累计撰写 265 篇文章
  • 累计创建 24 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录
CKA

CKA考试练习-权限控制 RBAC

芳华是个男孩!
2024-12-16 / 0 评论 / 1 点赞 / 11 阅读 / 0 字
广告 广告

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 快速查询命令手册。此类送分题能完全靠命令解决的,就不要上官网搜索了,以节约考试时间。

1
广告 广告

评论区