argoCD 를 통해 쿠버네티스 에 CI / CD 를 비교적 손쉽게 적용할 수 있었다. 어떤 방식으로 CI / CD 가 이루어질 수 있는 지에 대해서 공유하고 나의 프로젝트를 기반으로 설명하려 한다.
개발자가 소스코드를 수정하면 자동으로 쿠버네티스에 반영되도록 하였다. 아래와 같은 흐름으로 진행된다.

1. 개발자 가 Source Repo 에 커밋한다.
2. gitHub Actions 이 트리거 된다.
3. gitHub Actions 은 도커 이미지를 빌드하고 새로운 태그를 생성하여 도커 허브에 업로드한다.
4. gitHub Actions 은 Menifest Repo 내에 정의되어 있는 이미지의 태그를 새로 생성된 태그로 변경한다.
5. argoCD 는 주기적으로 Menifest Repo 를 확인하여 사용자가 원하는 쿠버네티스 구성 상태 (Desired State) 와 현재 구성되어 있는 상태를 비교한다.
6. 확인한 현재 상태가 Desired State 가 아닌 경우 Desired State 가 되도록 Cluster 에게 Desired State 상태가 되도록 요청한다.
Menifest Repo는 Cluster 의 리소스가 선언적으로 정의하고 있다. (kustomization과helm등이 사용된다.)
실제로 내가 운용하고 있는 프로젝트의 자료이다.
Menifest Repo 에 이미지 태그 수정