Pular para o conteúdo principal
Versão: 3.19.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 -}}