Навигация
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:
- Прочитает манифесты из репозитория
- Сравнит с текущим состоянием в кластере
- Применит изменения (создание, обновление, удаление ресурсов)
Автоматическая синхронизация (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)
Постепенное переключение трафика на новую версию:
- Создаётся новая версия с минимальным процентом трафика
- Вы наблюдаете за метриками
- Увеличиваете процент или откатываете
Настраивается при создании/редактировании приложения.
Сине-зелёный (Blue-Green)
Две полные копии приложения. Переключение трафика происходит мгновенно через смену Service selector:
- «Зелёная» версия деплоится рядом с «синей»
- Вы проверяете
- Переключаете Service на «зелёную»
- «Синюю» удаляете
Мониторинг деплоя
На странице приложения доступны:
- Статус здоровья - по каждому ресурсу (Healthy, Progressing, Degraded, Missing)
- Логи подов - нажмите на под чтобы увидеть логи
- Диагностика подов - статус контейнеров, количество рестартов
- События - хронология действий (синхронизации, ошибки, откаты)
Откат
Если новая версия нестабильна:
- Откройте приложение в RiverCD
- Нажмите «Откат»
- Выберите предыдущую версию из списка синхронизаций
RiverCD применит манифесты из предыдущей успешной синхронизации.
Удаление неиспользуемых ресурсов (Prune)
Если вы удалили манифест из репозитория - ресурс в кластере остаётся. Чтобы удалить его:
- При синхронизации - включите опцию «Удалять ресурсы, отсутствующие в репозитории»
- Или нажмите «Prune» на странице приложения для разового удаления