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