GitRiver GitRiver
EN
Навигация

GitOps-деплой (RiverCD)

Как деплоить приложения в Kubernetes прямо из GitRiver: кластеры, приложения, стратегии

RiverCD - встроенный GitOps-контроллер для деплоя в Kubernetes. Отдельная установка не нужна: кластер подключается к GitRiver, и деплой управляется из интерфейса репозитория.

Зачем

  • Деплоить из GitRiver без внешних инструментов
  • Видеть состояние деплоя рядом с кодом и CI/CD
  • Использовать канареечный и сине-зелёный деплой
  • Обнаруживать расхождения между желаемым и фактическим состоянием кластера

RiverCD - бесплатная функция, доступна в Community.


Подключение кластера

Перед использованием RiverCD подключите Kubernetes-кластер.

1. Откройте администрирование

Администрирование -> «Кластеры» -> «Добавить кластер»

2. Заполните данные

  • Имя - понятное название (например, «Production», «Staging»)
  • API URL - адрес API-сервера кластера (например, https://k8s.example.com:6443)
  • Сертификат CA - CA-сертификат кластера (PEM)
  • Токен - сервисный токен для доступа (Service Account token)
  • Namespace по умолчанию - в каком namespace создавать ресурсы

3. Проверьте подключение

Нажмите «Тест подключения». Если всё правильно - появится сообщение об успехе.

Можно подключить несколько кластеров (multi-cluster) для разных окружений.


Создание приложения для деплоя

Приложение RiverCD - это связка между репозиторием с манифестами и кластером.

1. Откройте репозиторий

В репозитории, где хранятся Kubernetes-манифесты, перейдите во вкладку «RiverCD» (или «Деплой» - зависит от локализации).

2. Создайте приложение

Нажмите «Создать приложение» и укажите:

  • Имя - идентификатор приложения
  • Кластер - куда деплоить (из списка подключённых)
  • Namespace - в каком namespace
  • Путь в репозитории - директория с манифестами (например, k8s/ или deploy/)
  • Ветка - из какой ветки брать манифесты (по умолчанию - основная)

3. Синхронизируйте

Нажмите «Синхронизировать» - RiverCD применит манифесты из указанной директории в кластер.


Поддерживаемые ресурсы

RiverCD работает с любыми Kubernetes-ресурсами:

  • Workloads: Deployment, StatefulSet, DaemonSet, Job, CronJob
  • Networking: Service, Ingress
  • Configuration: ConfigMap, Secret
  • Storage: PersistentVolumeClaim
  • Scaling: HorizontalPodAutoscaler
  • Custom Resources (CRD): любые произвольные ресурсы

Синхронизация

Ручная синхронизация

Нажмите «Синхронизировать» на странице приложения. RiverCD:

  1. Прочитает манифесты из репозитория
  2. Сравнит с текущим состоянием в кластере
  3. Применит изменения (создание, обновление, удаление ресурсов)

Автоматическая синхронизация (auto-sync)

Если включена - RiverCD автоматически синхронизирует кластер при каждом push в указанную ветку. Вам не нужно нажимать кнопку вручную.

Волны синхронизации (Sync Waves)

Порядок применения ресурсов. Например: сначала ConfigMap, потом Deployment, потом Ingress.

Задаётся через аннотацию в манифесте:

metadata:
  annotations:
    argocd.argoproj.io/sync-wave: "1"

Ресурсы с меньшим числом применяются раньше. По умолчанию - волна 0.

Хуки (Pre/Post Sync)

Задачи, которые выполняются до или после синхронизации (миграции БД, тесты после деплоя):

metadata:
  annotations:
    argocd.argoproj.io/hook: PreSync

Обнаружение расхождений (Drift Detection)

RiverCD сравнивает желаемое состояние (из репозитория) с фактическим (в кластере). Если кто-то изменил ресурс вручную через kubectl - это обнаружится.

На странице приложения:

  • In Sync - кластер соответствует репозиторию
  • Out of Sync - есть расхождения (показывается diff)

Нажмите «Diff» чтобы увидеть конкретные различия.

Image Drift Detection

Отдельная проверка: образ в кластере совпадает с образом в манифесте? Полезно, если кто-то вручную откатил образ через kubectl set image.


Стратегии деплоя

Rolling (по умолчанию)

Стандартный Kubernetes rolling update. Поды обновляются постепенно.

Канареечный (Canary)

Постепенное переключение трафика на новую версию:

  1. Создаётся новая версия с минимальным процентом трафика
  2. Вы наблюдаете за метриками
  3. Увеличиваете процент или откатываете

Настраивается при создании/редактировании приложения.

Сине-зелёный (Blue-Green)

Две полные копии приложения. Переключение трафика происходит мгновенно через смену Service selector:

  1. «Зелёная» версия деплоится рядом с «синей»
  2. Вы проверяете
  3. Переключаете Service на «зелёную»
  4. «Синюю» удаляете

Мониторинг деплоя

На странице приложения доступны:

  • Статус здоровья - по каждому ресурсу (Healthy, Progressing, Degraded, Missing)
  • Логи подов - нажмите на под чтобы увидеть логи
  • Диагностика подов - статус контейнеров, количество рестартов
  • События - хронология действий (синхронизации, ошибки, откаты)

Откат

Если новая версия нестабильна:

  1. Откройте приложение в RiverCD
  2. Нажмите «Откат»
  3. Выберите предыдущую версию из списка синхронизаций

RiverCD применит манифесты из предыдущей успешной синхронизации.


Удаление неиспользуемых ресурсов (Prune)

Если вы удалили манифест из репозитория - ресурс в кластере остаётся. Чтобы удалить его:

  • При синхронизации - включите опцию «Удалять ресурсы, отсутствующие в репозитории»
  • Или нажмите «Prune» на странице приложения для разового удаления