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
에 이미지 태그 수정