Role-Based Access Control
Цей розділ посібника з найкращих практик розглядає створення та форматування ресурсів RBAC у маніфестах чарту.
Ресурси RBAC це:
- ServiceAccount (обмежений простором імен)
- Role (обмежений простором імен)
- ClusterRole
- RoleBinding (обмежений простором імен)
- ClusterRoleBinding
Конфігурація YAML
Конфігурація RBAC та ServiceAccount повинна здійснюватися під окремими ключами. Це окремі речі. Розділення цих двох концепцій у YAML знімає неоднозначність і робить це ясніше.
rbac:
# Вказує, чи повинні бути створені ресурси RBAC
create: true
serviceAccount:
# Вказує, чи повинен бути створений ServiceAccount
create: true
# Імʼя ServiceAccount для використання.
# Якщо не вказано і create дорівнює true, імʼя генерується за допомогою шаблону fullname
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, то ServiceAccount не створюється, але він має бути асоційований з тими ж ресурсами, щоб пізніше створені вручну ресурси RBAC, що посилаються на нього, функціонували правильно. Якщо serviceAccount.create
дорівнює false та імʼя не вказано, то використовується стандартний ServiceAccount.
Для ServiceAccount слід використовувати наступний допоміжний шаблон.
{{/*
Створіть імʼя ServiceAccount для використання
*/}}
{{- define "mychart.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "mychart.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}