Обновление приложения — это коммит
Версия чарта закреплена в репозитории. Значит, обновление видно в диффе, откат — это откат коммита, а «оно само обновилось» становится невозможным.
Версии чартов в каталоге закреплены. Приложение со неприкреплённой версией получает статус «отключено» и этой сборкой не ставится.
Из этого следует свойство, которое стоит назвать прямо: приложение не обновляется само.
Почему это важно
«Оно само обновилось» — одна из худших фраз в эксплуатации. Она означает, что состояние системы изменилось без решения человека, и разбираться придётся, не зная момента изменения.
Чаще всего это происходит через плавающий тег. Чарт ссылается на образ по метке вида «последний» или на мажорную версию, содержимое по адресу меняется, и при следующем цикле сверки приложение приезжает другое.
Закреплённая версия убирает этот механизм. Пока в репозитории не изменилась строка версии, разворачивается то же самое.
Как выглядит обновление
Правка версии в описании. Коммит. Дальше ArgoCD приводит кластер к новому состоянию.
Это значит, что обновление — объект обсуждения: его видно в диффе, к нему можно приложить причину, его можно назначить на окно.
И откат — это откат коммита. Не поиск предыдущей версии чарта, не восстановление из памяти, кто что менял. Предыдущее состояние существует как объект.
Чем за это платят
Обновления надо делать. Никто не сделает их за вас, и это работа, которая накапливается.
Проект, где версии закреплены и никто их не поднимает год, оказывается в худшем положении, чем проект с автоматическими обновлениями: разрыв версий вырос настолько, что обновление стало проектом.
Мы считаем такой обмен правильным, но он именно обмен, и говорить о нём надо честно. Закрепление версий переносит риск из «сломалось само в неизвестный момент» в «устареет, если не заниматься». Второе — управляемая проблема, первое — нет.
Что помогает не забывать
То, что состав описан в одном месте и лежит в репозитории. Список версий — это файл, который можно посмотреть, а не состояние кластера, которое надо опрашивать.
Отдельно: вложенные архивы чартов в бинарнике означают, что обновление каталога и обновление приложения — разные события. Новая сборка инструмента приносит новые версии в каталог, но не меняет то, что уже развёрнуто. Пока вы не правите описание, ничего не происходит.
Граница ответственности
Мы отвечаем за то, что закреплённая версия развернётся так же, как она развернулась при сертификации. Мы не отвечаем за то, что новая версия приложения совместима с вашими данными — это вопрос к автору приложения и к вашему резервному копированию.
Отсюда практическое правило: перед обновлением приложения с состоянием — проверенная резервная копия. Проверенная означает восстановленную хотя бы раз, а не существующую.