13 KiB
Развертывание контроллеров, сервисов управления данными и отслеживания экспериментов
Для развертывания необходимо создать ресурсы Kubernetes, применив манифесты из папки unip-controller из проекта развертывания unip-components из поставки фреймворка.
Применение манифестов осуществляется командой kubectl apply -f <имя файла манифеста>.
Развертывание включает следующие шаги:
- Создание пространства имен;
- Создание ресурсов kopf;
- Создание определений ресурсов фреймворка;
- Подключение системной СУБД и настройка БД;
- Подключение объектного хранилища;
- Подключение сервиса развертывания;
- Подключение внешнего поставщика реквизитов (OIDC провайдера);
- Конфигурация сервиса отслеживания экспериментов;
- Конфигурация сервиса управления данными;
- Конфигурация контроллера модулей данных;
- Конфигурация контроллера публикации API;
- Создание ресурса размещения Kubernetes;
Создание пространства имен
Применить манифест командой kubectl apply -f ns.yaml.
Создание ресурсов kopf
Применить манифест командой kubectl apply -f kopf/peering.yaml.
Создание определений ресурсов фреймворка
Применить манифесты из папки crd командой kubectl apply -f <имя файла манифеста>.
Подключение системной СУБД и настройка БД
Подготовка среды для настройки
Установить psql клиент PostgreSQL. Для Ubuntu:
apt-get install -y postgresql-client
Подключиться к системной СУБД.
Команды для подключения, если системная СУБД развернута в кластере Kubernetes в пространстве unip-system-database:
kubectl port-forward service/postgres 5432:5432 -n unip-system-database
psql -h 127.0.0.1 -p 5432 -U postgres -W
Создание БД
Выполнить команды psql:
postgres=#
CREATE USER unip_system_pipelines WITH PASSWORD '<password>';
CREATE DATABASE unip_system_pipelines;
GRANT ALL PRIVILEGES ON DATABASE unip_system_pipelines TO unip_system_pipelines;
ALTER DATABASE unip_system_pipelines OWNER TO unip_system_pipelines;
Установить привилегии, выполнив команды psql (важно выполнять при подключении к БД, для которой устанавливаются привилегии):
unip_system_pipelines=#
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO unip_system_pipelines;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to unip_system_pipelines;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to unip_system_pipelines;
Подключение БД к сервису отслеживания экспериментов
Создать ресурс Secret unip_system_pipelines с реквизитами доступа к БД
по образцу pipelines/pipelines-db-credentials-secret.yaml.
Значение параметров в Secret unip_system_pipelines см. в описании
конфигурации сервиса отслеживания экспериментов.
Подключение объектного хранилища
Создание StorageClass
- Создать ресурс Secret
csi-s3-secretпо образцу s3/csi-s3-credentials-secret.yaml.sample. Secret должен содержать реквизиты доступа к объектному хранилищу с правами получения списка бакетов; - Создать ресурс StorageClass из манифеста s3/sc.yaml;
Создание бакета для хранения пользовательских данных
- В объектном хранилище создать бакет
platform-default-user-bucket. Его имя может быть любым, но если оно отличается отplatform-default-user-bucket, то необходимо изменить значение параметраUNIP_BOXES_S3_DEFAULT_USER_DATA_BUCKETв ресурсах конфигурации (ниже); - Создать ресурс Secret
aws-vars-s3-credentialsпо образцу s3/csi-s3-credentials-secret.yaml.sample. Secret должен содержать реквизиты доступа к объектному хранилищу с правами чтения и записи в бакет хранения пользовательских данных;
Подключение объектного хранилища
Уточнить конфигурацию доступа к объектному хранилищу в манифесте files/files-cm.yaml и применить манифест.
Уточнить конфигурацию доступа к объектному хранилищу в манифесте databoxes/databoxes-cm.yaml и применить манифест.
Значение параметров в манифестах см. в описании конфигурации фреймворка.
Подключение сервиса развертывания
Создать ресурс Secret argo-cd-credentials по образцу argo-cd/argo-cd-credentials-secret.yaml.sample.
Уточнить конфигурацию сервиса развертывания в манифесете argo-cd/argo-cd-cm.yaml.
Значение параметров в манифестах см. в описании конфигурации сервиса развертывания.
Подключение внешнего поставщика реквизитов (OIDC провайдера)
Настройка внешнего поставщика реквизитов Keycloak
Для настройки OIDC провайдера Keycloak выполнить следующие шаги:
- Создать реалм для конечных пользователей и реалм для робот аккаунтов (может использоваться один реалм,
но более безопасно использовать два реалма, например,
end-usersиrobots); - Создать публичный (Client authentication - Off; Standard flow - Enabled; Direct access grants - Enabled) и конфиденциальный клиенты (Client authentication - On) в каждом из реалмов (конфиденциальный клиент также называется административным клиентом).
- Конфиденциальный клиент в реалме конечных пользователей должен иметь права:
- Управлять группами (просматривать, создавать, удалять, перемещать между родителями).
- Добавлять в группы и удалять из групп пользователей.
- Выполнять поиск и просмотр пользователей.
- Конфиденциальный клиент в реалме робот аккаунтов должен иметь те же права, плюс:
- Управлять пользователями (просматривать, создавать, удалять, перемещать между родителями).
Опционально в расширенных (advanced) настройках клиента Keycloak можно указать время жизни токена: Access Token Lifespan.
Подключение внешнего поставщика к контроллеру ссылок
Проверить и уточнить конфигурацию OIDC в манифесете oidc/oidc-cm.yaml. Применить манифест oidc/oidc-cm.yaml.
Создать ресурс Secret oidc-credentials по образцу oidc-credentials-secret.yaml.sample в папке ./oidc.
Значения атрибутов OIDC_END_USERS_CLIENT_SECRET, OIDC_ROBOTS_CLIENT_SECRET, OIDC_END_USERS_COOKIE_SECRET
могут быть взяты из образца без изменений.
Значение параметров манифестах см. в описании конфигурации внешнего поставщика реквизитов.
Создать пространство имен для хранения реквизитов робот аккаунтов из манифеста keycloak-robots-creds-ns.yaml.
При изменении имени пространства имен изменить значение атрибута UNIP_REPOSITORY_KEYCLOAK_ROBOTS_CREDS_NAMESPACE
в ConfigMap oidc-cm.yaml.
После настройки OIDC провайдера Keycloak выполнить:
- Уточнить настройки OIDC в манифесте ConfigMap oidc-cm.yaml в папке ./oidc и создать ресурс из манифеста.
- Создать ресурс Secret
oidc-credentialsпо образцу oidc-credentials-secret.yaml.sample в папке ./oidc.- Значения атрибутов
OIDC_END_USERS_CLIENT_SECRET,OIDC_ROBOTS_CLIENT_SECRET,OIDC_END_USERS_COOKIE_SECRETмогут быть взяты из образца без изменений.
- Значения атрибутов
- Создать пространство имен для хранения реквизитов робот аккаунтов из манифеста keycloak-robots-creds-ns.yaml.
При изменении имени пространства имен изменить значение атрибута
UNIP_REPOSITORY_KEYCLOAK_ROBOTS_CREDS_NAMESPACEв ConfigMap oidc-cm.yaml.
Конфигурация сервиса отслеживания экспериментов
Проверить и уточнить конфигурацию сервиса отслеживания экспериментов в манифесете pipelines/pipelines-cm.yaml. Применить манифест ./pipelines/pipelines-cm.yaml.
Значение параметров манифеста см. в описании конфигурации сервиса отслеживания экспериментов.
Конфигурация сервиса управления данными
Проверить и уточнить конфигурацию сервиса управления данными в манифесете files/files-cm.yaml. Применить манифест ./files/files-cm.yaml.
Значение параметров манифеста см. в описании конфигурации сервиса управления данными.
Конфигурация контроллера модулей данных
Проверить и уточнить конфигурацию сервиса управления данными в манифесете ./datasets/datasets-cm.yaml. Применить манифест ./datasets/datasets-cm.yaml.
Значение параметров манифеста см. в описании конфигурации контроллера модулей данных.
Конфигурация контроллера публикации API
Настройка CORS (опционально)
Проверить и уточнить конфигурацию CORS в манифесете ./apicmps/cors.yaml. Применить манифест ./apicmps/cors.yaml.
Значение параметров манифеста см. в описании конфигурации конфигурации CORS.
Создание ресурса размещения Kubernetes
- Уточнить имя основного домена - значение ключа
UNIP_DOMAINв манифесте ./common/controller-cm.yaml и применить манифест; - Создать ресурс Secret
registry-credentialsс реквизитами доступа к реестру образов с образом unip-controller по образцу ./common/registry-credentials-secret.yaml.sample; - Создать ресурсы Kubernetes из манифестов:
- files/files-svc.yaml;
- pipelines/pipelines-svc.yaml;
- sa.yaml;
- cluster-role.yaml;
- cluster-rb.yaml;
- deployment.yam;
Проверка установки
В пространстве имен unip-system-deployment должен быть запущен Pod с тремя контейнерами.
В логах контейнеров не должно быть ошибок.