Image Promotion

Image promotion은 검증된 image를 다음 환경 overlay에 반영하는 절차입니다.

dev는 빠른 피드백을 위해 자동 추적을 사용하고, stg는 사람이 확인 가능한 release tag를 PR로 반영합니다. 이 차이는 환경의 목적이 다르기 때문입니다.

1. Dev Policy

dev는 dev moving tag를 사용합니다.

source repo main에 merge되면 language/domain workflow가 dev image를 publish합니다. Argo CD Image Updater는 dev tag의 최신 digest를 추적해 dev overlay에 반영할 수 있습니다. dev overlay의 workload는 imagePullPolicy: Always를 명시합니다. dev tag는 같은 이름으로 계속 갱신되므로, 노드가 예전 image cache를 재사용하지 않게 하기 위한 설정입니다. signal-device-simulator도 dev에서는 dev tag를 사용해 source repo main의 최신 synthetic telemetry sender를 소비합니다.

main merge
  -> publish image :dev
  -> Image Updater finds new digest
  -> dev overlay updates
  -> Argo CD syncs dev

2. Stg Policy

stg는 release tag를 PR로 승격합니다.

release image가 publish된 뒤, CD repo overlay의 image tag를 vX.Y.Z로 변경하는 PR을 만듭니다. 이 PR이 merge되면 Argo CD가 stg에 반영합니다. 새 deployable app을 stg에 추가할 때도 같은 원칙을 따릅니다. 예를 들어 signal-device-simulator는 release tag image가 publish된 뒤 stg overlay에 추가합니다.

release tag
  -> publish image :vX.Y.Z
  -> update stg overlay by PR
  -> merge
  -> Argo CD syncs stg

3. Tag and Digest

Tag는 사람이 읽기 쉽고, digest는 정확히 같은 image를 가리킵니다.

Identifier Use
tag release note, manual inspection, troubleshooting
digest exact rollout, rollback, audit evidence

이 guide는 tag 중심 흐름을 먼저 보여줍니다. 운영 성숙도가 올라가면 stg/prod promotion에는 digest pinning을 추가하는 것이 좋습니다.

4. Promotion Checklist

환경 승격 전에는 아래를 확인합니다.

Check Reason
source repo checks passed 깨진 app/image를 배포하지 않기 위함
image exists in GHCR cluster pull 실패를 방지하기 위함
target overlay renders Argo CD sync 실패를 줄이기 위함
rollout health is observable 배포 후 정상 동작을 확인하기 위함