ロールベースアクセス制御

ベストプラクティスガイドのこの部分は、チャートマニフェストでRBACリソースの作成とフォーマットについて説明しています。

RBACリソースは次のとおりです。

  • ServiceAccount(名前空間付き)
  • Role(名前空間付き)
  • ClusterRole
  • RoleBinding(名前空間付き)
  • ClusterRoleBinding

YAML設定

RBACとServiceAccountの設定は、別々のキーの下で行う必要があります。これらは別々のものです。YAMLでこれら2つの概念を分離することで、曖昧さを解消し、明確になります。

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:

この構造は、複数のServiceAccountを必要とするより複雑なチャートに拡張できます。

someComponent:
  serviceAccount:
    create: true
    name:
anotherComponent:
  serviceAccount:
    create: true
    name:

RBACリソースはデフォルトで作成する必要があります

rbac.createは、RBACリソースを作成するかどうかを制御するブール値である必要があります。デフォルトはtrueにする必要があります。RBACアクセス制御を自分で管理したいユーザーは、この値をfalseに設定できます(その場合は下記を参照)。

RBACリソースの使用

serviceAccount.nameは、チャートによって作成されるアクセス制御されたリソースで使用されるServiceAccountの名前に設定する必要があります。serviceAccount.createがtrueの場合、この名前のServiceAccountが作成されます。名前が設定されていない場合、fullnameテンプレートを使用して名前が生成されます。serviceAccount.createがfalseの場合、作成されないようにする必要がありますが、後で参照する手動で作成されたRBACリソースが正しく機能するように、同じリソースに関連付ける必要があります。serviceAccount.createがfalseで名前が指定されていない場合、デフォルトのServiceAccountが使用されます。

ServiceAccountには、次のヘルパーテンプレートを使用する必要があります。

{{/*
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 -}}