Skip to content

refactor: keiailab-commons 빌더 7종 전면 채택 (-115 LOC)#304

Merged
KeiaiLab-PHIL merged 4 commits into
mainfrom
feat/adopt-commons-builders
Jun 30, 2026
Merged

refactor: keiailab-commons 빌더 7종 전면 채택 (-115 LOC)#304
KeiaiLab-PHIL merged 4 commits into
mainfrom
feat/adopt-commons-builders

Conversation

@KeiaiLab-PHIL

@KeiaiLab-PHIL KeiaiLab-PHIL commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

요약 — keiailab-commons 빌더 7종 전면 채택

valkey 의 리소스/컨트롤러 빌더를 keiailab-commons 공유 패키지로 위임 (중복 제거). exported 시그니처 유지 → 컨트롤러 호출부 변경 0. 순변화 -115 LOC (222+/337-).

대상 commons 위임
controller/tls_cert_hash.go hashTLSSecret secrethash.Hash (키 순서 동일 → byte-identical)
resources/pdb.go BuildPDB/BuildShardPDB pdb.Build (DefaultFloor=1, MaxUnavailable-우선 보존)
resources/hpa.go BuildHorizontalPodAutoscaler hpa.Build (MinFloor=2) + CPU/Mem 헬퍼
resources/service.go 4종(Headless/Client/Metrics/Primary) service.Build (옵션병합·clientPorts 잔류)
resources/statefulset.go dataPVC pvc.BuildDataPVC
resources/statefulset.go tlsVolumes/Mounts volume.TLSSecretMount (0o400)
resources/{backup,upload,download}_job.go batchjob.Build (엔벨로프)

⚠️ 의존성

commons PR KeiaiLab/keiailab-commons#86. go.mod = pseudo v0.12.1-0.20260630011743-a54c4a826028. commons 릴리스(v0.13.0) 후 tag bump → draft.

검증 (커밋별)

go build ./... → OK / go vet → clean / golangci-lint → 신규 0 (기존 2건 무관 파일)
go test ./internal/resources/... → ok
KUBEBUILDER_ASSETS=… go test ./internal/controller/... → ok (envtest 전체 suite, 3 배치 각 재검증)

거동 보존: 기존 pdb/hpa/tls/service/pvc/backup 테스트 전부 통과.

🤖 Generated with Claude Code

@KeiaiLab-PHIL KeiaiLab-PHIL changed the title refactor: PDB/HPA/TLS-hash 빌더를 keiailab-commons 로 위임 refactor: keiailab-commons 빌더 7종 전면 채택 (-115 LOC) Jun 30, 2026
KeiaiLab-PHIL and others added 4 commits June 30, 2026 10:53
valkey 의 리소스 빌더 3종을 keiailab-commons 공유 패키지로 위임한다 (중복 제거,
역할/책임 분리). exported 시그니처는 유지 → 컨트롤러 호출부 변경 0.

- resources/pdb.go BuildPDB/BuildShardPDB → commons pdb.Build (DefaultFloor=1).
  valkey 의 MaxUnavailable-우선 정밀도는 pdbParamsFromSpec 에서 보존.
- resources/hpa.go BuildHorizontalPodAutoscaler → commons hpa.Build (MinFloor=2)
  + CPUUtilization/MemoryUtilization 헬퍼. metric 조립(CPU 기본 70 + opt-in Mem)은
  valkey 도메인 잔류.
- controller/tls_cert_hash.go hashTLSSecret → commons secrethash.Hash
  (키 순서 tls.crt/tls.key/ca.crt 동일 → annotation byte-identical, rollout 0).

commons 의존: v0.12.1-0.20260630004504-13e0976fc111 (keiailab-commons#86).
머지+릴리스 후 tag 버전으로 bump 예정.

검증:
  go build ./...                                  → OK
  go vet ./internal/{resources,controller}/...    → clean
  go test ./internal/resources/...                → ok
  KUBEBUILDER_ASSETS=... go test ./internal/controller/... → ok (16.9s, envtest 전체 suite)
순감소 ~41 LOC (62 ins / 103 del).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: phil <phil@keiailab.com>
valkey 의 잔여 리소스 빌더를 keiailab-commons 2차 배치로 위임 (역할/책임 분리).

- resources/service.go: BuildHeadlessService/ClientService/MetricsService/PrimaryService
  4종 → commons service.Build. ServiceSpec 옵션 병합 + clientPorts 는 valkey 잔류.
- resources/statefulset.go: dataPVC → commons pvc.BuildDataPVC, tlsVolumes/tlsVolumeMounts
  → commons volume.TLSSecretMount (0o400/readonly cert 불변식 SSOT).

commons 의존 → v0.12.1-0.20260630011743-a54c4a826028 (keiailab-commons#86 2차).

검증:
  go build ./...                                        → OK
  go vet ./internal/resources/...                       → clean
  golangci-lint                                         → 신규 이슈 0 (기존 2건은 무관 파일)
  go test ./internal/resources/...                      → ok
  KUBEBUILDER_ASSETS=… go test ./internal/controller/... → ok (16.7s, envtest 전체 suite)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: phil <phil@keiailab.com>
valkey 의 배치 Job 빌더 3종을 keiailab-commons/pkg/batchjob.Build 로 위임.
exported 시그니처 유지 → 호출부 변경 0.

- resources/backup_job.go BuildBackupJob (rdb-copy)
- resources/upload_job.go BuildUploadJob (S3 업로드)
- resources/download_job.go BuildDownloadJob (S3 다운로드)

Job/PodTemplate 엔벨로프(BackoffLimit=2/TTL=86400/RestartPolicyOnFailure/라벨전파)는
commons SSOT, 컨테이너(valkey-cli/operator)·볼륨·SecurityContext 조립은 valkey 잔류.

검증: go build OK / vet clean / golangci-lint 신규 0 / resources test ok /
KUBEBUILDER_ASSETS=… controller envtest 전체 suite ok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: phil <phil@keiailab.com>
commons#86 머지 + v0.13.0 릴리스 후 clean tag 로 고정.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

Signed-off-by: phil <phil@keiailab.com>
@KeiaiLab-PHIL KeiaiLab-PHIL force-pushed the feat/adopt-commons-builders branch from 399f1cd to 3094480 Compare June 30, 2026 01:55
@KeiaiLab-PHIL KeiaiLab-PHIL marked this pull request as ready for review June 30, 2026 01:56
@KeiaiLab-PHIL KeiaiLab-PHIL merged commit b88e6fc into main Jun 30, 2026
12 of 15 checks passed
@KeiaiLab-PHIL KeiaiLab-PHIL deleted the feat/adopt-commons-builders branch June 30, 2026 02:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant