Они этого не делают. Во всяком случае, не напрямую. Общение в Kubernetes происходит исключительно через файлы YAML.
Например, если вашему приложению требуется доступ к базе данных, вы должны установить оператор для Postgresql, создать объект CR PostgreSQLCluster и получить из него учетные данные после его настройки.
Однако в долгосрочной перспективе это не практичное решение, поскольку Operators должен иметь возможность обновляться автоматически и без взаимодействия. Вам также не разрешено устанавливать более старые версии. Чтобы назвать имена, оператор Crunchy Postgres на самом деле претерпевает множество критических изменений с каждым обновлением. Если вы полагались на то, что они сохранят свой формат CRD, вы сделали вашу архитектуру хрупкой.
Есть несколько исключений. Операторы для таких продуктов, как Tekton Pipelines и Argo Pipelines, очень стабильны и вряд ли изменятся по конструкции, и вполне нормально полагаться на них.
Говоря исключительно о передовых методах, предполагается, что вы сможете переходить от старых к более новым версиям вашего CRD API с помощью веб-перехватчиков, хотя неясно, что любые реализации Оператора действительно делают это. Тем не менее, на момент написания этого сообщения на OperatorHub.io нет операторов, которые полагаются на других операторов (16 февраля, 2021 г.). Читатель, ты будешь первым.
Если вы все равно захотите это сделать, скорее всего, оператор, от которого вы хотите зависеть, доступен на Репозиторий пакетов Go. Вы можете просто go get
использовать их типы CRD API в своем коде, что должно упростить обновление API.
Бонус за отсутствие ответа
Технически оператор, от которого вы хотите зависеть, может реализовать REST API в своем диспетчере и предоставить его как службу. Я серьезно сомневаюсь, что кто-нибудь когда-либо сделает это. Не кажется разумным проделывать дыры в философии дизайна Kubernetes и раскрывать векторы атак.
person
I'll Eat My Hat
schedule
17.02.2021