resources-finalizer.argocd.argoproj.io는 Argo CD의 Application 리소스에서 가장 중요하게 다뤄야 할 기능 중 하나입니다.
이 기능이 애플리케이션 리소스 자체의 기능인지, 그리고 운영 환경에서 왜 필수적으로 이해해야 하는지 상세하게 블로그 형식으로 정리해 드릴게요. 🚀
Argo CD를 사용하다 보면 애플리케이션을 삭제했는데, 정작 그 안에 있던 파드(Pod)나 서비스(Service)는 그대로 남아 있어 당황한 적이 있으신가요? 혹은 반대로 애플리케이션을 지웠더니 클러스터 전체 리소스가 순식간에 사라져 등골이 오싹했던 경험은요?
이 모든 동작의 중심에 있는 설정이 바로 resources-finalizer.argoproj.io입니다. 오늘 이 기능의 실체와 올바른 사용법을 마스터해 봅시다!

1. Finalizer란 무엇인가요? 🤔
쿠버네티스에서 Finalizer는 "삭제 전 체크리스트"와 같습니다. 어떤 리소스에 Finalizer가 붙어 있으면, 사용자가 삭제 명령을 내려도 바로 사라지지 않고 특정 조건(Clean-up 작업)이 완료될 때까지 삭제를 대기(Pending)시킵니다.
Argo CD의 Application 리소스에 이 Finalizer를 등록하면, Argo CD 컨트롤러에게 다음과 같이 명령하는 것과 같습니다.
이 Application을 삭제할 때, 관리하던 하위 리소스들도 책임지고 전부 삭제해!
2. 왜 이 기능이 필요한가요? (Cascade Deletion) 🌊
기본적으로 Argo CD에서 Application 리소스를 삭제하면 Application 설정 파일 자체만 삭제됩니다. 클러스터에 배포된 실제 리소스들은 '고아(Orphan)' 상태가 되어 그대로 남게 되죠.
하지만 resources-finalizer를 사용하면 **폭포수 삭제(Cascade Deletion)**가 활성화됩니다.
- Finalizer 없을 때: Application 삭제 → Argo CD 설정만 삭제 → 실제 인프라 리소스는 잔류 (지저분함 🧹)
- Finalizer 있을 때: Application 삭제 → Argo CD가 실제 리소스 삭제 시작 → 모든 리소스 삭제 확인 → Application 최종 삭제 (깔끔함 ✨)
3. 실전 코드: 어떻게 적용하나요? 💻
Application 매니페스트의 finalizers 필드에 추가하기만 하면 됩니다.
📝 Application YAML 예시
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-safe-app
namespace: argocd
finalizers:
# 이 줄이 핵심입니다!
# Application 삭제 시 하위 리소스도 함께 삭제하도록 지시합니다.
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://github.com/my-repo/manifests.git
targetRevision: HEAD
path: app-folder
destination:
server: https://kubernetes.default.svc
namespace: my-app-ns
4. 운영 시 주의사항 및 꿀팁 (Best Practices) 🚨
① 리소스 삭제 순서와 의존성
Finalizer가 작동하면 Argo CD는 리소스 간의 의존성을 고려하여 삭제를 시도합니다. 하지만 간혹 특정 리소스(예: Namespace)가 삭제되지 않고 Terminating 상태에 갇히는 경우가 있는데, 이때 Application 리소스도 함께 삭제되지 않고 멈춰버릴 수 있습니다.
② 수동 삭제 시 주의
만약 인프라 리소스는 남겨두고 Argo CD 설정만 지우고 싶다면, 삭제 명령을 내리기 전에 반드시 metadata.finalizers 목록에서 해당 항목을 먼저 제거해야 합니다. 그렇지 않으면 실제 리소스가 예기치 않게 사라질 수 있습니다.
③ 백그라운드 vs 포그라운드 삭제
기본적으로 Argo CD는 백그라운드 삭제를 시도하지만, 쿠버네티스의 propagationPolicy 설정을 통해 더 정교하게 제어할 수도 있습니다.
5. 요약 테이블 📊
| 특징 | 설명 |
| 적용 대상 | Argo CD Application 커스텀 리소스 |
| 핵심 역할 | 애플리케이션 삭제 시 하위 리소스(Deployment, SVC 등) 동시 삭제 |
| 작동 방식 | 쿠버네티스 Finalizer 메커니즘을 이용한 삭제 지연 및 정리 |
| 사용 권장 | 테스트 환경이나 깔끔한 리소스 정리가 필요한 모든 곳 |
🏁 마치며
resources-finalizer.argocd.argoproj.io는 Argo CD Application 리소스의 생명 주기 관리를 책임지는 아주 강력한 기능입니다. 인프라를 깨끗하게 유지하고 리소스 누수를 막기 위해 거의 모든 Application에 기본적으로 포함하는 것이 좋습니다.
하지만 삭제는 항상 신중해야 한다는 점, 잊지 마세요! 🛠️
'클라우드 > Argo' 카테고리의 다른 글
| 🏗️ Argo Workflows 심화 가이드: 실패 대응, 재사용, 동시성 제어 마스터하기 (0) | 2026.01.03 |
|---|---|
| 🛠️ Argo CD x Kustomize 마스터 가이드: 이미지 오버라이드와 버전 고정 기법 (0) | 2026.01.03 |
| 🚀 Argo Rollouts 배포 전략 완벽 가이드: 무중단 배포의 모든 것 (0) | 2026.01.03 |
| 🏗️ Argo Workflows 설계 가이드: DAG vs Steps 그리고 데이터의 흐름(Artifact) (0) | 2026.01.03 |
| 🐙 Argo CD 마스터 가이드: AppProject의 함정과 4가지 핵심 기능 파헤치기 (0) | 2026.01.03 |