unip-controller/deploy/prerequisites.md

113 lines
6.4 KiB
Markdown
Raw Normal View History

2025-01-29 13:13:51 +00:00
# Предусловия
1. Настроенная платформа Kubernetes;
2. Доступны подключаемые системы;
3. Зарегистрированы и настроены на работу с платформой Kubernetes два доменных имени;
4. Доступны реестры образов или кэш образов с необходимыми для развертывания компонентов фреймворка образами;
## Платформа Kubernetes
Платформа Kubernetes включает в себя кластер аппаратных или виртуальных узлов
и развернутые на нем системные сервисы.
Требования к ПО Kubernetes:
1. Версия не ниже 1.24;
Требования к аппаратному обеспечению:
1. Мастер-узел: 1 узел, 2-core CPU, 4 Гб RAM, 50 Гб Storage;
2. Рабочие узлы: 2 узла, каждый узел 2-core CPU, 6 Гб RAM, 50 Гб Storage;
Для сервиса managed Kubernetes мастер-узел может быть создан и управляться автоматически провайдером сервиса.
Требования к системным сервисам платформы Kubernetes:
1. Драйвер S3 CSI от Yandex;
2. Сервис DNS CoreDNS;
3. Контроллер сетевых политик Cilium для обеспечения сетевой связности;
4. Балансировщик нагрузки, через который осуществляются внешние соединени;
с развернутыми на платформе сервисами фреймворка и приложениями;
5. Контроллер менеджер сертификатов cert-manager;
6. Контроллер Ingress Ingress-Nginx;
> Работоспособность драйвера S3 CSI от Yandex на установках Kubernetes вне Yandex Cloud не проверена.
> Существуют проблемы с работоспособностью при использовании microk8s.
> При использовании managed кластера Kubernetes рекомендуется при настройке сразу выбрать Cilium
> в качестве контроллера сетевых политик. Последующее изменение может потребовать пересоздание кластера
> (это верно по крайней мере для managed Kubernetes в Yandex Cloud).
Требования к пользовательскому интерфейсу:
1. Настроен доступ через kubectl (файл KUBECONFIG);
## Подключаемые системы
Подключаемые системы должны быть доступны через программные интерфейсы со стороны сервисов фреймворка.
### Система управления версиями
Хранит копии репозиториев, используемых для развертывания приложений в фреймворке.
Требования:
1. git программный интерфейс;
### Реестр образов и пакетов
Реализует внутреннее хранилище образов контейнеров, кэш образов, пакетов Python, кэш пакетов.
Требования:
1. Docker Registry HTTP API V2 программный интерфейс;
2. PyPI программный интерфейс;
### Системная СУБД
РСУБД на базе PostgreSQL, используемая другими компонентами фреймворка для хранения данных.
Требования:
1. Версия PostgreSQL 16 или выше;
### Объектное хранилище
Хранит данные приложений.
Требования:
1. S3 API Version 2006-03-01 программный интерфейс;
### Вычислительный кластер
Используется для запуска вычислительных задач, предоставляет метрики о работе задач.
Требования:
1. Планировщик задач Slurm;
### Внешний поставщик реквизитов (OIDC провайдера)
Требования:
1. OIDC провайдер Keycloak;
## Доменные имена
Должны быть зарегистрированы и настроены на работу с платформой Kubernetes два доменных имени,
первое - для сервисов фреймворка и размещаемых на фреймворке приложений,
второе - для реестра образов (пояснение приведено ниже).
Доменное имя для сервисов фреймворка и размещаемых на фреймворке приложений называется **основным**.
Компоненты фреймворка, и размещаемые на фреймворке приложения доступны по адресам вида
`https://{domain}/{component}` (например, `https://domain.ru/forgejo`) или
`https://{domain}/{app}` (например, `https://domain.ru/app1`).
Реестр образов не может быть доступен по адресу такого вида, поскольку docker cli распознает
префикс в адресе вида `https://{domain}/{prefix}` частью имени образа.
По этой причине рекомендуется зарегистрировать два доменных имени, основное и для реестра образов.
Если основное доменное имя имеет вид `domain.ru`, то для реестра образов могут быть использованы имена
`registry-domain.ru` или `registry.domain.ru`.
## Доступ к реестру образов с образами компонентов фреймворка
1. unip-controller:0.3.7-9c53a08 - образ контроллеров, сервисов управления данными и отслеживания экспериментов;
2. quay.io/argoproj/argocd:v2.9.0 - образ сервиса развертывания;