The forward upgrade to 26.7.3 was zero downtime across 87 samples, and since databasechangelog stayed at 210 the rollback to 26.7.0 also succeeded, which narrows D-2's conclusion: rolling back fails when the schema moved, not because of the version number. The row count is the check. Role changes never reach the upstream through request repetition; the session is a snapshot taken at login and only a new session picks up the new claim. Auditing the docs also surfaced that Prometheus scrapes only keycloak, kubelet, node-exporter and itself, so the B-layer experiments have no metrics to screenshot rather than missing screenshots. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
D-2 — 버전 업그레이드 증거
2026-09-04 17:05–17:15 KST
해설: docs/experiment-d2-version-upgrade.md
| 파일 | 무엇을 보여주는가 |
|---|---|
01-pre-upgrade.txt |
백업 396KB · 이미지 26.7.0 · 마이그레이션 210건 · 세션 4 |
02-rollback-attempt.txt |
26.0 으로 내리자 Running(0/1) → Error → CrashLoopBackOff. liquibase.exception.ValidationFailedException |
03-roll-forward.txt |
서비스는 HTTP 200 유지(ready 주소 1개) · 오류 원인 1 changesets check sum · 26.7.0 복귀 후 마이그레이션 210·세션 4 그대로 |
핵심 세 줄
- 롤백은 안 된다. 체크섬이 안 맞아 Liquibase 가 기동 자체를 거부한다 — "모르는 변경"이 아니라 "아는 변경인데 정의가 다르다".
- StatefulSet 이 사고를 절반에서 멈춰줬다. 한 파드가 남아 외부 200 을 유지했다. replica 1 이었다면 전면 장애다.
- 실패한 기동은 스키마를 안 건드렸다. 그래서 이미지만 되돌려도 복구됐다 — 이미 적용된 뒤였다면 DB 복구(D-1)가 필요하다.