Обновление и откат 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. 1. Проверить новую версию

    Проверьте новый архив, перенесите local values, сформируйте манифесты и сравните их с текущей установкой. Сохраните backup и предыдущую ревизию.

    bash
    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.yaml
  2. 2. Обновить приложение

    Получите текущую палитру и примените новую версию massaccess. Для data release используйте отдельное согласованное обновление с его chart, values и image overlay.

    bash
    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 15m
  3. 3. Выбрать ревизию отката

    При ошибке изучите history/status и определите совместимую предыдущую ревизию приложения. Перед откатом подтвердите совместимость данных.

    bash
    helm --kube-context "$MA_CONTEXT" history massaccess -n "$MA_NAMESPACE"
    helm --kube-context "$MA_CONTEXT" status massaccess -n "$MA_NAMESPACE"
  4. 4. Выполнить откат

    Замените <previous-revision> числом из history. Откат data release — отдельное решение с проверкой версии хранилища и восстановления.

    bash
    helm --kube-context "$MA_CONTEXT" rollback massaccess <previous-revision> -n "$MA_NAMESPACE" --wait --timeout 15m
  5. 5. Проверить результат

    Повторите Helm test и прикладные проверки; проверьте готовность, перезапуски и сохранность контрольных данных.

    bash
    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