Pular para o conteúdo principal
Versão: 3.22.0

Controle de Acesso Baseado em Funções

Esta parte do guia de boas práticas discute a criação e formatação de recursos RBAC em manifestos de chart.

Os recursos RBAC são:

  • ServiceAccount (com namespace)
  • Role (com namespace)
  • ClusterRole
  • RoleBinding (com namespace)
  • ClusterRoleBinding

Configuração YAML​

A configuração de RBAC e ServiceAccount deve ser feita em chaves separadas. São conceitos distintos. Separá-los no YAML deixa essa distinção mais clara.

rbac:
# Especifica se os recursos RBAC devem ser criados
create: true

serviceAccount:
# Especifica se uma ServiceAccount deve ser criada
create: true
# O nome da ServiceAccount a ser usada.
# Se não definido e create for true, um nome é gerado usando o template fullname
name:

Esta estrutura pode ser estendida para charts mais complexos que requerem múltiplas ServiceAccounts.

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

Recursos RBAC Devem Ser Criados por Padrão​

rbac.create deve ser um valor booleano que controla se os recursos RBAC são criados. O padrão deve ser true. Usuários que desejam gerenciar os controles de acesso RBAC por conta própria podem definir este valor como false (nesse caso, veja abaixo).

Usando Recursos RBAC​

serviceAccount.name deve ser definido como o nome da ServiceAccount a ser usada pelos recursos com controle de acesso criados pelo chart. Se serviceAccount.create for true, então uma ServiceAccount com este nome deve ser criada. Se o nome não for definido, então um nome é gerado usando o template fullname. Se serviceAccount.create for false, então ela não deve ser criada, mas ainda deve ser associada aos mesmos recursos para que recursos RBAC criados manualmente posteriormente que a referenciem funcionem corretamente. Se serviceAccount.create for false e o nome não for especificado, então a ServiceAccount padrão é usada.

O seguinte template auxiliar deve ser usado para a 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 -}}