피드로 돌아가기
Zero-Downtime Migration: Moving Resources Between Argo CD ApplicationSets
Dev.toDev.to
DevOps

Argo CD의 ApplicationSet 마이그레이션 시 preserveResourcesOnDeletion 플래그와 Orphan 전략으로 서비스 다운타임 없이 리소스 소유권 변경

Zero-Downtime Migration: Moving Resources Between Argo CD ApplicationSets

Yoni Gofman2026년 3월 28일2intermediate

Context

Argo CD에서 ApplicationSet을 삭제하면 cascading deletion으로 인해 하위의 Application 및 Kubernetes 리소스들이 함께 삭제되는 문제가 발생한다. ApplicationSet 이름 변경, Generator 타입 변경, GitOps 저장소 구조 리팩토링 등의 상황에서 리소스 손실 없이 마이그레이션할 방법이 필요했다.

Technical Solution

  • preserveResourcesOnDeletion 플래그 적용: 기존 ApplicationSet의 spec.syncPolicy에 preserveResourcesOnDeletion: true 추가하여 삭제 시 Application 객체 보존
  • 기존 ApplicationSet 삭제: kubectl delete로 old ApplicationSet 제거하면 Application은 "Orphan" 상태(관리자 없는 상태)로 유지
  • 신규 ApplicationSet 배포: 이전과 동일한 이름으로 Application을 생성하는 새로운 ApplicationSet 생성
  • ServerSideApply 옵션 활용: 신규 ApplicationSet의 spec.template.spec.syncOptions에 ServerSideApply=true 추가하여 라벨·어노테이션 메타데이터 충돌 처리
  • Dry-run 검증: 실제 동기화 전 argocd app sync <app-name> --dry-run 실행하여 예상치 못한 변경사항 사전 확인

Key Takeaway

Argo CD에서 ApplicationSet 마이그레이션 시 리소스 수명주기를 명시적으로 제어(preserveResourcesOnDeletion)하고 소유권 이전 과정을 단계별로 검증하면 운영 중단 없이 안전한 전환이 가능하다. 이는 GitOps 환경에서 인프라 구조 변경 시 적용 가능한 일반적인 패턴이다.


Argo CD를 사용하는 DevOps 팀에서 ApplicationSet을 리팩토링할 때, preserveResourcesOnDeletion 플래그를 명시적으로 활성화하고 Orphan 전략을 따르면 쿠버네티스 리소스 손실 없이 마이그레이션할 수 있다. 추가로 dry-run 동기화를 먼저 실행하면 마이그레이션 중 예상치 못한 설정 변경을 사전에 감지할 수 있다.

원문 읽기