Доступно в редакциях:  Open/CE, BE, SE, SE+, Ultimate/EE

Стадия жизненного цикла модуля: Экспериментальная версия

У модуля есть требования для установки

Перед включением модуля необходимо разрешить использование экспериментальных модулей в ModuleConfig deckhouse. Для этого установите параметр allowExperimentalModules в true.

Модуль operator-helm позволяет декларативно управлять развёртыванием Helm-чартов в кластере. Он ориентирован на администраторов кластеров и DevOps-инженеров и автоматизирует установку приложений с помощью кастомных ресурсов.

Контроллер модуля отслеживает состояние ресурсов HelmClusterAddon и автоматически приводит Helm-релизы в кластере в соответствие с заданными параметрами.

Основные возможности

  • Развёртывание Helm-чартов из классических HTTP/HTTPS-репозиториев и OCI-репозиториев через единый декларативный API.
  • Автоматическое обнаружение и отслеживание версий чартов через ресурсы HelmClusterAddonChart.
  • Настройка параметров чартов через ресурсы HelmClusterAddon.
  • Режим обслуживания для приостановки согласования и ручного вмешательства в управляемые релизы.
  • Поддержка проверки TLS-сертификатов и аутентификации для приватных OCI и Helm репозиториев.
  • Управление через CLI (d8 k) или веб-интерфейс Deckhouse.

Кастомные ресурсы

Для управления Helm-чартами в модуле используются следующие кастомные ресурсы:

  • HelmClusterAddonRepository — репозиторий Helm или OCI, содержащий Helm-чарты для последующей установки в кластере.
  • HelmClusterAddonChart — Helm-чарт, обнаруженный в подключённом репозитории. Эти ресурсы создаются и обновляются контроллером автоматически при синхронизации репозиториев и защищены от изменений.
  • HelmClusterAddon — декларативное описание конкретного релиза Helm-чарта. Ресурс содержит целевую версию чарта, имя пространства имён для развёртывания и пользовательские значения параметров.

Ограничения

  • Для управления ресурсами HelmClusterAddon и HelmClusterAddonRepository требуются права администратора кластера (роль cluster-admin).
  • Ресурс HelmClusterAddon, ссылающийся на заданный HelmClusterAddonChart, может быть создан в кластере только в единственном экземпляре. Это обусловлено тем, что Helm-чарты могут содержать определения кастомных ресурсов (CRD), повторная установка которых на уровне кластера недопустима.

Примеры использования приведены в разделе примеры использования.

Статус репозитория

HelmClusterAddonRepository сообщает о себе четырьмя условиями.

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

Synced показывает, актуален ли каталог чартов.

Reconciling и Stalled следуют соглашению kstatus и присутствуют, только когда применимы. Reconciling означает, что работа выполняется или запланирован повтор; Stalled — что репозиторий сам не восстановится.

Ready Synced Что означает Что делать
True True Репозиторий исправен. Ничего.
True False Чтение каталога не удалось, но до этого репозиторий был пригоден. Посмотреть сообщение Reconciling и колонку Last Sync. Повторы уже запланированы.
False True Каталог свежий, но источник артефактов чартов неисправен. Посмотреть сообщение Ready — оно транслируется от внутреннего объекта источника.
False False Репозиторий недоступен или настроен неверно. Посмотреть Stalled: AuthenticationFailed, SourceNotFound и InvalidRepositoryURL требуют правки spec.
Unknown любое Первое чтение каталога на текущей спецификации ещё не удалось. Дождаться следующей попытки, время которой указано в Next Sync.

Синхронизация выполняется каждые 5 минут. После неудачного чтения задержка удваивается — 5m, 10m, 20m, 40m — до часа, и по достижении потолка репозиторий переводится в Stalled с причиной RetriesExceeded. Повторы при этом продолжаются, потому что причина может уйти на стороне репозитория. Расписание видно в status.nextSyncTime и через kubectl get helmclusteraddonrepository -o wide. kubectl get helmclusteraddonrepository по умолчанию показывает колонки Last Sync и Age, а -o wide добавляет Next Sync и сообщение из Ready. Те же значения лежат в самом статусе — lastSuccessfulSyncTime и nextSyncTime, — рядом с consecutiveFetchFailures, который считает подряд идущие неудачные чтения, определяющие задержку повтора.