Kubernetes CKA課程筆記 43

建立User憑證,使一般User得以請求API Server — 賦予Client執行指令權限

ZONGRU Li
Nov 8, 2021

由前篇最後就如同在Cluster建立了User

並且K8s Cluster簽署了該User的憑證

並且建立了該User的kubectl指令可以帶入的

kubeconfig檔(內含憑證,K8s Cluster的ca資訊)

接著下面就要給hog執行指令的權限,使其可以做以下指令:

可以看、建立、移除、...etc Pod元件

所以接下來要做兩件事:

  1. 建立定義權限的K8s ClusterRole元件
  2. 建立綁定hog與上述ClusterRole元件連接的K8s ClusterRoleBinding元件

建立K8s ClusterRole元件:

首先從以下指令查找:

kubectl create --help

再來:

kubectl create clusterrole --help

最底下看到:

  • 所以指令要帶入verblist的,要帶入可執行的動作如get,list,create,delete等等
  • resource則是指K8s 元件(pods,deployments.apps等(這邊的deployments屬於apps的API group,後面會提到))

所以執行:

kubectl create clusterrole dev-cr --verb=get,list,update,delete --resource=deployments.apps,pods --dry-run=client -o yaml > dev-cr.yaml

建出來後進去看看內容

細看的話如下圖可以分為兩組apiGroups:

在如上圖的yaml內,突發奇想想增加resource內容,也就是K8s元件:

除了Pods,Deployments外,再增加Services,StatefulSets

問題將出現在我怎麼知道Services,StatefulSets要放到哪一個apiGroups下?

— >問google

link

答案就在這!:

link

仔細看到:

所以屬於core的API group : Pod & Service

所以屬於apps的API group : Deployment & StatefulSet

另外像是IngressAPI group就是:networking.k8s.io如下

回頭改寫dev-cr.yaml,並加入想加的verb,並且改寫更簡潔:

亦可以參考以下頁面:

link

該頁面往下拉會有許多範例:

很多可以參考的寫法

最終先把dev-cr.yaml改寫成如下:

接著執行建立指令:

想當然爾hog沒有權限建立...

所以改以admin身分保證執行!並確認:

但是以describe指令會比較容易閱讀:

kubectl describe clusterrole dev-cr --kubeconfig config

至此ClusterRole元件就完成了!

建立K8s ClusterRoleBinding元件:

同理可以執行指令查找怎麼建:

kubectl create clusterrolebinding --help

如上圖最後:

clusterrole=就是填入剛剛dev-cr

後面還能帶user或group或serviceaccount的對應

所以指令就是:

kubectl create clusterrolebinding {元件名稱,這邊就叫dev-crb} --clusterrole=dev-cr --user=hog --dry-run=client -o yaml > dev-crb.yaml

至於上面的 --user=hog而不是dev-hog可以查看:

應該是早在41篇建立憑證的CN名稱
建立後vi進去看看

其內容非常簡單易懂:

所以沒啥問題就直接建立(記得要用admin的kubeconfig):

依樣用describe指令查看會比較容易看:

kubectl describe {元件} {元件名稱} --kubeconfig config

確認hog權限:

建立完以上的clusterroleclusterrolebindingK8s元件後

接著就要來確認hog執行指令的權限了!!

在建立前hog光是執行kubectl get pod都會出權限不足的錯誤,現在:

看看pod,service都沒問題,但是node還不行!

還有另一個確認權限的指令(要以admin執行確認):

kubectl auth --kubeconfig config can-i create pod --as=hog

直接得到yes or no回應

最後在強調要增加的K8s元件權限要知道其apiGroup,要到以下頁面查看

甚至有到nameSpaceapiGroupcore

link

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet