unip-controller/docs/setup/controller.md

104 lines
4.1 KiB
Markdown
Raw Permalink Normal View History

2025-01-29 13:13:51 +00:00
# Запуск контроллеров фреймворка для тестирования
## Настройка окружения
Необходимые для работы фреймворка условия
перечислены в [документе с предусловиями](../../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
```