logo

Урок 5 из 7

Настройка доступа

Чтобы получить доступ в веб-интерфейсы кластера, необходимо пройти авторизацию. Механизм авторизации в Deckhouse реализован с помощью Dex. Он позволяет как работать со статическими пользователями в самом кластере, так и настраивать интеграцию с внешней системой (GitHub, GitLab, Bitbucket, LDAP).

Ниже представлен шаблон манифеста, который описывает учётную запись пользователя и права доступа (user.yml):

apiVersion: deckhouse.io/v1
kind: ClusterAuthorizationRule
metadata:
  name: admin
spec:
  # Список учётных записей Kubernetes RBAC.
  subjects:
  - kind: User
    name: admin@deckhouse.io
  # Предустановленный шаблон уровня доступа.
  accessLevel: SuperAdmin
  # Разрешить пользователю делать kubectl port-forward.
  portForwarding: true
---
# Секция, описывающая параметры статического пользователя.
# Используемая версия API Deckhouse.
apiVersion: deckhouse.io/v1
kind: User
metadata:
  name: admin
spec:
  # Email пользователя.
  email: admin@deckhouse.io
  # Это хэш пароля duwbwyj1z7, сгенерированного сейчас.
  # Сгенерируйте свой или используйте этот, но только для тестирования.
  # echo "duwbwyj1z7" | htpasswd -BinC 10 "" | cut -d: -f2
  # Возможно, захотите изменить.
  password: '$2a$10$/kG7MT.Uq/mAVHTYlVOL9OMsFfxtNaXJwnBEbCzH6wkvGrCD/vyKG'
icon

Обратите внимание на раздел password: в комментариях показан пример генерации нового пароля. Обязательно измените пароль, если готовите кластер не для ознакомительных целей!

Мы создадим несколько custom resource’ов:

  • ClusterAuthorizationRule предоставит необходимые привилегии пользователю;
  • User создаст статического пользователя и позволит авторизовываться в кластере через Dex.

Создание пользователя:

После добавления манифестов создаётся пользователь (kind: User) и ему назначаются права (kind: ClusterAuthorizationRule).