104 lines
4.1 KiB
Markdown
104 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
|
|||
|
|
```
|