Связь нескольких операторов Kubernetes

Лучшее Практика создания операторов Kubernetes гласит, что я должен написать целую кучу операторов для управления моим приложением. Как происходит межоператорское общение?

Другими словами, как мне построить своего Оператора, чтобы он мог разговаривать с другими Операторами?


person I'll Eat My Hat    schedule 17.02.2021    source источник


Ответы (1)


Они этого не делают. Во всяком случае, не напрямую. Общение в 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
comment
Этот вопрос похож на stackoverflow.com/questions/64882036/ - person I'll Eat My Hat; 17.02.2021