Одиннадцать минут без людей: самообновляющийся Kubernetes на Kairos¶
8.0/10
Контекст¶
Ручное обновление control plane Kubernetes — это ночные бдения над SSH-сессиями и надежда на то, что etcd переживёт перезагрузки. Автор построил пайплайн на базе immutabель-дистрибутива Kairos, чтобы обновления проходили без участия человека и не требовали переучиваться на каждый патч.
Суть¶
Пайплайн объединяет шесть инструментов: Gitea хранит манифесты, Renovate открывает PR при новом теге Hadron, Kyverno проверяет образ, Cosign проверяет подпись, ArgoCD применяет изменения, а kairos-operator последовательно обновляет узлы. Ключевой фикс — concurrency: 1 вместо 0, потому что ноль означал одновременный перезапуск всех трёх control plane узлов. Другой неочевидный момент: NodeOpUpgrade — одноразовый CR, поэтому Renovate должен обновлять и metadata.name, чтобы ArgoCD создал новый объект, а не «перезаписал» завершённый. В реальном прогоне 7 июля pipeline занял 11 минут: Renovate выполнил двухстрочный диф, ArgoCD синхронизировал, оператор по очереди обновил три узла; quorum и рабочие нагрузки не пострадали. Первая версия содержала баг: неверное поле extractVersionTemplate молча не обновляло name; замена на currentValueTemplate исправила логику версионирования. Именно поэтому человеческая проверка PR остаётся в пайплайне: не для выполнения, а для поимки тихих ошибок автоматизации.
Вывод¶
Автор показывает, что правильно настроенная GitOps-автоматизация превращает обновление control plane в рутинную операцию за 11 минут без вмешательства человека, но при этом требует внимательного ревью, чтобы вовремя заметить сбой, который автоматика выглядит как успех.