본문으로 건너뛰기

App of Apps

여러 마이크로서비스로 구성된 복잡한 애플리케이션 스택을 관리할 때, 개별 Argo CD 애플리케이션을 수동으로 생성하고 유지 관리하는 것은 운영상 어려움이 될 수 있습니다. App of Apps 패턴은 단일 부모 애플리케이션을 통해 여러 애플리케이션을 관리할 수 있게 함으로써 이러한 복잡성을 해결합니다.

App of Apps 패턴은 다른 Argo CD 애플리케이션을 정의하는 매니페스트를 포함하는 하나의 부모 Argo CD 애플리케이션을 생성하여 Argo CD의 선언적 접근 방식을 활용합니다. 이는 부모 애플리케이션이 애플리케이션 정의를 포함하는 Git 리포지토리를 모니터링하고, 이러한 매니페스트의 변경 사항에 따라 자동으로 자식 애플리케이션을 생성, 업데이트 또는 삭제하는 계층 구조를 만듭니다.

이 패턴은 다음과 같은 여러 운영상 이점을 제공합니다:

  • 중앙 집중식 관리: 모든 애플리케이션 정의가 단일 Git 리포지토리에서 유지 관리되어 배포 환경에 대한 통합된 뷰를 제공합니다
  • 환경 일관성: 선언적 구성을 유지함으로써 여러 환경에서 일관된 애플리케이션 배포를 보장합니다
  • 운영 효율성: 수동 오버헤드를 줄이고 구성 드리프트 가능성을 줄입니다
  • GitOps 준수: Git을 애플리케이션 포트폴리오의 단일 소스로 유지하는 원칙을 유지합니다

워크플로는 다음과 같이 작동합니다: 부모 애플리케이션은 Argo CD Application 매니페스트를 포함하는 Git 리포지토리를 지속적으로 모니터링합니다. 변경 사항이 리포지토리에 커밋되면 Argo CD가 이러한 수정 사항을 감지하고 자동으로 자식 애플리케이션의 라이프사이클을 관리합니다. 그런 다음 각 자식 애플리케이션은 해당 소스 리포지토리에서 리소스를 동기화합니다.

일반적인 리포지토리 구조는 다음과 같을 수 있습니다:

app-of-apps/
├── parent-app.yaml # 부모 애플리케이션
└── applications/ # 개별 앱 정의
├── frontend-app.yaml
├── backend-app.yaml
└── database-app.yaml

이 패턴은 전체 환경을 부트스트래핑하고 여러 클러스터에서 일관성을 유지하는 데 특히 효과적입니다. Argo CD UI를 통해 개별 애플리케이션을 수동으로 구성하는 대신, 전체 애플리케이션 포트폴리오를 선언적으로 정의하고 Argo CD가 배포 라이프사이클을 자동으로 관리하도록 할 수 있습니다.