Обновление и откат Kubernetes
Планирование обновления, восстановление после ошибки и откат независимых выпусков приложения и данных.
Краткий словарь
- Установка Helm (Helm release) — установленный и независимо управляемый набор ресурсов одного чарта.
- Объект Secret — ресурс Kubernetes для ссылок на конфиденциальные значения; поставочные чарты не владеют самими значениями.
- Запрос постоянного тома (PersistentVolumeClaim, PVC) — запрос хранилища для встроенного компонента данных.
- Сетевая политика (NetworkPolicy) — правила допустимых сетевых соединений модулей приложения.
- Интерфейс хранения контейнеров (Container Storage Interface, CSI) и сетевой интерфейс контейнеров (Container Network Interface, CNI) предоставляются кластером заказчика.
Обновление, восстановление после ошибки и откат
Получите материалы новой версии, проверьте контрольные суммы и совместимость schema/данных. Сохраните local values, текущие Secret и PVC; подготовьте резервную копию и проверьте восстановление. Приложение и data release обновляются отдельно командами Helm.
- Не используйте --reuse-values вслепую: перенесите свои параметры в schema нового chart и проверьте lint/template с новым image overlay.
- Не запускайте первоначальную активацию повторно с другой идентичностью; не меняйте JWT/metering/registry Secret без предусмотренной процедуры.
- Для обновления data release отдельно проверьте совместимость версии хранилища, backup/restore и StorageClass; при необходимости повторите storage preflight.
- Helm rollback откатывает ресурсы release, но не миграции БД, содержимое PVC или данные внешнего сервиса.
Порядок обновления и отката
1. Проверить новую версию
Проверьте новый архив, перенесите local values, сформируйте манифесты и сравните их с текущей установкой. Сохраните backup и предыдущую ревизию.
sha256sum -c SHA256SUMS helm --kube-context "$MA_CONTEXT" history massaccess -n "$MA_NAMESPACE" helm lint charts/massaccess --strict -f work/app-values.yaml -f values/massaccess-images.json -f work/platform-palette-values.yaml helm template massaccess charts/massaccess -n "$MA_NAMESPACE" -f work/app-values.yaml -f values/massaccess-images.json -f work/platform-palette-values.yaml > work/app-rendered.yaml2. Обновить приложение
Получите текущую палитру и примените новую версию massaccess. Для data release используйте отдельное согласованное обновление с его chart, values и image overlay.
python3 bin/palette-delivery.py --manifest activation/manifest.json --helm work/platform-palette-values.yaml helm --kube-context "$MA_CONTEXT" upgrade massaccess charts/massaccess -n "$MA_NAMESPACE" \ -f work/app-values.yaml -f values/massaccess-images.json -f work/platform-palette-values.yaml --rollback-on-failure --wait --timeout 15m3. Выбрать ревизию отката
При ошибке изучите history/status и определите совместимую предыдущую ревизию приложения. Перед откатом подтвердите совместимость данных.
helm --kube-context "$MA_CONTEXT" history massaccess -n "$MA_NAMESPACE" helm --kube-context "$MA_CONTEXT" status massaccess -n "$MA_NAMESPACE"4. Выполнить откат
Замените <previous-revision> числом из history. Откат data release — отдельное решение с проверкой версии хранилища и восстановления.
helm --kube-context "$MA_CONTEXT" rollback massaccess <previous-revision> -n "$MA_NAMESPACE" --wait --timeout 15m5. Проверить результат
Повторите Helm test и прикладные проверки; проверьте готовность, перезапуски и сохранность контрольных данных.
helm --kube-context "$MA_CONTEXT" status massaccess -n "$MA_NAMESPACE" helm --kube-context "$MA_CONTEXT" test massaccess -n "$MA_NAMESPACE" --logs kubectl --context "$MA_CONTEXT" -n "$MA_NAMESPACE" get deployment,statefulset,pod,service,job,pvc