Чтобы получить доступ в веб-интерфейсы кластера, необходимо пройти авторизацию. Механизм авторизации в 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'
Обратите внимание на раздел password: в комментариях показан пример генерации нового пароля. Обязательно измените пароль, если готовите кластер не для ознакомительных целей!
Мы создадим несколько custom resource’ов:
ClusterAuthorizationRule
предоставит необходимые привилегии пользователю;User
создаст статического пользователя и позволит авторизовываться в кластере через Dex.
Создание пользователя:
После добавления манифестов создаётся пользователь (kind: User
) и ему назначаются права (kind: ClusterAuthorizationRule
).