Менеджер клиентских кластеров (shturval-cluster-manager)

О сервисе

ПараметрЗначение
Название в интерфейсеМенеджер клиентских кластеров
Системное название (идентификатор)shturval-cluster-manager
Назначение в кластереУправление жизненным циклом клиентских кластеров: создание, удаление, настройка; при первичном развёртывании клиентского кластера устанавливает платформенные сервисы. Устанавливается в кластер управления.
КритическийДа
Публичный репозиторий— (компонент платформы «Штурвал»)
Зависимостиshturval-cluster-manager-crds, shturval-auth, shturval-trust-manager
Неймспейсshturval-cluster-manager

1. Обзор

cluster-manager — компонент платформы Штурвал, отвечающий за установку, обновление и синхронизацию системных сервисов в управляющем кластере. Он не требует ручного запуска helm upgrade — состояние сервисов описывается объектами ShturvalServiceConfig (SSC), а кастомизация администратором — через ShturvalServicePatch (SSP).

При первичном развёртывании клиентского кластера cluster-manager также участвует в согласовании установки платформенных сервисов и связан с применением конфигураций узлов через механизм Node Config (NCI) — см. Модуль конфигурации узлов и Конфигурация узлов. Обзор провайдеров инфраструктуры и ссылки на документацию по каждому провайдеру — Провайдеры.

Каждый сервис поставляется как один или несколько Helm-чартов. Чарты с CRD (*-crds) устанавливаются отдельно и помечены как Hidden — они управляются автоматически.


2. Управление сервисами через платформу

2.1. Как работает cluster-manager

  • Cluster-manager читает объекты ShturvalServiceConfig и обеспечивает, чтобы состояние чартов в кластере соответствовало им.
  • Объекты SSC создаются и обновляются платформой при обновлениях; не редактируйте SSC вручную — изменения могут быть перезаписаны.
  • Для кастомизации используйте ShturvalServicePatch (SSP), который накладывается поверх SSC.

2.2. Включение и отключение сервисов

Управление режимом сервиса — через поле mode в SSC или SSP:

Значение modeПоведение
AutoСервис управляется cluster-manager автоматически
DisabledСервис отключён

Инфраструктурные провайдеры помечаются как критические Critical (недоступно отключение сервиса в графическом интерфейсе платформы) только для тех сред, где кластер управления развёрнут с соответствующим провайдером: OpenStack (shturval-capos), Shturval v2 (shturval-capsm), vSphere (shturval-capvs) или oVirt (shturval-capov). Если на ранее установленной платформе неиспользуемые провайдеры остались включёнными, их можно отключить по инструкции Отключение неиспользуемых сервисов провайдеров.

2.3. Зависимости между сервисами

Cluster-manager соблюдает порядок установки. Основные зависимости:

СервисЗависит от
shturval-capishturval-capi-crds, shturval-local-csi, shturval-ingress-controller
shturval-capsmshturval-capsm-crds, shturval-cert-manager

3. Диагностика

3.1. Состояние сервисов

Что проверитьКоманда
Все SSC в кластереkubectl get shturvalserviceconfig
Все SSP в кластереkubectl get shturvalservicepatch
Статус конкретного SSCkubectl describe shturvalserviceconfig <имя>
Поды CAPSMkubectl get pods -n shturval-capsm
Поды CAPIkubectl get pods -n capi-system
Поды мониторингаkubectl get pods -n victoria-metrics

3.2. Типичные проблемы

СимптомВозможная причинаДействие
Под сервиса не запускаетсяНекорректные параметры в SSPПроверить kubectl describe shturvalservicepatch <имя> и логи пода
SSC постоянно обновляетсяКонфликт SSP с платформенным SSCУбедиться, что SSP не перезаписывает поля, которые обновляет платформа
Провайдер CAPI не готовНе установлены CRDПроверить статус чарта *-crds и зависимостей
Сервис отключён неожиданноОбновление платформы изменило modeПроверить SSC и историю обновлений платформы

3.3. Диагностика CAPSM

Подробное руководство по диагностике провайдера manual — в shturval-capsm §4.


4. Жизненный цикл сервисов

4.1. Установка сервиса

  1. Cluster-manager читает SSC для сервиса.
  2. Проверяет зависимости (все зависимые чарты должны быть установлены).
  3. Применяет накопленные SSP (merges spec.customvalues).
  4. Устанавливает или обновляет Helm-чарт с результирующими values.
  5. Ожидает, пока поды перейдут в Running.

4.2. Обновление платформы

При обновлении платформы Штурвал cluster-manager обновляет SSC с новыми версиями чартов. SSP при этом не затрагиваются, но результирующие values могут измениться (если новая версия чарта добавила или переименовала поля).

