ロールベースアクセス制御
ベストプラクティスガイドのこの部分は、チャートマニフェストで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 -}}