[ArgoCD]Grafana, Istio등 Application의 Out of Sync 해결(ArgoCD Diffing custom)

2025. 5. 29. 08:07·DevOps
반응형

배경 상황

ArgoCD의 Application 리소스를 배포해 Grafana와 Istio 등 EKS 클러스터 운영에 필요한 각종 애플리케이션을 배포하다가 거슬리는 부분을 발견했다. 아래처럼 특정 리소스가 지속적으로 실제 EKS 환경의 리소스와 소스코드 저장소 상 구성의 차이점이 있어 Sync status가 계속해서 Out of Sync인 상태로 남는 현상이 발생했던 것.

 

 

ArgoCD UI에서 해당 리소스를 클릭하고 Diff를 확인했더니 failurePolicy가 배포 전 구성했던 매니페스트 설정에서 변경되어 있었다. 캡처는 istio의 diff 화면이지만, Grafana에서도 동일하게 동작에 문제는 없는데 Sync Status만 Out of Sync로 남아있는 부분이 있었다.

 

 

ArgoCD의 Diffing 커스텀을 통해 불필요한 Out of Sync 제거하기

뭔가 문제가 있는건 아닐까 하고 찾아보다 보니, Istio 프로젝트에서 ValidatingWebhookConfiguration 매니페스트에서 배포 시에는 failurePolicy가 Ignore로 설정되지만 웹훅 엔드포인트가 ready 상태가 되면 failurePolicy가 Fail로 업데이트 된다는 내용이 있었다. 즉, Git 저장소의 구성 값과 실제 운영 시의 구성 값이 차이가 나는 것이 정상 동작인 것이었다.

 

 

ArgoCD에서는 이렇게 의도적으로 git과 k8s 실행환경상 구성이 차이가 날 경우, 차이를 무시할 수 있게 해주는 ignoreDifferences라는 필드를 제공한다(예를 들어 HPA의 replica 수 처럼 값이 동적으로 변경되는 경우에 적용할 수 있다).

 

 

따라서 istio의 out of sync를 해결하기 위해서는 아래와 같이 ignoreDifferences 필드를 이용해 해당 설정의 차이를 무시하도록 구성하면 된다.

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: istio-base
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  project: default
  destination:
    server: <https://kubernetes.default.svc>
    namespace: istio-system
  ignoreDifferences:
    - group: admissionregistration.k8s.io
      kind: ValidatingWebhookConfiguration
      name: istiod-default-validator
      jqPathExpressions:
        - .webhooks[] | select(.name == "validation.istio.io") | .failurePolicy
  source:
    repoURL: '<https://istio-release.storage.googleapis.com/charts>'
    targetRevision: 1.25.0
    chart: base
    helm:
      releaseName: istio-base
  syncPolicy:
    automated:
      prune: false
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

 

 

변경된 애플리케이션을 깃 레포에 업데이트하고 sync를 다시 클릭하면 아래와 같이 Synced 상태로 업데이트 된다.

저작자표시 비영리 동일조건 (새창열림)

'DevOps' 카테고리의 다른 글

[AWS]DMS로 스테이징 환경 DB 구성하기(Aurora MySQL)  (2) 2025.06.10
[ArgoCD]Cross Account EKS Cluster 연동 방법(Declarative Setup)  (5) 2025.05.31
[Cisco]Meraki란?  (2) 2025.05.28
[ArgoCD]Github 저장소 선언적으로 등록하고 관리하기(Feat. External Secrets)  (0) 2025.05.27
[ArgoCD]External Secrets를 활용해 Google OAuth 인증 구성 방법 및 에러 해결(unable to mutate secret: could not apply template)  (0) 2025.05.26
'DevOps' 카테고리의 다른 글
  • [AWS]DMS로 스테이징 환경 DB 구성하기(Aurora MySQL)
  • [ArgoCD]Cross Account EKS Cluster 연동 방법(Declarative Setup)
  • [Cisco]Meraki란?
  • [ArgoCD]Github 저장소 선언적으로 등록하고 관리하기(Feat. External Secrets)
Canary_카나리아
Canary_카나리아
어쩌다 데브옵스 엔지니어가 된 문과생의 기록용 블로그
    반응형
  • Canary_카나리아
    release: canary
    Canary_카나리아
  • 전체
    오늘
    어제
    • 분류 전체보기 (120)
      • DevOps (67)
      • Programming (28)
      • Certifications (3)
      • ETC (20)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로메테우스예제
    한빛출판네트워크
    데브옵스엔지니어
    NCPprofessional자격증
    제로베이스
    백엔드스쿨
    백엔드공부
    kops사용법
    spring
    백엔드개발
    Java
    자바개념
    네이버클라우드서비스
    그라파나
    Prometheus
    클라우드자격증
    terraform
    ncp서비스
    java개념
    백엔드
    프로메테우스
    클라우드엔지니어자격증
    argocd
    NCPassociate자격증
    NCP자격증
    네이버클라우드자격증
    개발자
    그라파나예제
    kops란
    Grafana
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
Canary_카나리아
[ArgoCD]Grafana, Istio등 Application의 Out of Sync 해결(ArgoCD Diffing custom)
상단으로

티스토리툴바