Files
wbsong111 1a747f61a8 자체 빌드 이미지 문서가 이 레포에 없는 경로를 인용하던 것을 없앤다 (#33) (#34)
images/·manifests/helm/·.claude/ 의 20개 파일이 doc/decisions·doc/analysis 등 **이 레포에
존재한 적 없는 경로 15종을 48곳에서** 인용하고 있었다. security-catalog 에서 포팅할 때
따라온 것인데, 그 레포는 개인 레포(github.com/wbsong111/security-catalog)라 팀 구성원은
접근조차 못 한다 — "security-catalog 에 있으나 이관되지 않았다" 는 안내가 아무 역할을
하지 못했다.

원문을 통째로 복사하지 않았다
----------------------------
원본 문서들이 서로를 근거로 인용한다. decisions/0001 하나만 봐도 analysis/cnpg-image-baseline.md
· analysis/vendor-unassessed-data-sources.md 처럼 **인용 목록에 없던 또 다른 미이관 문서**를
가리킨다. 복사는 문제를 옮기는 것이지 없애는 게 아니다.

그리고 대부분은 애초에 dip-catalog 가 더 나은 것을 갖고 있다. 7곳에서 인용되던
analysis/sles-oval-measurement.md 는 원문 스스로 "이 문서는 결정하지 않는다. 재측정하면
갱신된다" 고 밝히는 스냅샷인데, dip-catalog 는 같은 측정을 CoverageProbe 로 매 스캔마다
자동으로 한다. 문서를 복사하는 것보다 게이트를 가리키는 것이 정확하다.

그래서 성격별로 나눴다
---------------------
  재측정으로 복원 안 되는 것  →  doc/decisions/ 에 자립적 ADR 로 다시 씀 (4건)
  이미 단일 출처가 있는 것    →  그쪽으로 인용 교체 (11종 경로)

ADR 4건은 security-catalog 0001·0005·0006·0007 이 원본이고, 결론과 근거만 추려
dip-catalog 맥락으로 새로 썼다 — **레포 밖을 가리키는 링크가 0이다.** 번호는 이 레포에서
0001~0004 로 다시 붙였고 원본 대응은 각 문서와 README 에 적었다. 왜 안 가져온 것은 안
가져왔는지도 README 표에 남겼다.

인용 교체는 카테고리별로:
  analysis/*-cve.md, cnpg-image-vuln-comparison.md  →  해당 ADR · images/<image>/README.md
  analysis/sles-oval-measurement.md                 →  게이트 CoverageProbe (doc/sbom-pipeline.md)
  cve-zero-pipeline.md, architecture/build-pipeline.md → doc/sbom-pipeline.md
  image-selection.md                                →  .claude/image-authoring.md
  charts/*/deploy-test.md                           →  scripts/deploy-test/*.sh + 절차 문서

찾은 오류 2건
-------------
- images/cloudnative-pg/source.build.env 가 인용한 decisions/0004-cloudnative-pg-operator-self-build.md
  는 **번호 오기**다. 원본 0004 는 postgresql-chart-selection 이고 이 결정은 0005 다.
- cnpg-cluster values.yaml·templates/database.yaml 이 인용한 doc/deploy-test-cnpg.md 는
  **원본 레포에도 없다.** CREATE EXTENSION 함정 설명은 주석 자체에 이미 있어 인용만 뺐다.

검증
----
  우리 파일의 깨진 doc/ 인용        0건 (전수 스캔)
  새 문서·수정 문서의 로컬 링크     전부 실재 확인
  helm template                     cnpg-cluster · etcd · cloudnative-pg 정상 렌더

남은 doc/health-checking.md(144곳)·doc/integration/*(2곳)은 업스트림 CRD·차트 안의 문자열로
우리가 쓴 인용이 아니다 — 건드리지 않았다.

Closes #33

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 10:20:40 +09:00

3.4 KiB

cloudnative-pg 버전 갱신 가이드

1. git 작업 환경 구성

git clone https://github.com/paasup/dip-catalog.git
cd dip-catalog
git checkout -b update-cloudnative-pg/<신규버전>

2. helm chart 업데이트

1) 신규 버전 확인

helm repo add cnpg https://cloudnative-pg.github.io/charts
helm repo update cnpg
helm search repo cnpg/cloudnative-pg --versions | head

차트 버전과 operator 버전(appVersion)은 다르다. 대응 관계를 반드시 확인한다.

차트 버전 operator(appVersion)
0.29.0 1.30.0
0.28.3 1.29.1
0.27.1 1.28.1

2) 신규 버전 디렉토리 생성

버전별 독립 디렉토리다. 기존 디렉토리를 수정하지 않고 새로 만든다.

NEW=0.30.0
OLD=0.29.0
cd manifests/helm/cloudnative-pg

# 업스트림 차트를 신규 버전 디렉토리로 내려받는다
helm pull cnpg/cloudnative-pg --version "$NEW" --untar --untardir /tmp/cnpg-pull
mkdir -p "$NEW"
cp -R /tmp/cnpg-pull/cloudnative-pg/. "$NEW"/

# PaaSup 관리 파일을 이전 버전에서 승계한다
for f in custom-values.yaml dip-values.yaml dip-resources-quotas.yaml \
         CUSTOM-README.md BUILD-README.md; do
  cp "$OLD/$f" "$NEW/$f"
done

3) diff 확인

업스트림 values.yaml 변경으로 custom-values.yaml 의 키가 사라졌는지 확인한다. 이게 Breaking Change 판단의 핵심이다.

diff -u "$OLD/values.yaml" "$NEW/values.yaml" | less

# custom-values.yaml 의 각 키가 신규 values.yaml 에 존재하는지 검증
helm template test "$NEW" -f "$NEW/custom-values.yaml" >/dev/null && echo "렌더링 OK"

values.schema.json 이 있으므로 없는 키를 넘기면 렌더링이 실패한다. 위 명령이 통과해야 한다.

4) 렌더링 결과 비교

helm template cnpg "$OLD" -f "$OLD/custom-values.yaml" -n cnpg-system > /tmp/old.yaml
helm template cnpg "$NEW" -f "$NEW/custom-values.yaml" -n cnpg-system > /tmp/new.yaml
diff -u /tmp/old.yaml /tmp/new.yaml

RBAC 규칙 추가/삭제, webhook 경로 변경, CRD 필드 변경을 특히 주의해서 본다.

3. 문서 갱신

파일 갱신 내용
CUSTOM-README.md 차트/operator 버전 번호, 업그레이드 명령의 CRD URL, 변경된 values 키
BUILD-README.md 위 버전 대응 표에 신규 행 추가
scripts/deploy-test/deploy-test-cnpg-cluster.sh 신규 버전으로 배포 검증 재실행
manifests/helm/cnpg-cluster/*/CUSTOM-README.md operator 버전 호환성 명시 부분

4. 배포 검증

scripts/deploy-test/deploy-test-cnpg-cluster.sh 를 신규 버전으로 재실행한다 (절차: .claude/deploy-test-procedure.md). 최소한 다음 4개는 통과해야 한다.

  1. operator Pod Running, CRD 11개 생성
  2. cnpg-cluster 차트로 3-instance Cluster 배포 → readyInstances=3/3
  3. -rw / -ro 서비스 라우팅 (primary / replica 분리)
  4. primary Pod 삭제 → failover 후 쓰기 복구, 데이터 정합성 유지

5. PR

git add manifests/helm/cloudnative-pg/<신규버전> doc/
git commit -m "cloudnative-pg <신규버전> 추가"
git push -u origin update-cloudnative-pg/<신규버전>

PR 생성 시 helm-catalog-sbom 워크플로가 변경 차트에 대해 SBOM·취약점 스캔을 수행한다. CRITICAL 취약점이 있으면 내용을 확인하고 PR 본문에 판단 근거를 남긴다.