피드로 돌아가기
ArgoCD 3.3 PreDelete Hook — Making GitOps Deletion a Safe Lifecycle
Dev.toDev.to
DevOps

ArgoCD 3.3이 PreDelete Hook을 도입해 GitOps 워크플로우에서 삭제 작업을 명시적 라이프사이클 단계로 승격

ArgoCD 3.3 PreDelete Hook — Making GitOps Deletion a Safe Lifecycle

정주신2026년 3월 28일3intermediate

Context

GitOps 워크플로우에서 삭제 작업은 항상 위험한 운영이었다. 상태 저장 애플리케이션이 갑자기 제거되면 데이터 손실이 발생하거나 외부 시스템이 서비스 통보 없이 중단될 수 있었다. ArgoCD는 기존에 PreSync → Sync → PostSync 세 가지 훅 단계만 제공해 삭제 단계에 대한 안전장치가 부재했다.

Technical Solution

  • PreDelete Hook 추가: Kubernetes Job을 삭제 요청 전에 실행하고, Job 성공 시에만 리소스 제거 진행, 실패 시 삭제 자체를 차단
  • 기존 훅과 동일한 패턴 적용: argocd.argoproj.io/hook: PreDelete 어노테이션으로 선언적 구성, 학습 곡선 최소화
  • OIDC 자동 토큰 갱신: Keycloak 같은 OIDC 제공자 통합 시 만료 전 백그라운드 토큰 자동 갱신으로 갑작스러운 로그아웃 해결
  • Shallow Git Clone: 대규모 모노레포나 레거시 프로젝트에서 전체 Git 히스토리 대신 필요한 커밋만 페치하는 옵트인 기능
  • 세분화된 클러스터 리소스 제어: AppProject의 clusterResourceWhitelist를 API 그룹/종류 수준에서 개별 리소스 이름 수준으로 확장해 다중 테넌트 환경에서 특정 CRD 접근 통제
  • KEDA 네이티브 지원: ScaledObject와 ScaledJob의 일시정지/재개를 UI에서 직접 제어 가능, 이전의 'Unknown' 상태 대신 정확한 헬스 상태 표시

Impact

  • Shallow Git Clone으로 저장소 서버 페치 시간: 분 단위에서 초 단위로 단축

Key Takeaway

PreDelete Hook은 GitOps에서 리소스 제거를 데이터베이스 백업, 트래픽 드레인, 규정 감사 로깅 같은 사전 조건 작업과 명시적으로 연결함으로써 상태 저장 애플리케이션 삭제의 안전성을 구조적으로 보장한다. 기존 PreSync/PostSync 훅과 동일한 선언적 패턴을 유지해 GitOps 생태계 내에서 점진적으로 도입할 수 있다.


상태 저장 애플리케이션(데이터베이스, 메시지 큐, 캐시)을 ArgoCD로 관리하는 팀에서 PreDelete Hook을 활용하면, 삭제 전 자동 백업, 외부 시스템 알림, DNS/CDN 정리 같은 작업을 Kubernetes Job으로 선언적으로 정의해 인프라 삭제 시 데이터 손실 위험을 제거하고 운영 체크리스트를 자동화할 수 있다.

원문 읽기