4.3. Критические сервисы

Сервисы с флагом Critical (например, провайдер, с которым развёрнут кластер управления) перезапускаются cluster-manager автоматически при сбое. Ручное удаление пода для перезапуска — допустимо.


5. Кастомизация через SSP

Общая инструкция по созданию и применению патчей — Как управлять CustomValues сервисов. Ниже — примеры в контексте cluster-manager и CAPSM.

5.1. Что такое SSP

ShturvalServicePatch — объект Kubernetes, с помощью которого администратор переопределяет параметры системного сервиса поверх платформенного SSC.

Основные поля SSP:

ПолеОписание
spec.shturvalServiceConfigNameИмя целевого SSC (какой сервис патчим)
spec.customvaluesПереопределяемые значения; структура соответствует values.yaml чарта

5.2. Расширение прав cluster-manager

Cluster-manager при раскатки кластера применяет манифесты из ClusterProfile в кластере управления. Если в профиле заданы ресурсы, например, users API-группы auth.shturval.tech или pods, стандартных прав может быть недостаточно. В таком случае проверка Secret с манифестами завершится ошибкой, а профиль кластера получит статус False (в GUI Not Ready).

Создание профилей и диагностика ошибок прав описаны на странице Как создавать и применять профили кластеров (ClusterProfile).

Дефолтные права Cluster-manager прописаны в ClusterRole - shturval-cluster-manager-role.

Чтобы добавить права, создайте отдельную ClusterRole и агрегируйте её права в роль shturval-cluster-manager-role одним из способов:

  • добавьте лейбл rbac.shturval.tech/shturval-cluster-manager-aggregated-role: "true";
  • добавьте кастомный лейбл в ClusterRole и укажите этот лейбл в spec.customvalues.roleAggregateLabels для shturval-cluster-manager.

Пример ShturvalServicePatch:

apiVersion: ops.shturval.tech/v1beta2
kind: ShturvalServicePatch
metadata:
  name: cluster-manager-custom
spec:
  shturvalServiceConfigName: shturval-cluster-manager
  customvalues:
    roleAggregateLabels:
      custom/auth-user-role: "true"

Подробный порядок добавления прав для профилей кластеров описан в разделе Если не хватает прав на платформенные манифесты.

5.3. Пример: изменить ресурсы контроллера CAPSM

apiVersion: ops.shturval.tech/v1beta1
kind: ShturvalServicePatch
metadata:
  name: capsm-resources-patch
  labels:
    ops.shturval.tech/ssc: shturval-capsm
spec:
  shturvalServiceConfigName: shturval-capsm
  customvalues:
    controllerManager:
      manager:
        resources:
          limits:
            cpu: "500m"
            memory: "512Mi"

5.4. Пример: включить ServiceMonitor для CAPSM

apiVersion: ops.shturval.tech/v1beta1
kind: ShturvalServicePatch
metadata:
  name: capsm-servicemonitor
spec:
  shturvalServiceConfigName: shturval-capsm
  customvalues:
    serviceMonitor:
      enabled: true

5.5. Что не следует делать через SSP

  • Не изменяйте поле mode провайдеров CAPI через SSP без согласования с платформой.
  • Не устанавливайте nodeSelector или affinity, конфликтующие с политикой размещения управляющего кластера.
  • Не изменяйте namespace через SSP — он задаётся в SSC и является частью идентификации сервиса.

6. Справочник: структура SSC и SSP

6.1. ShturvalServiceConfig (справочно)

SSC создаётся и обновляется платформой. Ключевые поля:

ПолеОписание
spec.chartИмя Helm-чарта
spec.reponameРепозиторий чарта
spec.versionВерсия чарта
spec.namespaceNamespace установки
spec.modeРежим управления (Auto, Disabled)
spec.customvaluesБазовые values платформы
spec.dependencyСписок зависимых чартов

6.2. ShturvalServicePatch

ПолеТипОписание
spec.shturvalServiceConfigNamestringИмя целевого SSC
spec.customvaluesobjectПереопределяемые values; структура соответствует values.yaml целевого чарта

Поле spec.customvalues в SSP накладывается поверх spec.customvalues в SSC — не заменяет его полностью. Используйте только те ключи, которые нужно переопределить.

6.3. Соответствие чартов и параметров

Параметры spec.customvalues (в SSC и SSP) соответствуют values.yaml конкретного чарта:

  • CAPSM: структура values.yaml описана в shturval-capsm §6.
  • Другие сервисы: структура values описана в документации соответствующего чарта.