Гайды

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)

yaml
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