GCP 本身有自己的 IAM roles,可以讓所有 GCP 使用者有特定的權限去存取 GKE 叢集,譬如
- Kubernetes Engine Cluster Admin
- Kubernetes Engine Cluster Viewer
- Kubernetes Engine Developer
然而這類型的設定卻有一些限制
- 沒有辦法針對 namespace 內去詳細設定
- 不方便針對 cluster 層級設定,譬如一個專案內若是有多個 GKE cluster,則權限會全部套用
但是這類型的操作與 gcloud 的整合非常順,可以很輕鬆的就讓所有團得人員獲得 GKE 的存取權限,進而使用 kubectl 等指令
若今天想要修改權限改使用 Kubernetes RBAC 的方式,達到稍微細緻以 namespace 為基底的權限, 並且以群組信箱來當作 subjet 的話則需要一些額外步驟
- 將 Google Group 與 GKE 連動,可參考 GKE RBAC
- 於 Google Group 將使用者都加入到該群組中
- 於 GCP 給予該 Google Group (
[email protected]
) 一個Kubernetes Engine Cluster Viewer
的權限,因為所有人都至少要能夠透過 gcloud 去認證獲得 KUBECONFIG 來存取,因此至少要可讀
另外群組的部分,可以採用 nested group,就是所有真正的 group 都加入到上述的 gke-security-groups
內,因此 RBAC 設定的部分就可以採用 [email protected], [email protected] 等方式來設定。
一切完畢後就依照 Kubernetes RBAC 的設定,準備 Role/RoleBinding,其中 RoleBinding 的 Subjects 改成
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: xxxxxxxxxx
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: xxxxxxxxxxxx
roleRef:
kind: Role
name: xxxxxxxxxx
apiGroup: rbac.authorization.k8s.io