Тест kubernetes Operator-sdk с помощью envTest

Я новичок в operator-sdk. Сейчас я пишу тест для оператора с envtest фреймворком, поэтому у меня была поддельная плоскость управления для окружения.

Внутри цикла согласования контроллера, как только я инициализирую CR, контроллер загрузит образ для модуля и развернет этот модуль.

Все действия, описанные выше, происходят в реальном кластере k8s. Мой вопрос в envtest окружении: действительно ли контроллер загружает образ для развертывания модулей?


person Joe    schedule 10.11.2020    source источник


Ответы (1)


Это зависит от конфигурации envtest. Вот цитаты из книги kubebuilder:

[envtest] настройка и запуск экземпляра etcd и сервера API Kubernetes без kubelet, диспетчера контроллеров или других компонентов

Если вы не используете существующий кластер, имейте в виду, что в тестовом контексте не работают встроенные контроллеры.

Итак, если вы не установите USE_EXISTING_CLUSTER env var в значение true, envtest установит плоскость управления только с сервером API и etcd. Например, если ваш контроллер должен создать развертывание в каком-то событии, в тестовой среде нет контроллера развертывания, который будет создавать ReplicaSet и Pods. По сути, все, что он делает, это сохраняет состояние тестовой среды в etcd.

person Grigoriy Mikhalkin    schedule 10.11.2020
comment
Привет @Grigoriy Mikhalkin, в поддельной плоскости управления мой контроллер создаст Deployment. Я хочу знать, можно ли успешно создать объект развертывания, даже если в envTest нет контроллера развертывания. Спасибо - person Joe; 10.11.2020
comment
@Joe, в etcd будет запись об объекте Deployment. Но поскольку контроллер развертывания отсутствует, с ним не будет связанных модулей. Итак, отвечая на ваш вопрос, действительно ли контроллер загружает образ для развертывания модулей - нет, если ваш контроллер создает только развертывание, в тестовом кластере не будет модулей. - person Grigoriy Mikhalkin; 10.11.2020
comment
Спасибо @Grigoriy Mikhalkin - person Joe; 11.11.2020