Info
25년 3월 작업 내용을 간단히 요약한 글입니다.
문제 상황
Argo CD 환경에서 새로 배포한 2개의 애플리케이션이 있는데, 그중 하나의 애플리케이션의 동기화 작업이 완료되지 않는 현상이 있었습니다.
문제 원인
원인은 크게 2가지였습니다.
- 2개의 앱은 동일한 Namespace에 배포되었습니다.
- 역할이 비슷하고 구분이 모호했기 때문에 결정한 내용이었습니다.
- 각각의 앱은 PreSync hook을 사용하여 Secret을 동기화하는 작업이 있었고, 이 작업을 실행하는 Job 이름이 고정된 이름이었습니다.
name
필드로 지정되어 있었습니다.- 같은 Namespace에 배포되어 있기 때문에 이름이 겹치는 문제가 발생했고, 한 쪽에서 종료 이벤트를 받지 못하는 현상이 발생했습니다.
해결 방법
-
일단 당장의 상황을 해결하기 위해, 작업이 완료되지 않은 쪽의 동기화 작업을 다시 돌렸습니다.
- Job은 작업이 종료되면 사라지기 때문에, 이것으로 배포 문제는 해결되었습니다.
-
영구적인 해결을 위해,
generateName
필드를 사용하여 Job 이름을 동적으로 생성하도록 했습니다. -
가장 좋은 것은 Namespace를 분리하는 것입니다.
- 정말 Helm 등의 하나의 템플릿으로 분리되어 있다면 최소한 Namespace, 더 나아가면 노드나 클러스터를 분리하는 정책이 필요합니다.