基於角色的訪問控制
最佳實務指南的這一部分討論了圖表清單中 RBAC 資源的建立和格式化。
RBAC 資源是
- 服務帳戶(命名空間)
- 角色(命名空間)
- 叢集角色
- 角色綁定(命名空間)
- 叢集角色綁定
YAML 設定
RBAC 和服務帳戶設定應該在不同的鍵下進行。它們是不同的東西。在 YAML 中拆分這兩個概念可以消除它們的歧義,並使這一點更加清晰。
rbac:
# Specifies whether RBAC resources should be created
create: true
serviceAccount:
# Specifies whether a ServiceAccount should be created
create: true
# The name of the ServiceAccount to use.
# If not set and create is true, a name is generated using the fullname template
name:
此結構可以擴展,以適用於需要多個服務帳戶的更複雜圖表。
someComponent:
serviceAccount:
create: true
name:
anotherComponent:
serviceAccount:
create: true
name:
預設情況下應該建立 RBAC 資源
rbac.create
應該是一個布林值,用於控制是否建立 RBAC 資源。預設值應為 true
。希望自行管理 RBAC 訪問控制的使用者可以將此值設定為 false
(在這種情況下,請參見下文)。
使用 RBAC 資源
serviceAccount.name
應該設定為要由圖表建立的訪問控制資源使用的服務帳戶的名稱。如果 serviceAccount.create
為 true,則應該建立一個具有此名稱的服務帳戶。如果未設定名稱,則使用 fullname
範本產生一個名稱。如果 serviceAccount.create
為 false,則不應該建立它,但它仍然應該與相同的資源關聯,以便稍後建立的手動建立的 RBAC 資源引用它時能夠正常運作。如果 serviceAccount.create
為 false 且未指定名稱,則使用預設服務帳戶。
以下輔助範本應該用於服務帳戶。
{{/*
Create the name of the service account to use
*/}}
{{- define "mychart.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "mychart.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}