[ArgoCD] 리소스 Sync 순서 보정

[원본 링크]

ArgoCD는 리소스를 생성할 때 정해진 순서 없이 무작위로 생성한다.
이건 보통은 문제가 없지만, 처리의 순서가 중요한 경우에는 문제가 생길 수 있다.

대표적으로 GateKeeper처럼, 템플릿 -> 인스턴스를 생성하는 형태의 순서가 필수적인 경우에 더 그렇다.
이건 그냥 한번에 시도해서 뻑난 경우다.

sync-wave 어노테이션을 사용하면 각 리소스 실행 순서를 지정할 수 있다.

argocd.argoproj.io/sync-wave

이런 식으로 지정하면, 0 웨이브에 있는 리소스를 먼저 생성한 다음에 1 웨이브 리소스를 생성한다.




DryRun 무시

그런데, 생성 시점 외에도 argocd는 dry-run를 돌리는데, 이번 경우처럼 리소스 정의 자체가 기존에는 존재하지 않던 경우에는 여기서도 순서가 뻑날 수 있다.

리소스 템플릿과 그 템플릿의 리소스를 동시에 만드는데, DryRun 시점에는 당연히 아무것도 만들지 않았으니 템플릿이 존재하지 않기 때문이다.

argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true

그럴 때는 이렇게 적당히 스킵 옵션을 넣어주면 된다.