如何建立一個使用者、授權操作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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle一個建立使用者、建立表空間、授權、建表的完整過程Oracle
- 匯出db裡user的建立和授權的過程
- 如何使用 Kind 快速建立 K8s 叢集?K8S
- mysql使用者建立、修改、刪除及授權操作的總結MySql
- mysql使用者建立與授權MySql
- MySQL建立使用者和授權MySql
- MySQL建立使用者與授權MySql
- oracle建立使用者並授權Oracle
- MySql建立使用者及授權MySql
- Oracle建立使用者和授權Oracle
- 微信小程式授權過程微信小程式
- 5. 建立使用者、授權以及修改密碼等許可權操作密碼
- 在K8S中,Worker節點加入叢集的全過程?K8S
- vertica建立新使用者並授權
- 使用者建立授權及刪除
- MySQL建立使用者授權訪問MySql
- MySQL 5.7 建立使用者並授權MySql
- 認證授權:一鍵登入的背後過程
- 低權使用者呼叫高權使用者建立的儲存過程出錯儲存過程
- Oracle建立表空間、建立使用者、授權、授權物件的訪問以及檢視許可權集合Oracle物件
- Oracle在儲存過程中呼叫其他使用者的表授權Oracle儲存過程
- 原創:oracle 授權的詳細過程Oracle
- Oracle建立表空間、建立使用者以及授權Oracle
- Jstorm叢集搭建過程/Jstorm叢集一鍵安裝部署JSORM
- Oracle建立使用者、角色、授權、建表Oracle
- k8s叢集建立阿里雲版本K8S阿里
- 建立一個standby database的全過程Database
- 如何實現跨數百個K8s叢集的管理?K8S
- 詳解Oracle建立使用者許可權全過程Oracle
- 使用java操作ranger,hdfs ranger授權操作,hive ranger授權操作JavaRangerHive
- 教你如何搭建K8S叢集。K8S
- Oracle中將一個使用者的所有物件授權給另一個使用者Oracle物件
- 請bang大哥指點一下JBoss的jaas授權過程!
- Oracle 建立表空間、建立使用者以及授權、檢視許可權Oracle
- Spring Security系列之授權過程(七)Spring
- laravel建立一個儲存過程Laravel儲存過程
- Android網路請求知識(三)授權,TCP/IP,HTTPS建立過程AndroidTCPHTTP
- java儲存過程呼叫servlet的授權問題Java儲存過程Servlet