ArgoCD — GitOps деплой
Все сервисы деплоятся через ArgoCD по GitOps-модели: ArgoCD следит за изменениями в deployment-репозиториях и применяет их в кластерах.
Инстансы ArgoCD
По одному инстансу ArgoCD на каждый кластер:
| Окружение | URL |
|---|---|
| Media dev | https://argocd-mysport-dev.infra.softproduct.pro |
| Media prod | https://argocd-mysport-prod.infra.softproduct.pro |
| Scount dev | https://argocd-scount-dev.infra.softproduct.pro |
| Scount prod | https://argocd-scount-prod.infra.softproduct.pro |
Структура репозиториев
Deployment-репозитории разделены по уровням ответственности:
| Тип | Репозиторий | Что хранит |
|---|---|---|
| Инфраструктурный | infrastructure/media, infrastructure/scount, infrastructure/helm-charts | Cluster-level ресурсы, ArgoCD Application sets, namespace-конфиги |
| Сервисный (Media) | media/deployment | Helm values для всех Media-сервисов |
| Сервисный (Scount) | scount/deployment | Helm values для всех Scount-сервисов |
Структура сервисного деплой-репозитория
media/deployment/
├── mysport-dev/ # dev окружение
│ ├── <service-name>/
│ │ └── values.yaml
│ └── ...
├── mysport-prod/ # prod окружение Media
│ ├── <service-name>/
│ │ └── values.yaml
│ └── ...
└── witisi-prod/ # prod окружение Witisi
├── <service-name>/
│ └── values.yaml
└── ...
Аналогично для scount/deployment/ (папки dev/ и prod/).
Как работает деплой сервиса
Разработчик пушит образ в Container Registry
↓
Обновляет tag в values.yaml в deployment-репо
↓
ArgoCD обнаруживает изменение (polling ~3 мин или webhook)
↓
ArgoCD применяет Helm chart с новыми values
↓
Kubernetes обновляет Deployment/StatefulSet
values.yaml — структура
Каждый сервис имеет свой values.yaml. Глобальные параметры кластера вынесены в верхний уровень через global:
<service-name>:
image:
tag: "1.2.3-abc1234" # версия образа
global:
imageRegistry:
repository: cr.yandex/<registry-id>
secret: cr-yandex-secret
cluster:
environment: dev # dev | prod
appState: production # production | maintenance
Обновление образа (типовой флоу)
CI/CD пайплайн сервиса после успешной сборки автоматически коммитит новый тег в deployment-репозиторий — ArgoCD применяет изменение.
Ручное обновление:
# Отредактировать tag в values.yaml
vim media/deployment/mysport-dev/<service>/values.yaml
# Закоммитить
git add . && git commit -m "chore: bump <service> to 1.2.3"
git push
# ArgoCD применит автоматически
Режим обслуживания (maintenance mode)
Переключение выполняется через параметр appState в values:
global:
cluster:
appState: maintenance # production → maintenance
Подробнее о механизме maintenance в контексте миграции на Gateway API — см. Ingress → Gateway API.
Container Registry
Образы хранятся в Yandex Container Registry:
- Media:
cr.yandex/crpar19uttci5ki264cd - Авторизация в кластере: секрет
cr-yandex-secret(imagePullSecret)