ArgoCD를 통한 동기화 과정에 Resource Hook을 통해 특정 시점(PreSync, Sync, PostSync)에 추가적인 작업을 할 수 있다.
Resource Hook

1. Resource Hook Cycle
- PreSync : 매니페스트 적용 전에 실행된다
- Sync : 모든 PreSync 훅이 완료되고 성공한 후, 매니페스트 적용과 동시에 실행된다
- PostSync : 모든 Sync 훅이 완료되고 성공한 후, 성공적인 매니페스트 적용과 모든 리소스가 Healthy 상태인 경우에 실행된다
- SyncFail : 동기화 작업이 실패했을 때 실행된다
- PostDelete : 모든 애플리케이션 리소스가 삭제된 후 실행된다
2. Resource Hook 설정
배포할 리소스에 argocd.argoproj.io/hook 어노테이션을 추가하면 된다.
apiVersion: batch/v1
kind: Job
metadata:
name: postgres-backup
labels:
app: backup
annotations:
argocd.argoproj.io/hook: PostSync
...
3. Resource Hook과 함께 Hook 삭제 정책 설정
Annotation 설정(argocd.argoproj.io/hook-delete-policy)을 통해 Hook을 어떻게 삭제할지 지정할 수 있다. 삭제 정책의 종류는 세 가지를 제공한다.
- HookSucceeded : 훅 리소스가 성공한 후 삭제된다 (예: Job/Workflow가 성공적으로 완료된 경우)
- HookFailed : 훅 리소스가 실패한 후 삭제된다
- BeforeHookCreation (Default) : 새로운 훅이 생성되기 전에 기존 훅 리소스가 삭제된다
apiVersion: batch/v1
kind: Job
metadata:
name: postgres-backup
labels:
app: backup
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
...
Syncwave
동일한 Hook에서 생성되는 리소스들의 배포 순서를 제어하는 기능이다. 배포 리소스의 Annotation(argocd.argoproj.io/sync-wave)을 통해 설정한다. 별도의 설정이 없을 경우 모든 리소스는 sync-wave: "0" 의 값을 가진다. 번호가 낮은 리소스를 먼저 배포한다.
apiVersion: batch/v1
kind: Job
metadata:
name: postgres-backup
labels:
app: backup
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
argocd.argoproj.io/sync-wave: "0"
...
---
apiVersion: batch/v1
kind: Job
metadata:
name: log-backup
labels:
app: backup
annotations:
argocd.argoproj.io/hook: PostSync
argocd.argoproj.io/hook-delete-policy: HookSucceeded
argocd.argoproj.io/sync-wave: "1"
...'GitOps > ArgoCD' 카테고리의 다른 글
| [ArgoCD] Server Side Apply 옵션 (0) | 2025.12.01 |
|---|---|
| [ArgoCD] ApplyOutofSyncOnly 옵션 (0) | 2025.11.16 |
| [ArgoCD] Prune 옵션 (0) | 2025.11.14 |