Мы запускаем несколько глобально распределенных кластеров Kubernetes, на которых должно работать одно и то же программное обеспечение. Когда мы выпускаем обновление для этого программного обеспечения (в виде образа Docker, загруженного в частное репозиторий Docker), наш текущий конвейер развертывания должен перебирать список известных развертываний, подключаться к каждому кластеру и обновлять там нужное развертывание. Это громоздкий, хрупкий, медленный и немасштабируемый процесс.
Я ищу способ решить эту проблему, создавая развертывания, которые периодически проверяют наличие новой версии образа Docker, и когда они обнаруживают изменение, они извлекают новый образ и обновляют правильное развертывание. Это должно выполняться каждым кластером независимо, чтобы не было центрального процесса, подключающегося к каждому кластеру, и списка кластеров для обслуживания и т. Д.
Не требуется, чтобы все кластеры обновлялись одновременно, но идея состоит в том, чтобы в конечном итоге обеспечить согласованность без централизованного управления.
Есть ли какой-либо инструмент, который решает эту проблему или решает эту проблему другим способом?
Похоже, Weave's Flux отвечает вашим требованиям:
https://github.com/weaveworks/flux
Мы установили его в одном из кластеров наших клиентов, и он отлично работает. Он будет следить за изменениями в ваших образах Docker и выполнять повторное развертывание. Вроде как именно вы описали это в своем вопросе.
Проект немного новенький, поэтому его настройка может быть немного утомительной ... Но в конечном итоге он работает!