[ArgoCD] ApplicationSet 컨트롤러의 Application 리소스 수정 제어하기

2025. 5. 25. 17:38·ArgoCD
❗️ 부모 ApplicationSet이 삭제되면 다같이 삭제되므로, 방지할 무언가가 필요하다.

 

ApplicationSet 컨트롤러는 Application 리소스를 언제, 어떻게 수정할 지 제어할 수 있다.

예를 들어, 하위 Application을 삭제하지 못하도록 제한할 수 있다. 

다음과 같은 제어가 가능하다. 

 

  • Application 리소스에 대한 수정 시점 및 방식 제어
  • 해당 Application이 관리하는 클러스터 리소스(Deployment, Service 등)에 대한 영향 제어

1️⃣ ApplicationSet 수정 정책 (syncPolicy)

ApplicationSet 컨트롤러는 Argo CD Application 리소스에 어떤 변경을 허용할지 제어할 수 있다.
다음 네 가지 값 중 하나를 가질 수 있다.

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
spec:
  # (...)
  syncPolicy:
    applicationsSync: create-only # create-update, create-delete sync

 

1. create-only

  • 수정 및 삭제를 금지 (Application 생성만 허용)
  • 단, ApplicationSet 삭제 시 ownerReference에 의해 Application이 삭제될 수 있음

2. create-update

  • 삭제는 금지, 수정은 허용
  • 위와 동일하게 ownerReference에 의해 삭제될 수 있음

3. create-delete

  • 수정은 금지, 삭제는 허용

4. sync (기본값)

  • 수정, 삭제 둘다 허용

2️⃣ ApplicationSet 삭제 시 Application 삭제 방지 방법

기본적으로 create-only 및 create-update 정책만으로는 ApplicationSet 삭제 시 Application 삭제를 완전히 막을 수 없다.

finalizer를 추가해 아래 값을 추가해야 한다. 

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  finalizers:
  - resources-finalizer.argocd.argoproj.io
spec:
  # (...)

 


3️⃣ Application 삭제 시 자식 리소스(Deployment, Service 등) 삭제 방지

기본적으로 ApplicationSet 컨트롤러가 Application을 삭제하면,
그 Application이 생성한 모든 클러스터 리소스(Deployment, Service 등)도 함께 삭제된다.

따라서 해당 Application이 삭제되더라도 클러스터 리소스를 유지할 수 있도록, ApplicationSet의 syncPolicy에 아래 필드를 추가.

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
spec:
  # (...)
  syncPolicy:
    preserveResourcesOnDeletion: true

 

이를 통해 application이 삭제되더라도 자식 리소스는 유지된다. 

 

 

 

 


참고자료 

https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Controlling-Resource-Modification/

'ArgoCD' 카테고리의 다른 글

[ArgoCD] ApplicationSet과 App of Apps 패턴 비교  (0) 2025.05.25
'ArgoCD' 카테고리의 다른 글
  • [ArgoCD] ApplicationSet과 App of Apps 패턴 비교
myeunee
myeunee
누룽지
  • myeunee
    누룽지 블로그
    myeunee
  • 전체
    오늘
    어제
    • 분류 전체보기 (36)
      • AWS (3)
      • ArgoCD (2)
      • Kubernetes (2)
      • GCP (4)
      • Golang (5)
      • Data Engineering (4)
      • Docker (6)
      • Linux System (3)
      • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
myeunee
[ArgoCD] ApplicationSet 컨트롤러의 Application 리소스 수정 제어하기
상단으로

티스토리툴바