基於角色的訪問控制

最佳實務指南的這一部分討論了圖表清單中 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 -}}