Kubernetes CKA課程筆記 43
由前篇最後就如同在Cluster建立了User
並且K8s Cluster簽署了該User的憑證
並且建立了該User的kubectl指令可以帶入的
kubeconfig檔(內含憑證,K8s Cluster的ca資訊)
接著下面就要給hog執行指令的權限,使其可以做以下指令:
可以看、建立、移除、...etc Pod元件
所以接下來要做兩件事:
- 建立定義權限的K8s ClusterRole元件
- 建立綁定hog與上述ClusterRole元件連接的K8s ClusterRoleBinding元件
建立K8s ClusterRole元件:
首先從以下指令查找:
kubectl create --help
再來:
kubectl create clusterrole --help
最底下看到:
- 所以指令要帶入verb是list的,要帶入可執行的動作如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
答案就在這!:
仔細看到:
所以屬於core的API group : Pod & Service
所以屬於apps的API group : Deployment & StatefulSet
另外像是Ingress的API group就是:networking.k8s.io如下
回頭改寫dev-cr.yaml,並加入想加的verb,並且改寫更簡潔:
亦可以參考以下頁面:
該頁面往下拉會有許多範例:
最終先把dev-cr.yaml改寫成如下:
接著執行建立指令:
所以改以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可以查看:
其內容非常簡單易懂:
所以沒啥問題就直接建立(記得要用admin的kubeconfig):
依樣用describe指令查看會比較容易看:
kubectl describe {元件} {元件名稱} --kubeconfig config
確認hog權限:
建立完以上的clusterrole與clusterrolebinding的K8s元件後
接著就要來確認hog執行指令的權限了!!
在建立前hog光是執行kubectl get pod都會出權限不足的錯誤,現在:
還有另一個確認權限的指令(要以admin執行確認):
kubectl auth --kubeconfig config can-i create pod --as=hog
最後在強調要增加的K8s元件權限要知道其apiGroup,要到以下頁面查看
甚至有到nameSpace的apiGroup是core