Установка 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).
Установка
-
Добавьте репозиторий Helm (если chart находится в репозитории):
helm repo add syncmaster-repo https://example.com/charts helm repo update -
Установите 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: Проверка живучести (HTTPGET /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: Проверка живучести (HTTPGET /).
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 обратитесь к официальной документации.