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는 애플리케이션 컨트롤러에 대한 활성 재동기화 계약입니다.
타임라인
| 커밋 | 무엇이 바뀌었나 | 그것이 중요한 이 유 |
|---|---|---|
19be45e0 | configs.cm에 timeout.hard.reconciliation를 추가했습니다 | 부분 수정만; 컨트롤러 플래그가 여전히 재동기화 동작을 재정의하고 있었습니다. |
d131eedc | controller.extraArgs를 --app-resync=3600 및 --app-hard-resync=0에서 60 및 120로 변경했습니다. 이것이 실제 오래된 캐시 수정 사항이었습니다. 또한 상태 및 연산 프로세서도 두 배로 늘어났습니다. | |
58ffd7c8 | 512Mi에서 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가 표시되고 라이브 저장소 서버와 컨트롤러 워크로드가 조정 버스트 후 재시작 변동 없이 안정적임을 의미합니다.