본문 바로가기

인프런 복습 - 쿠버네티스 어나더 클래스

[Sprint2] ArgoCD Image Updater 이용하기

 

ArgoCD Image Updater를 사용하는 이유

 

배포를 하게 되는 경우

1. 리소스 스펙을 변경해야 하는 경우 => 수동 작업 필요

(deployment에서 배포 전략을 바꾼다거나 수동으로 scale up을 해야할 때)

Devops 엔지니어는 yaml 파일을 수정해서 Git에 commit하고 배포 잡을 실행한다 -> k8s에 반영됨 

 

 

2. App 버전 업그레이드로 컨테이너 이미지를 변경해주어야 할 때 => 자동화 가능 

개발자가 소스 빌드 잡을 실행하면, 최신 소스를 가지고 자료 파일이 만들어지고 이어서 컨테이너 빌드를 하고  도커 허브에 이미지를 업로드 해준다. -> 배포 실행 

(원래라면 Devops 엔지니어가 yaml 파일에서 이미지 태그를 수정해야 하지만 helm을 쓰면 배포 명령에 동적으로 태그 값을 줄 수 있음) 

 

그런데, 여기서 Jenkins의 빌드가 먼저 실행되고 ArgoCD의 배포가 실행되게 하려면 

1) Jenkins에서 yaml 파일 수정 후 Git에 업데이트 되는 스크립트 작성(복잡)
2) helm --wait 옵션 사용 (더 깔끔하다)

ArgoCD를 사용하면 1번 방식은 편해졌지만, 2번 방식은 불편해짐 

이를 해결하기 위한 것이 ArgoCD Image Updater

 

 

 

Image Updater가 하는 일

Docker Hub를 모니터링 

이미지 업데이트가 감지되면 ArgoCD에 배포 명령

 

(helm, kustomize에서만 사용이 가능하다. 내부적으로 --set image.tag=1.0.0-202506.031850 이런 옵션을 사용하기 때문)

 

 

 

 

 

 

 

 

 

 


실습

https://cafe.naver.com/f-e/cafes/30725715/articles/121?menuid=13&referrerAllArticles=false

이전 강의에 이어서 실습 

 

도메인 이름 확인 방법 

▲ 80, 443 포트 확인 

▲ Processing results가 2분 단위로 업데이트 됨 (이미지 변경 여부 체크) 

 

 

 

이미지 업데이터로 자동 배포 설정하기 

2232 

 

 

 

 

Docker build 잡 생성하기

 

 

 

 

 

 

문제 1) image_skippped 되어서 Auto sync 되지 않음 

 

2232의 values-dev.yaml 파일을 lsm0/api-tester로 수정하고 재빌드함 

Updater는 이미지 "이름"이 정확히 일치할 때만 tag를 업데이트하기 때문!! 

태그가 잘 반영됨