Боремся с энтропией в рядах инфраструктуры через регулярные обновления

В любой команде, где ведется разработка приложений, будут и приложения, написанные не вами, но без которых никак нельзя. Вспомогательные приложения, они же «тулы», нужны в основном для утилитарных целей, мониторинга либо как контроллер того или иного процесса.

И эти приложения надо обновлять на протяжении всего жизненного цикла. Процесс поддержки таких приложений это часть работы с техническим долгом. По другому можно это назвать налогом на инфраструктуру. И иногда налог получается довольно большой!

Думаю все знают в какой ад может превратиться обновление приложений и их зависимостей.

Технический долг это не только «плохой код». Это любая работа, которую нужно сделать сейчас, чтобы избежать больших затрат в будущем.

Мотивы

Вот основные мотивы обновляться часто:

И способы

Чтобы обновления не превращались в бесконечный но неэффективный процесс, нужны правила, установленные внутри команды. В нашем случае это:

  1. Главное правило: не плоди сущностей без необходимости — мы очень консервативно подходим к добавлению новых тулов в нашу инфраструктуру. Если можно обойтись без новой тулы или без тулы, которая уже есть — мы ее выкидываем. У нас есть кладбище тулов, где мы им рисуем им могилки, и еще мы ведем список, где записываем, почему мы решили не использовать ту или иную тулу.

  2. Временные рамки: мы выделили специальное время для апгрейдов, после различных оптимизаций нам хватает делать их 3 раза в год, чаще нам не нужно, а если есть критические обновления, тогда мы обновляем сразу.
    Но по мере все большей автоматизации процесса обновления и тестирования — мелкие тулы и незначительные изменения применяются полностью автоматически — сразу, как становятся доступны.

  3. Автоматизация — процесс небыстрый, но в итоге, когда для всех тулов были написаны тесты — стало возможным обновлять девелопмент энвы автоматически, что сняло 90 процентов ручной работы. Она также экономит время на администрирование — надо провести митинг, и обсудить, будем или нет обновлять тулы; создать таски, прочитать release notes, попробовать обновить чарт или тулу в тестовом энвайроменте и понять, что все не так просто — это отнимало времени не меньше, чем само обновление.

  4. Важность приложения — Prometheus или, например, ArgoCD — с этими приложениямимы не хотим набивать шишки первыми, очень часто мажорные версии могут быть сырыми и иметь баги; потому для таких тулов мы стараемся придерживаться правила n-1 или хотя бы n.0.2 — то есть либо ставить предпоследнюю версию, либо ставить новую версию только после нескольких патчей.

  5. Тесты. Наша инфраструктура имеет инфраструктурные тесты, которые каждый день полностью удаляют и создают точную копию инфраструктуры в отдельном кластере и запускают тесты для каждого приложения. Это помогло нам найти пару очень неприятных изменений, которые мы пропустили бы или о которых узнали бы довольно поздно. Тесты продолжают помогать нам искать ошибки, и также оптимизировать код инфраструктуры, например чтобы ее ресурсы можно было быстрее развернуть или более безопасно удалить.

  6. Учет. В самом начале мы использовали простенькую табличку, где писали последнюю версию тулы и версию, используемую нами. Во время митингов мы обсуждали, что стоит обновить, и в принципе это работало, но занимало довольно много времени. И еще часто можно было случайно пропустить обновление или забыть создать задачу на обновление. Теперь же мы используем GitOps подход, и всеми приложениями управляет ArgoCD, а обновляет их аналог Renovate Bot в полуавтоматическом режиме.

Вот так выглядит апгрейд одного приложения
Вот так выглядит апгрейд одного приложения
А вот так апгрейд Kubenetes
А вот так апгрейд Kubenetes


Да, Kubernetes не простая тула, и мы не апгрейдим его автоматически, но общий процесс обновления похож. И как видите автоматизация делает все за нас, надо только указываем версии(но даже версии уже для многих тулов комитаются в git автоматически после тестов).

Тщательное планирование и автоматизация управления обновлениями сторонних приложений освободили нас от рутины, и, самое главное, повысили устойчивость и прозрачность нашей инфраструктуры. Чего и всем желаю.

@stroitskiy
26.12.2025 18:45 UTC
Первоисточник