App of Apps 패턴이란 어떤 규모의 소프트웨어를 구성하는 모듈들을 모아서 Application으로 정의한다.
※ MSA 로 변화하면서 전체 소프트웨어를 구성하는 독립적인 모듈들이 많아 졌다. 사실 각 요소 어플리케이션은 생명주기를 모듈간 의존성 없도록 독립적으로 가져가는게 맞다. 그러기위해서 MSA를 한 것이 아닌가... 근데 초기 Provisioning은 한꺼번에 해줄 필요는 있어서 App of Apps로 하는게 효율적으로 보인다.
이때 Application이란 하나의 Profile 같은것이다. 아래 공식가이드는 Helm을 기반으로 하였는데, ArgoCD는 Helm 관련한 호환성이 있어서 Helm으로 정의한 소프트웨어 배포도 수월하게 할 수 있다.
필자의 생각으로는 App of Apps Repository에는 Application Profile에 대한 내용들만 갖고 있고, 실제 각 모듈의 k8s 구성요소는 각자 Repository를 갖고 있는것이 좋아보인다. 그리고 Application Profile에서 참조하는 각 모듈의 Git 주소를 values.yaml에 변수화 해서 갖고 있으면 이상적으로 보인다.
공식가이드 : https://argo-cd.readthedocs.io/en/stable/operator-manual/cluster-bootstrapping/
Cluster Bootstrapping - Argo CD - Declarative GitOps CD for Kubernetes
Cluster Bootstrapping This guide is for operators who have already installed Argo CD, and have a new cluster and are looking to install many apps in that cluster. There's no one particular pattern to solve this problem, e.g. you could write a script to cre
argo-cd.readthedocs.io
Guest Book 프로젝트 아키텍처
1. 아래 Github에서 Application Chart 코드를 내 github으로 fort 받는다.
https://github.com/armyost/ArgoRollout/tree/main/appofapps
values.yaml 파일에서 변경이 필요한 것은 바꾼다. 예를들어 destination server라던지...
spec:
destination:
server: https://kubernetes.default.svc
source:
repoURL: https://github.com/argoproj/argocd-example-apps
targetRevision: HEAD
2. ArgoCD 화면에서 Application을 추가 등록한다.
- Repository 경로만 잘 설정하면
- 자동으로 Helm으로 인식하고 HELM프로퍼티를 가져온다.
3. 이렇게 배포하면 아래와 같이 여러개의 서비스가 다 같이 배포된다.
'PaaS > CI CD' 카테고리의 다른 글
Gitlab 의 Project내의 특정 파일을 Access Token 만으로 접근하여 다운로드 (1) | 2023.12.08 |
---|---|
Github Actions의 Workflow에서 GCP(Google Cloud Platform) 인증받기 (1) | 2023.12.07 |
Argo Rollout으로 Canary 배포하기 (0) | 2023.11.15 |
Argo Rollout으로 Blue/Green 배포하기 (0) | 2023.11.15 |
Blue / Green 배포의 라우팅 포인트를 어디로 가져가야 하는가? (0) | 2023.11.09 |