溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Kubernetes集群如何添加用戶

發布時間:2021-12-16 10:22:26 來源:億速云 閱讀:157 作者:iii 欄目:云計算

本篇內容主要講解“Kubernetes集群如何添加用戶”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Kubernetes集群如何添加用戶”吧!

Kubernetes中的用戶

K8S中有兩種用戶(User)——服務賬號(ServiceAccount)和普通意義上的用戶(User) ServiceAccount是由K8S管理的,而User通常是在外部管理,K8S不存儲用戶列表——也就是說,添加/編輯/刪除用戶都是在外部進行,無需與K8S API交互,雖然K8S并不管理用戶,但是在K8S接收API請求時,是可以認知到發出請求的用戶的,實際上,所有對K8S的API請求都需要綁定身份信息(User或者ServiceAccount),這意味著,可以為User配置K8S集群中的請求權限。

ServiceAccount是K8S內部資源,而User是獨立于K8S之外的。從它們的本質可以看出:

  • User通常是人來使用,而ServiceAccount是某個服務/資源/程序使用的。

  • User獨立在K8S之外,也就是說User是可以作用于全局的,在任何命名空間都可被認知,并且需要在全局唯一。

  • ServiceAccount作為K8S內部的某種資源,是存在于某個命名空間之中的,在不同命名空間中的同名ServiceAccount被認為是不同的資源。

  • K8S不會管理User,所以User的創建/編輯/注銷等,需要依賴外部的管理機制。

  • 這里說的添加用戶指的是普通意義上的用戶,即存在于集群外的用戶,為k8s的使用者。

  • 實際上叫做添加用戶也不準確,用戶早已存在,這里所做的只是使K8S能夠認知此用戶,并且控制此用戶在集群內的權限。

用戶驗證

盡管K8S認知用戶靠的只是用戶的名字,但是只需要一個名字就能請求K8S的API顯然是不合理的,所以依然需要驗證此用戶的身份,在K8S中,有以下幾種驗證方式:

  • X509客戶端證書 客戶端證書驗證通過為API Server指定--client-ca-file=xxx選項啟用,API Server通過此ca文件來驗證API請求攜帶的客戶端證書的有效性,一旦驗證成功,API Server就會將客戶端證書Subject里的CN屬性作為此次請求的用戶名。

  • 靜態token文件 通過指定--token-auth-file=SOMEFILE選項來啟用bearer token驗證方式,引用的文件是一個包含了token,用戶名,用戶ID 的csv文件 請求時,帶上Authorization: Bearer 31ada4fd-adec-460c-809a-9e56ceb75269頭信息即可通過bearer token驗證

  • 靜態密碼文件 通過指定--basic-auth-file=SOMEFILE選項啟用密碼驗證,類似的,引用的文件時一個包含 密碼,用戶名,用戶ID 的csv文件 請求時需要將Authorization頭設置為Basic BASE64ENCODED(USER:PASSWORD)。

這里只介紹客戶端驗證。

為用戶生成證書

首先需要為此用戶創建一個私鑰:

openssl genrsa -out tom.key 2048

接著用此私鑰創建一個csr(證書簽名請求)文件,其中我們需要在subject里帶上用戶信息(CN為用戶名,O為用戶組),其中/O參數可以出現多次,即可以有多個用戶組:

openssl req -new -key tom.key -out tom.csr -subj "/CN=tom/O=MGM"

找到K8S集群(API Server)的CA證書文件,其位置取決于安裝集群的方式,通常會在/etc/kubernetes/pki/路徑下,會有兩個文件,一個是CA證書(ca.crt),一個是CA私鑰(ca.key)。 通過集群的CA證書和之前創建的csr文件,來為用戶頒發證書:

openssl x509 -req -in tom.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out tom.crt -days 365

-CA和-CAkey參數需要指定集群CA證書所在位置,-days參數指定此證書的過期時間,這里為365天。

最后將證書(tom.crt)和私鑰(tom.key)保存起來,這兩個文件將被用來驗證API請求。

為用戶添加基于角色的訪問控制(RBAC)

首先創造一個角色,該角色在acp命名空間下擁有所有權限:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: acp
  name: acp-admin
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]

將角色和用戶tom綁定:

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: acp-admin-binding
  namespace: acp
subjects:
- kind: User
  name: tom
  apiGroup: ""
roleRef:
  kind: Role
  name: acp-admin
  apiGroup: ""

如yaml中所示,RoleBinding資源創建了一個 Role-User 之間的關系,roleRef節點指定此RoleBinding所引用的角色,subjects節點指定了此RoleBinding的受體,可以是User,也可以是前面說過的ServiceAccount,在這里只包含了名為 tom 的用戶。 參考:https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/#rolebinding-and-clusterrolebinding

為kubectl配置用戶

現在我們想要通過kubectl以tom的身份來操作集群,需要將tom的認證信息添加進kubectl的配置,即~/.kube/config中,通過以下命令將用戶tom的驗證信息添加進kubectl的配置:

kubectl config set-credentials tom --client-certificate=tom.crt --client-key=tom.key

添加完成后在~/.kube/config可以看到新增了:

users:
- name: tom
  user:
    client-certificate: /root/k8s/tom.crt
    client-key: /root/k8s/tom.key

用下面命令添加一個context配置:

  kubectl config set-context tom --cluster=kubernetes --namespace=acp --user=tom

添加完成后在~/.kube/config可以看到新增了:

contexts:
- context:
    cluster: kubernetes
    namespace: acp
    user: tom
  name: tom

通過kubectl config get-contexts命令也可以查到當前kubectl所配置的context信息:

[root@master1 k8s]# kubectl config get-contexts 
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   
          tom                           kubernetes   tom                acp

使用剛剛新創建的context:

#方式一:切換context
kubectl config use-context tom
#方式二:使用該context
kubectl --context=tom <命令>

在集群外部使用

將tom.crt/tom.key的內容用BASE64編碼:

cat tom.crt | base64 --wrap=0
cat tom.key | base64 --wrap=0

將獲取的編碼后的文本復制進~/.kube/config文件中:

contexts:
- context:
    cluster: kubernetes
    namespace: acp
    user: tom
  name: tom
  
users:
- name: tom
  user:
    client-certificate-data: ...
    client-key-data: ...

到此,相信大家對“Kubernetes集群如何添加用戶”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女