Доступно в редакциях: 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, который считает подряд идущие неудачные
чтения, определяющие задержку повтора.