App of apps паттерн
Тема дорожной карты · Kubernetes
Паттерн App of Apps — это архитектурный подход в Argo CD, при котором один корневой ресурс Application управляет набором дочерних ресурсов Application, обеспечивая иерархические GitOps-развёртывания в нескольких пространствах имён или кластерах Kubernetes из одного Git-репозитория. Каждое дочернее приложение в этом паттерне указывает на собственный Helm-чарт или Kustomize-оверлей, а родительское приложение отслеживает директорию манифестов Application, хранящихся в Git — добавить новый сервис так же просто, как закоммитить новый YAML-файл. Паттерн App of Apps устраняет ручные шаги начальной настройки: команда argocd app sync <root-app> каскадно проходит по всему дереву приложений и приводит каждое дочернее приложение к желаемому состоянию. Этот подход хорошо сочетается с Helmfile для многосредовых кластеров Kubernetes и считается лучшей практикой управления GitOps-рабочими процессами в масштабах флота в Argo CD.
Как это работает
App of apps паттерн рассматривает git-репозиторий как источник истины для состояния кластера. Агент внутри кластера (Argo CD, Flux CD) непрерывно сводит состояние кластера к тому, что в git: коммит в main триггерит redeployment; ручной kubectl edit откатывается агентом. Pull request становятся deployment-предложениями с reviewer; audit trail бесплатно из git history.
Когда применять
Принимайте App of apps паттерн когда (а) в команде больше 2-3 инженеров и прямой доступ к кластеру становится рискованным, (б) нужны audit trails для compliance, (в) хотите rollback deployment через git revert вместо ad-hoc kubectl. Пропустите GitOps для очень маленьких команд, где прямой kubectl-доступ достаточно быстрый — overhead превышает выгоду до тех пор, пока координация не становится важной.
Типичные ошибки
GitOps-ловушки: configuration drift между git и кластером (ручные изменения не откатываются, потому что агент неправильно настроен); секреты в plaintext git (используйте sealed-secrets или External Secrets); слишком много сред в одном репо (медленный CI, большой blast radius). Относитесь к GitOps-репо как к production infrastructure: PR review, branch protection, deployment workflows.