如何建立一個使用者、授權操作k8s叢集的過程?
導讀 | 本篇帶給大家如何建立一個使用者、授權操作k8s叢集的過程。希望對你有所幫助! |
背景
172.16.99.128是的我k8s叢集的master節點,此處是從這裡獲取叢集的證照。
建立訪問architechure名稱空間的使用者
1.給使用者devops 建立一個私鑰
openssl genrsa -out devops.key 2048
2.使用我們剛剛建立的私鑰建立一個證照籤名請求檔案:devops.csr,要注意需要確保在-subj引數中指定使用者名稱和組(CN表示使用者名稱,O表示組)
openssl req -new -key devops.key -out devops.csr -subj "/CN=devops/O=architechure"
3.然後找到我們的Kubernetes叢集的CA
我們使用的是kubeadm安裝的叢集,CA相關證照位於/etc/kubernetes/pki/目錄下面,如果你是二進位制方式搭建的,你應該在最開始搭建叢集的時候就已經指定好了CA的目錄,我們會利用該目錄下面的ca.crt和ca.key兩個檔案來批准上面的證照請求,生成最終的證照檔案,我們這裡設定證照的有效期為500天
scp root@172.16.99.128:/etc/kubernetes/pki/ca.crt . scp root@172.16.99.128:/etc/kubernetes/pki/ca.key . openssl x509 -req -in devops.csr -CA ./ca.crt -CAkey ./ca.key -CAcreateserial -out devops.crt -days 500 ➜ ls -al total 72 drwxr-xr-x 11 marion staff 352 Dec 25 11:32 . drwxr-xr-x 13 marion staff 416 Dec 25 11:26 .. -rw-r--r-- 1 marion staff 17 Dec 25 11:32 .srl -rw-r--r-- 1 marion staff 1156 Dec 25 11:32 README.md -rw-r--r-- 1 marion staff 1025 Dec 25 11:30 ca.crt -rw------- 1 marion staff 1675 Dec 25 11:30 ca.key -rw-r--r-- 1 marion staff 1009 Dec 25 11:32 devops.crt -rw-r--r-- 1 marion staff 924 Dec 25 11:30 devops.csr -rw-r--r-- 1 marion staff 1679 Dec 25 11:27 devops.key
4.現在我們可以使用剛剛建立的證照檔案和私鑰檔案在叢集中建立新的憑證:
kubectl config set-credentials devops --client-certificate=devops.crt --client-key=devops.key
5.透過剛才建立的使用者憑證建立新的上下文(Context)
kubectl config set-context devops-context --cluster=cluster-tf26gt9mmk --namespace=architechure --user=devops
6.嘗試透過該使用者操作命令
➜ kubectl get pods --context=devops-context Error from server (Forbidden): pods is forbidden: User "devops" cannot list resource "pods" in API group "" in the namespace "architechure" # 因為該devops-context還沒有操作API的許可權
7.給使用者建立一個role的角色devops.role.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: devops-role namespace: architechure rules: - apiGroups: ["", "extensions", "apps"] resources: ["deployments", "replicasets", "pods"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # 也可以使用['*']
然後在叢集中建立該角色
kubectl apply -f ./devops.role.yaml
8.建立許可權與角色 之間的繫結關係devops-rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: devops-rolebinding namespace: architechure subjects: - kind: User name: devops apiGroup: "" roleRef: kind: Role name: devops-role # 上一步建立的devops-role實體 apiGroup: ""
在叢集中建立角色與使用者之間的繫結關係
k apply -f ./devops-rolebinding.yaml
9.此時我們可以透過kubecm切換到該角色上
此時,從下圖就可以檢視到當前叢集的有一個新的使用者角色devops,上面用到的Kubecm我們之前也分享過,如果需要可以點此跳轉
10.許可權驗證
> kubectl get pods No resources found in architechure namespace. > kubectl get replicasets No resources found in architechure namespace. > kubectl get deploy No resources found in architechure namespace. > kubectl get svc Error from server (Forbidden): services is forbidden: User "devops" cannot list resource "services" in API group "" in the namespace "architechure"
總結一下就是:
- 根據叢集的CA證照建立出來使用者證照
- 根據使用者證照建立該使用者在叢集內的憑證和上下文內容
- 要想使用者能進行基本的操作,需要對使用者針對apiGroup授權
為devops使用者增加指定名稱空間的許可權
1.我們先把當前上下文切換到之前有許可權操作的user-tf26gt9mmk使用者上
kubecm switch # select dev
否則以下步驟會出錯:
2.首先需要建立針對指定名稱空間的上下文
kubectl config set-context devops-context --cluster=cluster-tf26gt9mmk --namespace=default --user=devops
此時查詢列舉default空間下的pods是不行的,因為還沒允許操作
kubectl get pods --context=devops-context Error from server (Forbidden): pods is forbidden: User "devops" cannot list resource "pods" in API group "" in the namespace "default"
3.建立default空間下的role與rolebinding
devops-role-default.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: devops-role namespace: default rules: - apiGroups: ["", "extensions", "apps"] resources: ["deployments", "replicasets", "pods"] verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] # 也可以使用['*']
devops-rolebinding-default.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: devops-rolebinding namespace: default subjects: - kind: User name: devops apiGroup: "" roleRef: kind: Role name: devops-role apiGroup: ""
然後我們在叢集中建立這兩個物件
kubectl apply -f devops-role-default.yaml kubectl apply -f devops-rolebinding-default.yaml
4.檢視role資源物件是否建立
kubectl get role -A |grep devops-role # 分別在architechure和default名稱空間下 architechure devops-role 2021-05-17T07:57:27Z default devops-role 2021-05-28T03:19:24Z
5.切換當前上下文環境,驗證是否可以操作資源
kubecm switch # select devops-context kubectl get pods -n default kubectl get pods -n architechure
到這裡就基本上說清楚如何建立一個使用者、授權操作k8s叢集的過程了。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2778141/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何使用 Kind 快速建立 K8s 叢集?K8S
- mysql使用者建立、修改、刪除及授權操作的總結MySql
- Oracle建立使用者和授權Oracle
- MySQL建立使用者和授權MySql
- mysql使用者建立與授權MySql
- 低權使用者呼叫高權使用者建立的儲存過程出錯儲存過程
- vertica建立新使用者並授權
- 使用者建立授權及刪除
- 在K8S中,Worker節點加入叢集的全過程?K8S
- 認證授權:一鍵登入的背後過程
- 微信小程式授權過程微信小程式
- Android網路請求知識(三)授權,TCP/IP,HTTPS建立過程AndroidTCPHTTP
- k8s叢集建立阿里雲版本K8S阿里
- Oracle建立使用者、角色、授權、建表Oracle
- Spring Security系列之授權過程(七)Spring
- 使用java操作ranger,hdfs ranger授權操作,hive ranger授權操作JavaRangerHive
- laravel建立一個儲存過程Laravel儲存過程
- Mysql 建立資料庫\新增使用者\使用者授權MySql資料庫
- 如何實現跨數百個K8s叢集的管理?K8S
- 管理 ES 叢集:管叢集身份認證與使用者鑑權
- 教你如何搭建K8S叢集。K8S
- Jedis操作單節點redis,叢集及redisTemplate操作redis叢集(一)Redis
- 通過kubeadm工具部署k8s叢集K8S
- MongoDB建立只讀使用者並授權指定集合的查詢許可權MongoDB
- websocket 建立連線時如何進行授權?Web
- 搭建kubernetes 叢集的安裝過程和方法
- 資源授權?對OAuth2.0的一次重新認識的過程OAuth
- 如何在CentOS上建立Kubernetes叢集CentOS
- Linux系統下建立新使用者並且授權Linux
- mysql建立使用者並且對資料庫授權MySql資料庫
- 如何配置K8S儲存叢集?K8S
- Spring security(五)-完美許可權管理系統(授權過程分析)Spring
- 使用者授權,策略的使用
- 微服務中如何設計一個許可權授權服務微服務
- 用 edgeadm 一鍵安裝邊緣 K8s 叢集和原生 K8s 叢集K8S
- 授權|取消授權MYSQL資料庫使用者許可權MySql資料庫
- 使用Kubeadm建立k8s叢集之部署規劃(三十)K8S
- 095、如何建立Swarm叢集?(Swarm02)Swarm