Перейти до основного вмісту
Версія: 3.22.1

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