103 lines
4.1 KiB
Markdown
103 lines
4.1 KiB
Markdown
# Запуск контроллеров фреймворка для тестирования
|
||
|
||
## Настройка окружения
|
||
|
||
Необходимые для работы фреймворка условия
|
||
перечислены в [документе с предусловиями](../../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
|
||
```
|