CI 파이프라인 자동화
CI 파이프라인 자동화 (Automation from CI Pipelines)
Argo CD는 원하는 구성 변경을 먼저 Git에 푸시하고 클러스터 상태가 Git의 원하는 상태로 동기화되는 GitOps 배포 모델을 따릅니다. 이 문서는 CI 파이프라인에서 새 컨테이너 이미지를 Argo CD가 관리하는 클러스터로 푸시하는 워크플로우를 안내합니다.
출처: 문서
본문
CI 파이프라인에서 자동화
Argo CD는 GitOps 배포 모델을 따릅니다. 원하는 구성 변경을 먼저 Git에 푸시하고, 클러스터 상태가 Git의 원하는 상태로 동기화됩니다. 이것은 전통적으로 애플리케이션 구성을 보관하는 데 Git 저장소를 사용하지 않는 명령적(imperative) 파이프라인과 다른 점입니다.
Argo CD가 관리하는 클러스터에 새 컨테이너 이미지를 푸시하려면 다음 워크플로우(또는 변형)를 사용할 수 있습니다:
새 컨테이너 이미지 빌드 및 게시
docker build -t mycompany/guestbook:v2.0 .
docker push mycompany/guestbook:v2.0
선호하는 템플릿 도구로 로컬 매니페스트 업데이트, 그리고 변경 사항을 Git에 푸시
팁: Kubernetes 매니페스트를 보관하는 데 애플리케이션 소스 코드와는 다른 별도의 Git 저장소를 사용하는 것을 강력히 권장합니다. 더 자세한 근거는 모범 사례를 참조하세요.
git clone https://github.com/mycompany/guestbook-config.git
cd guestbook-config
# kustomize
kustomize edit set image mycompany/guestbook:v2.0
# plain yaml
kubectl patch --local -f config-deployment.yaml -p '{"spec":{"template":{"spec":{"containers":[{"name":"guestbook","image":"mycompany/guestbook:v2.0"}]}}}}' -o yaml > config-deployment.yaml
git commit -am "Update guestbook to v2.0"
git push
애플리케이션 동기화 (선택 사항)
편의를 위해 argocd CLI를 API 서버에서 직접 다운로드할 수 있습니다. 이렇게 하면 CI 파이프라인에서 사용하는 CLI가 항상 동기화되어 Argo CD API 서버와 항상 호환되는 argocd 바이너리를 사용할 수 있습니다.
export ARGOCD_SERVER=argocd.example.com
export ARGOCD_AUTH_TOKEN=<JWT token generated from project>
curl -sSL -o /usr/local/bin/argocd https://${ARGOCD_SERVER}/download/argocd-linux-amd64
argocd app sync guestbook
argocd app wait guestbook
애플리케이션에 자동 동기화가 구성되어 있다면 이 단계는 필요하지 않습니다. 컨트롤러가 새 구성을 자동으로 감지하고(웹훅으로 빠르게 추적하거나 기본적으로 최소 3분마다 폴링) 새 매니페스트를 자동으로 동기화합니다.