파라미터 오버라이드

파라미터 오버라이드 (Parameter Overrides) — Git을 건드리지 않고 값을 덮어쓰기

Argo CD의 GitOps 배포는 기본적으로 Git에 있는 매니페스트를 그대로 사용해요. 그런데 때로는 Git을 수정하지 않고도 이미지 태그나 replica 수 같은 값을 잠깐 바꿔서 바로 반영하고 싶을 때가 있어요. 그럴 때 파라미터 오버라이드를 쓰면 CLI나 설정 파일로 값을 덮어쓸 수 있어서, 번거롭게 커밋을 밀지 않고도 원하는 상태를 만들 수 있어요.

출처: https://argo-cd.readthedocs.io/en/stable/user-guide/parameters/

본문

파라미터 오버라이드는 argocd app set -p (COMPONENT=)PARAM=VALUE 명령으로 실행해요. 예를 들어 게스트북 애플리케이션의 이미지를 교체하고 그다음 동기화하는 흐름을 볼게요.

argocd app set guestbook -p image=example/guestbook:abcd123
argocd app sync guestbook

여기서 PARAM은 일반적인 YAML 경로 형태를 기대해요. argocd app set 명령은 --kustomize-image, --jsonnet-ext-var-str 같은 도구별 플래그도 지원해요. 오버라이드를 애플리케이션 스펙의 source 필드에 직접 지정하는 방법도 있어요.

다중 소스(multi-source) 애플리케이션에서 특정 소스의 파라미터를 덮어쓰려면 소스 위치를 지정해 줘요. 두 번째 소스(인덱스 1)의 replica 수를 2로 바꾸는 예시를 볼게요.

argocd app set my-app --source-position 1 -p replicaCount=2

오버라이드를 Git에 저장해서 관리하고 싶다면 .argocd-source.yaml 파일을 써요. 이 파일은 매니페스트 생성 단계에서 사용되며 source의 kustomize, helm 같은 필드를 덮어써요.

kustomize:
  images:
    - quay.io/argoprojlabs/argocd-e2e-container:0.2

이 방식은 Git에서 애플리케이션 파라미터를 "오버라이드"하는 통일된 방법을 제공하고, argocd-image-updater 같은 프로젝트의 "write back" 기능도 지원하게 해줘요.

애플리케이션별 파일 이름은 .argocd-source-<appname>.yaml 형식이고, 여기서 <appname>은 오버라이드가 적용되는 애플리케이션 이름이에요. 애플리케이션별이 아닌 일반 .argocd-source.yaml이 있으면 그 파라미터가 먼저 병합되고, 그다음 애플리케이션별 파라미터가 병합돼요. 애플리케이션별 파일이 일반 파일에 저장된 오버라이드까지 덮어쓸 수도 있어요.

더 알아보기

  • Application 정의 — Application 스펙을 직접 나열해서 이해하기
  • Automated Sync Policy — Git과 클러스터 차이를 자동으로 맞추기
  • Diffing Customization — 상태 비교를 내 입맛대로 조정하기