Гайды
GitOps с Argo CD
Application и sync policy, Helm-источник, AppProject, безопасность UI и много окружений.
~9 мин чтения
GitOps с Argo CD
GitOps — желаемое состояние кластера хранится в Git; контроллер (Argo CD) сравнивает кластер с репозиторием и синхронизирует (pull-based деплой). K8s-объекты — Pods, Deployments и Services; чарты — Helm.
1. Компоненты Argo CD
- Application — связка repo + path + target cluster/namespace + sync policy.
- AppProject — RBAC, whitelist репозиториев и ресурсов.
- Repo credential — SSH key / HTTPS token.
2. Пример Application (Helm)
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: api
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/gitops.git
path: charts/api
targetRevision: main
helm:
valueFiles:
- values-prod.yaml
destination:
server: https://kubernetes.default.svc
namespace: prod
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
prune удаляет ресурсы, которых больше нет в Git — осторожно с манифестами.
Откат: argocd app rollback <name> <revision> или кнопка в UI — быстрый возврат к известному Git commit / ревизии Helm. Для образов без изменения Git используют Argo CD Image Updater или отдельный pipeline, который коммитит новый тег в values — иначе Git перестаёт быть единственным источником правды.
3. Sync и health
Argo показывает OutOfSync, Progressing, Degraded. Hooks (PreSync Job) для миграций.
4. Много окружений
Ветки dev/prod или overlay каталоги (kustomize) + отдельные Application.
5. Безопасность
- Ограничить cluster admin токены Argo.
- SSO (OIDC) для UI.
- Подпись образов / policy (Kyverno, OPA Gatekeeper) дополняет GitOps.
6. ApplicationSet и мультикластер
ApplicationSet генерирует Application из списка кластеров или из Git generator'ов — меньше копипасты. Для мультикластера — отдельные AppProject и RBAC на уровне ролей Argo CD.
7. Секреты и Helm
helm secrets или SOPS в Git; External Secrets Operator синхронизует из Vault/облака. Не храните raw kubeconfig с правами cluster-admin в репозитории приложения.
8. Чек-лист
- Разделение read-only CI токена к repo vs human write.
- Ручной sync для prod или approval plugin.
- Бэкап Application manifests и project settings.
-
syncWindowдля запрета деплоя в бизнес-часы критичных систем. - Ресурсные лимиты на repo-server и application-controller.
Дальше: Ingress · тег GitOps