"Доступно обновление системы" - знакомое сообщение?

"Доступно обновление системы" - знакомое сообщение?

“Доступно обновление системы” - знакомое сообщение? Вспомните такое окошко.
Нажал. Подождал. Готово.

В ит инфраструктуре так не работает.


Да, девопсы не любят обновления. Но обновлять надо - уязвимости, новые фичи, прекращение поддержки. Ладно, мы ленивые черти, мы это автоматизируем.

Если мы разрабатываем приложение - настраиваем пайплайн, это наша работа. Дальше проблема разработчиков. Сломают что-то - их боль.

А если мы обновляем наши, инфраструктурные тулзы? Версию k8s, prometheus, grafana, логи и тд. Тут всё сложнее. То, что для разработчиков дев-среда - для нас всё равно прод. Используется. Да, не настолько критично как реальный прод, но всё же.


Давайте возьмём кубер для примера - там зацепим и всё остальное.

Итак, как мы обновляем kubernetes кластер:

  1. Смотрим changelog
  2. Проверяем список deprecated и удалённых фич
  3. Проверяем кластер: какие из них у нас используются
  4. Находим старые чарты, манифесты, которые на них полагаются - обновляем
  5. Ищем свежую версию чарта, сравниваем: параметры, шаблоны, values, дефолтные значения, переименования
  6. Обновляем values.yaml
  7. helm upgrade --atomic--reuse-values, по ситуации)
  8. Смотрим: всё установилось, запустилось, ничего не упало

Если новой версии нет, или это самописный чарт - обновляешь сам. Форкаешь, правишь шаблон, или используешь Kustomize.

А обновление самого кластера - получается, в следующий раз. Всё как в жизни.


Итого: мы ещё даже до самого кластера не добрались. Только чарты обновили. И уже голова пухнет.

И всё это - в голове у одного человека. Максимум что вы узнаете на созвоне - “обновляю чарты, до кластера пока не добрался, почти половина готова”.

Пока он не ушёл в отпуск. Или не уволился.

Bus-factor, помним.


Сколько helm-чартов у вас в кластере? И когда последний раз обновляли все?