Skip to content

Установка SyncMaster в Kubernetes

Этот Helm chart предназначен для развертывания приложения SyncMaster в Kubernetes. Он включает компоненты сервера, планировщика (scheduler) и фронтенда, а также опциональные зависимости в виде PostgreSQL и RabbitMQ.

Пререквизиты

Для запуска приложения Syncmaster требуются следующие компоненты:

  • Helm 3.8.0+
  • Kubernetes 1.23+
  • PV provisioner, который уже запущен в вашей инфраструктуре для запуска pvc

Зависимости

Для запуска приложения Syncmaster требуются следующие сервисы:

  • Postgresql 16+
  • Rabbitmq 3.10+
  • Для запуска приложения требуется база данных PostgreSQL и брокер сообщений RabbitMQ. Эти компоненты можно развернуть с помощью chart (по умолчанию они включены), или использовать внешние экземпляры. В случае использования внешних сервисов отключите их в values.yaml, установив postgresql.enabled: false и rabbitmq.enabled: false, и укажите соответствующие адреса, порты, пользователей и пароли в разделах syncmaster.db и syncmaster.rabbitmq.
  • Перед установкой Helm чарта необходимо сгенерировать Fernet-ключ для шифрования credentials.

Если ключ уже сохранен в виде K8S secret:

syncmaster:
...
  secrets:
    encryptionSecret:
      # Создайте секрет с ключом encryptionSecret в данных секрета
      existingSecretName: "my-secret"

Если нет:

syncmaster:
...
  secrets:
    encryptionSecret:
      # Ключ Fernet для шифрования/дешифрования данных учетных записей.
      # !!! СГЕНЕРИРУЙТЕ СВОЮ СОБСТВЕННУЮ КОПИЮ ДЛЯ ПРОДАКШЕНА !!!
      secretValue: "abc123"
  • В зависимости от используемого AuthProvider может также потребоваться сгенерировать keycloakAuthCookieSecret + keycloakAuthClientSecret / dummyAuthSecret (просто рандомные значения любой длины, не обязательно Fernet).

Установка

  1. Добавьте репозиторий Helm (если chart находится в репозитории):

    helm repo add syncmaster-repo https://example.com/charts
    helm repo update
    
  2. Установите chart:

    helm install syncmaster syncmaster-repo/syncmaster --values values.overrides.yaml
    

    Или используйте локальный chart:

    helm install syncmaster ./path/to/chart --values values.overrides.yaml
    

Обновление и удаление

Обновить приложение:

helm repo update syncmaster-repo
helm upgrade syncmaster syncmaster-repo/syncmaster --values values.override.yaml

Удалить приложение:

helm uninstall syncmaster

Не забудьте проверить удаление PVC для PostgreSQL, они не удаляются автоматически.

Конфигурация

Chart использует файл values.overrides.yaml для настройки. Ниже описаны ключевые параметры. Полный список см. в оригинальном values.yaml.

Глобальные настройки

  • global.imageRegistry: Регистри образов (по умолчанию пустой).
  • global.imagePullSecrets: Секреты для pull образа.
  • nameOverride и fullnameOverride: Переопределение имен K8s сущностей.

SyncMaster общие настройки

  • syncmaster.initContainer.image: Образ для init-контейнера (по умолчанию busybox).
  • syncmaster.db: Настройки подключения к PostgreSQL (host, port, name, user, password).
  • syncmaster.rabbitmq: Настройки подключения к RabbitMQ (host, port, user, password).
  • syncmaster.logging: Настройки логирования.
  • syncmaster.secrets.encryptionKey: Секреты для шифрования кредов.
  • syncmaster.secrets.keycloakAuthSessionKey: Секреты для Keycloak сессии (cookie).
  • syncmaster.secrets.dummyAuthSecretKey: Секреты для DummyAuth JWT токенов.
  • syncmaster.monitoring.serviceMonitor.enabled: Включение ServiceMonitor для Prometheus (по умолчанию false).

Server

  • server.image.repository, tag, pullPolicy: Образ сервера (по умолчанию mtsrus/syncmaster-server).
  • server.config: Конфигурация сервера.
  • server.auth: Параметры аутентификации.
  • server.superusers: Список пользователей, которых необходимо сделать суперадминами.
  • server.args: Аргументы командной строки (например, --forwarded-allow-ips '*' --root-path /api).
  • server.replicaCount: Количество реплик (по умолчанию 1).
  • server.service.type и port: Тип сервиса и порт (по умолчанию ClusterIP:8000).
  • server.ingress.enabled: Включение Ingress (по умолчанию true). Настройки: path, host, annotations (для nginx-ingress).
  • server.resources: Лимиты и запросы ресурсов (CPU, memory).
  • server.livenessProbe: Проверка живучести (HTTP GET /monitoring/ping).

Scheduler

  • scheduler.image.repository, tag, pullPolicy: Образ планировщика (по умолчанию mtsrus/syncmaster-scheduler).
  • scheduler.config: Конфигурация шедулера.
  • scheduler.resources: Лимиты и запросы ресурсов.

Frontend

  • frontend.image.repository, tag, pullPolicy: Образ фронтенда (по умолчанию mtsrus/syncmaster-ui).
  • frontend.config: Конфигурация UI.
  • frontend.replicaCount: Количество реплик (по умолчанию 1).
  • frontend.service.type и port: Тип сервиса и порт (по умолчанию ClusterIP:3000).
  • frontend.ingress.enabled: Включение Ingress (по умолчанию true). Настройки: path, host, annotations (для nginx-ingress).
  • frontend.resources: Лимиты и запросы ресурсов.
  • frontend.livenessProbe: Проверка живучести (HTTP GET /).

PostgreSQL (опционально)

  • postgresql.enabled: Включение встроенного PostgreSQL (по умолчанию true).
  • postgresql.fullnameOverride: Имя (по умолчанию postgres-syncmaster).
  • postgresql.auth: Учетные данные (username, password, database).
  • postgresql.global.security.imageRegistry: Кастомный registry для образа Postgres.
  • postgresql.global.security.allowInsecureImages: Скачивать образ по http.

RabbitMQ (опционально)

  • rabbitmq.enabled: Включение встроенного RabbitMQ (по умолчанию true).
  • rabbitmq.fullnameOverride: Имя (по умолчанию rabbitmq-syncmaster).
  • rabbitmq.auth: Учетные данные (username, password).
  • rabbitmq.global.security.imageRegistry: Кастомный registry для образа RabbitMQ.
  • rabbitmq.global.security.allowInsecureImages: Скачивать образ по http.

Дополнительные настройки

  • Для всех компонентов доступны: env, volumes, volumeMounts, podAnnotations, podLabels, podSecurityContext, securityContext, nodeSelector, tolerations, affinity.
  • Ingress поддерживает TLS (закомментировано в values.yaml, настройте по необходимости).

Monitoring

Для включения сбора метрик, включите .Values.syncmaster.monitoring.serviceMonitor.enabled в значение true. Также можно добавить labels для serviceMonitor с помощью yaml .Values.syncmaster.monitoring.serviceMonitor.labels

Метрики отображаются на внешнем URL с location /api/monitoring/metrics или /monitoring/metrics локально внутри пода.

Проверка работоспособности

Все поды компонентов запущены и принимают трафик. Вы можете проверить работу UI или API по урлу указанном в Ingress, например syncmaster.example.com и работу API по syncmaster.example.com/api/monitoring/ping.

Рекомендации

  • Перед производственным использованием сгенерируйте пароли и секреты.
  • Настройте мониторинг и логирование в соответствии с вашим кластером.
  • Для детальной документации по SyncMaster обратитесь к официальной документации.