unip-controller/docs/setup/controller.md
2025-04-15 20:56:15 +03:00

103 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Запуск контроллеров фреймворка для тестирования
## Настройка окружения
Необходимые для работы фреймворка условия
перечислены в [документе с предусловиями](../../deploy/prerequisites.md).
Для тестирования контроллеров необходимы:
1. Платформа Kubernetes;
2. Подключаемые системы:
1. Система управления версиями (для тестирования развертывания приложений);
2. Реестр образов и пакетов.
3. Объектное хранилище.
4. Внешний поставщик реквизитов (для тестирования OIDC аутентификации);
3. Созданные определения ресурсов фреймворка;
Подключение систем и подготовительные шаги описаны в [инструкции](../../deploy/controller.md).
### Параметры конфигурации
Параметры конфигурации описаны в [документе](../../deploy/config.md) в разделе конфигурации контроллера.
Параметры конфигурации могут быть заданы:
1. В переменных окружения.
2. В файле `.env`.
Для запуска также должны быть заданы:
1. Переменная окружения `PYTHONPATH`. Должна указывать на папку `./controller/src`.
2. Переменная окружения `KUBECONFIG`. Должна указывать на файл .kubeconfig с реквизитами доступа к платформе Kubernetes.
## Варианты запуска
### Локальный запуск
Перейти в папку ./controller.
1. Создать виртуальное окружение.
```shell
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
2. Задать параметры конфигурации в `.env` файле или как переменные окружения.
Пример содержимого `.env` файла:
```text
UNIP_DOMAIN=mlops.hse.ru
```
Образец `.env` файла - `.env.sample`.
Содержимое `.env` файла можно экспортировать:
```shell
export $(grep -v '^#' .env | xargs)
```
Пример установки параметра конфигурации как переменной окружения:
```shell
export UNIP_DOMAIN=mlops.hse.ru
```
3. Запустить контроллер.
```shell
kopf run src/main.py --verbose
```
Чтобы ограничить отслеживаемые контроллером пространства имен только теми, имена которых начинаются с `dev`,
нужно задать переменную окружения `UNIP_CONTROLLER_DEV=True`.
Если в кластере Kubernetes одновременно действует несколько контроллеров,
то нужно явно разграничить отслеживаемые ими пространства имен:
```shell
kopf run src/main.py --verbose --standalone --namespace=dev-pu-user1-pa-app1
```
### Запуск в контейнере Docker
Для запуска контроллера в контейнере Docker необходимо:
1. Подготовить файл `.env` с параметрами конфигурации.
2. Файл `kubeconfig` вместе с сертификатом CA платформы Kubernetes.
Команда запуска:
```shell
docker run -v ./local-path/kube-creds:/kube \
--env KUBECONFIG=/kube/kubeconfig \
--env-file .env \
--name unip-controller \
unip-controller:latest
```
Или с монтированием `.env` файла внутрь контейнера:
```shell
docker run -v ./local-path/kube-creds:/kube \
-v .env:/controller/.env \
--env KUBECONFIG=/kube/controller-yc-dev.kubeconfig \
--name unip-controller \
unip-controller:latest
```