基于角色的访问控制
最佳实践指南的这一部分讨论了 chart 清单中 RBAC 资源的创建和格式化。
RBAC 资源是:
- ServiceAccount (namespaced)
- Role (namespaced)
- ClusterRole
- RoleBinding (namespaced)
- ClusterRoleBinding
YAML 配置
RBAC 和 ServiceAccount 配置应该在单独的密钥下进行。他们是不同的东西。将 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
此结构可以扩展到需要多个 ServiceAccounts 的更复杂的 chart。
serviceAccounts:
client:
create: true
name:
server:
create: true
name:
RBAC 资源应该默认创建
rbac.create
应该是一个布尔值,控制是否创建 RBAC 资源。默认应该是 true
。想要管理 RBAC 访问控制的用户可以将此值设置为 false
(在这种情况下请参阅下文)。
使用 RBAC 资源
serviceAccount.name
应设置为由 chart 创建的访问控制资源使用的 ServiceAccount
的名称。如果 serviceAccount.create
为 true,则应该创建一个带有该名称的 ServiceAccount
。如果名称未设置,则使用该 fullname
模板生成名称,如果 serviceAccount.create
为 false,则不应创建该名称,但它仍应与相同的资源相关联,以便稍后通过手动创建的 RBAC 资源将引用它从而功能正常。如果 serviceAccount.create
为 false 且名称未指定,则使用默认的 ServiceAccount。
为 ServiceAccount 使用以下 helper 模板。
{{/*
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 -}}