自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

實(shí)踐中理解Kubernetes RBAC之Role

運(yùn)維 系統(tǒng)運(yùn)維
本篇帶給大家如何創(chuàng)建一個(gè)用戶、授權(quán)操作k8s集群的過程。希望對(duì)你有所幫助!

[[403408]]

背景

172.16.99.128是的我k8s集群的master節(jié)點(diǎn),此處是從這里獲取集群的證書。

創(chuàng)建訪問architechure命名空間的用戶

1.給用戶devops 創(chuàng)建一個(gè)私鑰

  1. openssl genrsa -out devops.key 2048 

2.使用我們剛剛創(chuàng)建的私鑰創(chuàng)建一個(gè)證書簽名請(qǐng)求文件:devops.csr,要注意需要確保在-subj參數(shù)中指定用戶名和組(CN表示用戶名,O表示組)

  1. openssl req -new -key devops.key -out devops.csr -subj "/CN=devops/O=architechure" 

3.然后找到我們的Kubernetes集群的CA,我們使用的是kubeadm安裝的集群,CA相關(guān)證書位于/etc/kubernetes/pki/目錄下面,如果你是二進(jìn)制方式搭建的,你應(yīng)該在最開始搭建集群的時(shí)候就已經(jīng)指定好了CA的目錄,我們會(huì)利用該目錄下面的ca.crt和ca.key兩個(gè)文件來批準(zhǔn)上面的證書請(qǐng)求,生成最終的證書文件,我們這里設(shè)置證書的有效期為500天

  1. scp root@172.16.99.128:/etc/kubernetes/pki/ca.crt . 
  2. scp root@172.16.99.128:/etc/kubernetes/pki/ca.key . 
  3. openssl x509 -req -in devops.csr -CA ./ca.crt -CAkey ./ca.key -CAcreateserial -out devops.crt -days 500 
  4. ➜  ls -al 
  5. total 72 
  6. drwxr-xr-x  11 marion  staff   352 Dec 25 11:32 . 
  7. drwxr-xr-x  13 marion  staff   416 Dec 25 11:26 .. 
  8. -rw-r--r--   1 marion  staff    17 Dec 25 11:32 .srl 
  9. -rw-r--r--   1 marion  staff  1156 Dec 25 11:32 README.md 
  10. -rw-r--r--   1 marion  staff  1025 Dec 25 11:30 ca.crt 
  11. -rw-------   1 marion  staff  1675 Dec 25 11:30 ca.key 
  12. -rw-r--r--   1 marion  staff  1009 Dec 25 11:32 devops.crt 
  13. -rw-r--r--   1 marion  staff   924 Dec 25 11:30 devops.csr 
  14. -rw-r--r--   1 marion  staff  1679 Dec 25 11:27 devops.key 

4.現(xiàn)在我們可以使用剛剛創(chuàng)建的證書文件和私鑰文件在集群中創(chuàng)建新的憑證:

  1. kubectl config set-credentials devops --client-certificate=devops.crt  --client-key=devops.key 

5.通過剛才創(chuàng)建的用戶憑證創(chuàng)建新的上下文(Context)

  1. #如果你的電腦上正在管理多個(gè)集群的,可能你的集群名字會(huì)被改變,因此在下面的--cluster參數(shù)處指明實(shí)際的集群名稱,如下圖 
  2. kubectl config set-context devops-context --cluster=cluster-tf26gt9mmk --namespace=architechure --user=devops 

6.嘗試通過該用戶操作命令

  1. ➜  kubectl get pods --context=devops-context 
  2. Error from server (Forbidden): pods is forbidden: User "devops" cannot list resource "pods" in API group "" in the namespace "architechure" # 因?yàn)樵揹evops-context還沒有操作API的權(quán)限 

