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 | 배포 후 정상 동작을 확인하기 위함 |