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 -}}