Перейти к основному содержимому

ArgoCD — GitOps деплой

Все сервисы деплоятся через ArgoCD по GitOps-модели: ArgoCD следит за изменениями в deployment-репозиториях и применяет их в кластерах.

Инстансы ArgoCD

По одному инстансу ArgoCD на каждый кластер:

ОкружениеURL
Media devhttps://argocd-mysport-dev.infra.softproduct.pro
Media prodhttps://argocd-mysport-prod.infra.softproduct.pro
Scount devhttps://argocd-scount-dev.infra.softproduct.pro
Scount prodhttps://argocd-scount-prod.infra.softproduct.pro

Структура репозиториев

Deployment-репозитории разделены по уровням ответственности:

ТипРепозиторийЧто хранит
Инфраструктурныйinfrastructure/media, infrastructure/scount, infrastructure/helm-chartsCluster-level ресурсы, ArgoCD Application sets, namespace-конфиги
Сервисный (Media)media/deploymentHelm values для всех Media-сервисов
Сервисный (Scount)scount/deploymentHelm 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)