본문으로 건너뛰기

Argo CD 오래된 캐시 하드 재동기화

이 페이지는 2026년 4월 16~18일 Argo CD 오래된 캐시 사건에 대한 사고 회고입니다. 정상 상태 컨트롤러 계약은 인프라 GitOps Argo CD 참조 페이지에 있습니다.

실패한 것

새로운 커밋이 Git 소스에 도달했지만 Argo CD는 의미 있는 애플리케이션 변경 사항이 없다고 계속 보고했으며 자동 동기화되지 않았습니다. 19be45e0의 첫 번째 변경 사항으로 configs.cm.timeout.hard.reconciliation가 업데이트되었지만 컨트롤러가 여전히 applications/argocd/helm-values.yaml의 CLI 플래그를 재정의하여 시작되었기 때문에 문제가 해결되지 않았습니다.

현재 파일에는 사건 중에 중요한 분할이 여전히 표시됩니다.

configs:
cm:
timeout.reconciliation: "60000"
timeout.hard.reconciliation: "86400000"
controller:
extraArgs:
- --app-resync=60
- --app-hard-resync=120

configs.cm는 ConfigMap 의도를 문서화하지만 controller.extraArgs는 애플리케이션 컨트롤러에 대한 활성 재동기화 계약입니다.

타임라인

커밋무엇이 바뀌었나그것이 중요한 이유
19be45e0configs.cmtimeout.hard.reconciliation를 추가했습니다부분 수정만; 컨트롤러 플래그가 여전히 재동기화 동작을 재정의하고 있었습니다.
d131eedccontroller.extraArgs--app-resync=3600--app-hard-resync=0에서 60120로 변경했습니다. 이것이 실제 오래된 캐시 수정 사항이었습니다. 또한 상태 및 연산 프로세서도 두 배로 늘어났습니다.
58ffd7c8512Mi에서 1Gi로 저장소 서버 메모리 증가재동기화 속도가 빨라지면 63개 앱에서 렌더링 압력이 즉시 증가합니다.
e11da2d1저장소 서버 제한을 ​​1500Mi로, 컨트롤러 제한을 1280Mi로 높였습니다.재시작 시간 재캐싱으로 인해 케이던스 변경 후에도 여전히 OOM 압력이 발생했습니다.

이후 현재 repo는 repo-server 헤드룸을 3Gi로 더 늘렸지만 사고 순서는 추가 용량이 필요한 이유를 설명합니다.

근본 원인

두 개의 별도 계약이 동시에 충족되어야 했습니다.

  • Argo CD에는 매니페스트 캐시 항목이 무효화되도록 0이 아닌 하드 다시 가져오기 간격이 필요했습니다.
  • 애플리케이션 컨트롤러에는 일치하는 CLI 인수가 필요했습니다. 해당 인수가 언뜻 보기에는 신뢰할 수 있는 것처럼 보이는 ConfigMap 값을 재정의하기 때문입니다.

첫 번째 수정으로 인해 표시되는 ConfigMap이 변경되었지만 실제로 조정을 유도한 컨트롤러 프로세스 인수가 변경되지 않았기 때문에 사고가 예상보다 오래 지속되었습니다.

지속적인 불변성

  • Argo CD 재동기화 타이밍이 의심스러울 때마다 controller.extraArgs를 신뢰할 수 있는 것으로 간주하십시오.
  • 보다 공격적인 재동기화 설정을 repo-server 및 컨트롤러 메모리 검토와 결합합니다. 오래된 캐시 수정은 즉시 OOM 문제가 될 수 있습니다.
  • Synced 상태뿐만 아니라 렌더링된 인수 및 포드 안정성에서 실시간 동작을 확인합니다.

확인

cd lumie-infra
rg -n "timeout\\.hard\\.reconciliation|app-hard-resync|app-resync|status-processors|operation-processors" \
applications/argocd/helm-values.yaml
kubectl get pods -n argocd
kubectl get deploy -n argocd argocd-repo-server -o yaml
kubectl get statefulset -n argocd argocd-application-controller -o yaml

성공은 저장소에 여전히 --app-resync=60--app-hard-resync=120가 표시되고 라이브 저장소 서버와 컨트롤러 워크로드가 조정 버스트 후 재시작 변동 없이 안정적임을 의미합니다.