Менеджер клиентских кластеров (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). Провайдеры Basis Dynamix (shturval-capbd), Yandex Cloud (shturval-capy) и vCloud Director (shturval-capvcd) не относятся к критическим сервисам.

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

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

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

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

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

Что проверить Команда
Все SSC в кластере kubectl get shturvalserviceconfig
Все SSP в кластере kubectl get shturvalservicepatch
Статус конкретного SSC kubectl describe shturvalserviceconfig <имя>
Поды CAPSM kubectl get pods -n shturval-capsm
Поды CAPI kubectl 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 (например, все провайдеры CAPI) перезапускаются 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.namespace Namespace установки
spec.mode Режим управления (Auto, Disabled)
spec.customvalues Базовые values платформы
spec.dependency Список зависимых чартов

6.2. ShturvalServicePatch

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

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

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

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

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