7.給用戶創(chuàng)建一個(gè)role的角色devops.role.yaml

  1. apiVersion: rbac.authorization.k8s.io/v1 
  2. kind: Role 
  3. metadata: 
  4.   name: devops-role 
  5.   namespace: architechure 
  6. rules: 
  7. - apiGroups: ["""extensions""apps"
  8.   resources: ["deployments""replicasets""pods"
  9.   verbs: ["get""list""watch""create""update""patch""delete"] # 也可以使用['*'

然后在集群中創(chuàng)建該角色

  1. kubectl apply -f ./devops.role.yaml 

8.創(chuàng)建權(quán)限與角色之間的綁定關(guān)系devops-rolebinding.yaml

  1. apiVersion: rbac.authorization.k8s.io/v1 
  2. kind: RoleBinding 
  3. metadata: 
  4.   name: devops-rolebinding 
  5.   namespace: architechure 
  6. subjects: 
  7. - kind: User 
  8.   name: devops 
  9.   apiGroup: "" 
  10. roleRef: 
  11.   kind: Role 
  12.   name: devops-role # 上一步創(chuàng)建的devops-role實(shí)體 
  13.   apiGroup: "" 

在集群中創(chuàng)建角色與用戶之間的綁定關(guān)系

  1. k apply -f ./devops-rolebinding.yaml 

9.此時(shí)我們可以通過kubecm切換到該角色上

此時(shí),從下圖就可以查看到當(dāng)前集群的有一個(gè)新的用戶角色devops,上面用到的Kubecm我們之前也分享過,如果需要可以點(diǎn)此跳轉(zhuǎn)

10.權(quán)限驗(yàn)證

  1. > kubectl get pods 
  2. No resources found in architechure namespace. 
  3. > kubectl get replicasets 
  4. No resources found in architechure namespace. 
  5. > kubectl get deploy 
  6. No resources found in architechure namespace. 
  7. > kubectl get svc 
  8. Error from server (Forbidden): services is forbidden: User "devops" cannot list resource "services" in API group "" in the namespace "architechure" 

總結(jié)一下就是:

  • 根據(jù)集群的CA證書創(chuàng)建出來用戶證書
  • 根據(jù)用戶證書創(chuàng)建該用戶在集群內(nèi)的憑證和上下文內(nèi)容
  • 要想用戶能進(jìn)行基本的操作,需要對(duì)用戶針對(duì)apiGroup授權(quán)

為devops用戶增加指定命名空間的權(quán)限

1.我們先把當(dāng)前上下文切換到之前有權(quán)限操作的user-tf26gt9mmk用戶上

  1. kubecm switch 
  2. select dev 

否則以下步驟會(huì)出錯(cuò):

2.首先需要?jiǎng)?chuàng)建針對(duì)指定命名空間的上下文

  1. kubectl config set-context devops-context --cluster=cluster-tf26gt9mmk --namespace=default --user=devops 

此時(shí)查詢列舉default空間下的pods是不行的,因?yàn)檫€沒允許操作

  1. kubectl get pods --context=devops-context 
  2. Error from server (Forbidden): pods is forbidden: User "devops" cannot list resource "pods" in API group "" in the namespace "default" 

3.創(chuàng)建default空間下的role與rolebinding

devops-role-default.yaml

  1. apiVersion: rbac.authorization.k8s.io/v1 
  2. kind: Role 
  3. metadata: 
  4.   name: devops-role 
  5.   namespace: default 
  6. rules: 
  7. - apiGroups: ["""extensions""apps"
  8.   resources: ["deployments""replicasets""pods"
  9.   verbs: ["get""list""watch""create""update""patch""delete"] # 也可以使用['*'

devops-rolebinding-default.yaml

  1. apiVersion: rbac.authorization.k8s.io/v1 
  2. kind: RoleBinding 
  3. metadata: 
  4.   name: devops-rolebinding 
  5.   namespace: default 
  6. subjects: 
  7. - kind: User 
  8.   name: devops 
  9.   apiGroup: "" 
  10. roleRef: 
  11.   kind: Role 
  12.   name: devops-role 
  13.   apiGroup: "" 

然后我們?cè)诩褐袆?chuàng)建這兩個(gè)對(duì)象

  1. kubectl apply -f devops-role-default.yaml 
  2. kubectl apply -f devops-rolebinding-default.yaml 

4.查看role資源對(duì)象是否創(chuàng)建

  1. kubectl get role -A |grep devops-role # 分別在architechure和default命名空間下 
  2. architechure                   devops-role                                      2021-05-17T07:57:27Z 
  3. default                        devops-role                                      2021-05-28T03:19:24Z 

5.切換當(dāng)前上下文環(huán)境,驗(yàn)證是否可以操作資源

  1. kubecm switch 
  2. select devops-context 
  3. kubectl get pods -n default 
  4. kubectl get pods -n architechure 

到這里就基本上說清楚如何創(chuàng)建一個(gè)用戶、授權(quán)操作k8s集群的過程了。

 

責(zé)任編輯:姜華 來源: 云原生生態(tài)圈
相關(guān)推薦

2024-09-03 16:28:20

2013-04-19 10:40:03

2010-03-09 17:32:45

Python數(shù)組

2021-03-11 14:33:28

Kubernetes開源容器

2021-06-04 10:52:51

kubernetes場(chǎng)景容器

2012-08-30 16:24:04

HTML5歐朋W3C

2023-01-14 22:59:34

2025-03-07 10:23:46

2021-07-19 19:44:57

技術(shù)模型實(shí)踐

2010-03-17 16:06:08

Java線程同步

2023-12-06 15:21:16

Java云原生

2010-11-11 14:28:01

SQL Server排

2022-03-15 08:36:34

NginxKubernetesIngress

2011-06-16 16:39:14

CSS

2022-09-19 08:35:28

Kafka節(jié)點(diǎn)故障

2023-08-24 09:44:16

數(shù)據(jù)庫性能

2023-11-07 08:00:00

Kubernetes

2022-06-21 08:03:49

RBAC 限制容器

2022-11-26 00:02:00

優(yōu)化器SQL語句

2020-08-20 10:10:43

Prometheus架構(gòu)監(jiān)控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)