PaaS/CI CD

App of Apps 패턴으로 배포하기. 그리고 나의 생각

armyost 2023. 11. 15. 16:57
728x90

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. 이렇게 배포하면 아래와 같이 여러개의 서비스가 다 같이 배포된다.