ArgoCD 란?
Argo CD는 Kubernetes 환경에서 GitOps 방식으로 애플리케이션을 배포하고 관리하는 툴이다. Git 저장소에 선언된 Kubernetes 리소스(YAML 등)를 기준으로 클러스터 상태를 지속적으로 감시하고, 자동 또는 수동으로 동기화하여 클러스터 상태를 Git 상태와 일치시킨다.
실제 이전에 Kubernetes에 ArgoCD를 배포하여 롤링배포를 구현한 경험이 있는데 자세한 내용은 아래 포스팅 참고.
https://what2dochris.tistory.com/15
Kubernetes에 ArgoCD 배포하기
ARGOCD 란ArgoCD는 Kubernetes의 애플리케이션 배포를 관리하고 자동화하는 오픈 소스 도구이다.GitOps 원칙을 기반으로 하여, Git 저장소를 애플리케이션의 '단일 진리의 소스'로 사용하고, 이 저장소에
what2dochris.tistory.com
ArgoCD Sync
ArgoCD Sync란 git에 올라와있는 파일을 argocd를 통해 클러스터에 동기화 하는 작업을 뜻한다. 하지만 git manifest file이 변경되었다고 해서 바로 Pod에 적용되지는 않는다. ArgoCD는 Default로 3분에 한번씩 git을 감지하기에 변경이 되었더라도 3분이라는 period를 기다려야한다.
물론 ArgoCD UI에서 강제로 Refresh를 통해 바로 Sync 시켜줄수 있다.
Refresh를 개발자가 눌러주면 3분을 기다리는 것이 아닌 바로 상태 감지를 통해 변경시켜줄 수 있다.
ArgoCD Sync Status
위 과정에서 Refresh, 혹은 git과 pod의 상태를 감지하고 나면 Synce Status라는게 뜬다.
총 두가지가 있다.
Git 상태와 Kuberenetes Cluster의 현재 상태가 같다는 Sync OK 상태와 두가지가 다르다는 OutOfSync 상태.
Sync Policy
위 상황에서 만약 Out of Sync 상태가 떴다고 가정했을때 개발자가 취할 수 있는 방식은 두가지가 있다.
1. Auto Sync: 자동 Sync로써 Out Of Sync, 즉 변경점이 확인되었을때 자동으로 클러스터에 변경된 부분을 수정해주는 것이다.
2. Manual Sync: 수동 Sync로써 변경점이 확인되었을때 개발자가 직접 ArgoCD UI에서 Sync 버튼을 눌러 수동으로 변경된 부분을 수정해주는 것이다.
이런식으로 하면 아래와 같이 Git actions - ArgoCD - Kubernetes를 통한 CICD가 비로소 완성이 되었다고 할 수 있다.
추가: ArgoCD Sync Alert to Slack
Hook을 생성하여 ArgoCD가 Sync 될때마다 Slack으로 알람을 보내줄 수 있다.
apiVersion: batch/v1
kind: Job
metadata:
generateName: app-slack-notification-
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
spec:
template:
spec:
containers:
- name: slack-notification
image: curlimages/curl
command:
- "curl"
- "-X"
- "POST"
- "--data-urlencode"
- "payload={\"channel\": \"#somechannel\", \"username\": \"hello\", \"text\": \"App Sync succeeded\", \"icon_emoji\": \":ghost:\"}"
- "https://hooks.slack.com/services/..."
restartPolicy: Never
backoffLimit: 2
해당 Yaml파일을 통해 alert를 보내줄 수 있는데 어렵지 않아서 아래 공식문서를 참고하여 금방 구현할 수 있었다.
https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/
참고자료
https://malwareanalysis.tistory.com/408
ArgoCD 6편 - Sync 설정
안녕하세요. 이 글은 ArgoCD시리즈입니다. git에 의도된 상태를 쿠버네티스 클러스터에 동기화 할 때, 필요한 개념과 자주 사용하는 기능을 설명합니다. 영상: https://youtu.be/XBcoj3-pjDA 1. Refresh Period 1.
malwareanalysis.tistory.com
https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/
'DevOps&Cloud' 카테고리의 다른 글
NAT(Network Address Translation) 이란 무엇이고 왜 필요한지 (0) | 2025.05.01 |
---|---|
CICD: JIB(Java Container Image Build) 장점과 언제 쓰는것이 좋을까 (1) | 2025.04.30 |
Elastic Search 이해하기(Elastic Search vs RDBMS) (1) | 2025.04.26 |
Kubernetes Architecture: Control Plane 과 Worker Node 이해하기 (0) | 2025.04.23 |
Helm이란? (0) | 2025.04.23 |