114 Commits

Author SHA1 Message Date
wbsong111 3ee1c1ee23 카탈로그 앱 내장 bitnami postgresql → cnpg-cluster 전환 (1차 5개 차트)
이슈 #9에서 결정된 CloudNativePG 채택을 카탈로그 앱에 확장 적용한다.
airflow/lakekeeper/mlflow/superset/flowise 5개 차트가 내장하던 bitnami
postgresql 서브차트를 끄고 앱 전용 cnpg-cluster 인스턴스를 외부 DB로 쓰도록
전환했다. 5개 모두 dev 클러스터 격리 네임스페이스에서 배포 테스트로 실측 검증했다.

gitea/keycloak/dnsup 는 서브차트가 아니라 공유 postgresql-ha 를 외부 참조하며
paasup/dipup 레포 관리 대상이라 제외했다 — 인수인계 문서만 추가했다.

배포 구조:
- ArgoCD ApplicationSet 으로 DB(syncWave 0) → 앱(syncWave 1) 순서를 보장한다.
  기존 openmetadata/victoria-metrics 관례를 따랐다. cnpg-cluster 차트는 범용
  상태로 유지하고 앱별 값은 manifests/applicationset/<app>/ 에 둔다.

검증 중 발견해 함께 고친 문제:
- lakekeeper: cnpg 의 -ro 는 replica 전용이라 instances:1 에서 엔드포인트가
  0개다. 읽기 연결을 -r(전체 라운드로빈)로 교체했다.
- airflow/superset: ingressClassName 누락 + kong 애노테이션 잔존으로 이
  클러스터(apisix 전용)에서 ingress 접근이 아예 불가능했다. apisix + regex
  path 로 교체했다.
- 배포 테스트가 PV 만 지우고 Longhorn Volume CR 을 남겨 storageScheduled 가
  누적됐다(orphan 112개 ~1TB 로 배포 차단). 두 스크립트의 정리 로직을 고쳤다.

재사용 구조화:
- .claude/skills/chart-to-cnpg/ 신규. 남은 4개 차트(langflow-ide, langfuse,
  litellm, nemo)에 같은 절차를 재사용한다. flowise 에 실제 적용해 검증했다.
- 배포 테스트 공통 절차는 .claude/deploy-test-procedure.md, 환경 함정은
  .claude/pitfalls.md 로 단일화하고 앱별 README 는 참조만 남겼다.

관련: #9, #14

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 15:17:46 +09:00
wbsong111 35ce2bb80d Merge pull request #13 from paasup/build/cloudnative-pg-20260804063006
cloudnative-pg: 1.30.0-security-hardened-20260803 → 20260804
2026-08-04 15:39:45 +09:00
github-actions[bot] 6f61c02aaf cloudnative-pg 이미지 태그 갱신: 1.30.0-security-hardened-20260803 → 1.30.0-security-hardened-20260804
게이트 PASS(build-image.yml, workflow_dispatch 트리거)로 확인된 태그로 교체한다.

Co-Authored-By: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-04 06:30:06 +00:00
github-actions[bot] b4a0b87842 etcd 이미지 태그 갱신: 3.7.1-security-hardened-20260803 → 3.7.1-security-hardened-20260804
게이트 PASS(build-image.yml, workflow_dispatch 트리거)로 확인된 태그로 교체한다.

Co-Authored-By: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-08-04 06:08:06 +00:00
wbsong111 14c05f1e61 카탈로그에서 kong·unitycatalog·rancher-monitoring(-crd) 제거
불필요 판단으로 4개 차트 디렉토리를 통째로 삭제한다:
- manifests/helm/kong/2.46.0
- manifests/helm/unitycatalog/0.2.0 (define-chart-resources.md에도 "사용 여부
  검토 필요"로 이미 표시돼 있었음)
- manifests/helm/rancher-monitoring/104.1.2+up57.0.3
- manifests/helm/rancher-monitoring-crd/104.1.2+up57.0.3

문서 정리:
- doc/define-chart-resources.md: 4개 차트의 리소스 프로파일 섹션 + 요약 테이블
  행 삭제(섹션 번호는 재정렬하지 않음 — 범위 밖의 큰 변경이라 별도로 둠)
- doc/change-bitnami-image.md: kong·unity catalog 섹션 삭제(bitnami 이미지
  치환 대상이 더 이상 없음)

doc/chart-restructure-plan.md는 건드리지 않았다 — 2026-01-19 charts/→manifests/
디렉토리 이전을 기록한 변경 이력이라, 그 시점에 실재했던 차트 목록을 지금 기준
으로 고치면 역사 기록이 왜곡된다.

manifests/applicationset 등 다른 배포 경로에서 이 4개 차트를 참조하는 곳이
없음을 확인했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-04 13:04:57 +09:00
wbsong111 6bdea97e51 자체 빌드 이미지 3종 docker.io/paasup 재빌드·push + 카탈로그 values 갱신
cloudnative-pg·cnpg-postgresql·etcd 를 REGISTRY=docker.io/paasup 로 재빌드해
verify.sh·게이트(커버리지 ok, 실효 C/H 0/0, PASS) 확인 후 push, docker manifest
inspect 로 레지스트리 존재를 재확인했다. 기존 참조(docker.io/wbsong111, 이전
security-catalog 빌드)는 dip-catalog 자체 파이프라인으로 검증된 적이 없었다.

카탈로그 values(custom-values.yaml/dip-values.yaml)를 patch-catalog-tag.py 로
새 태그로 교체하고 helm template·extract-helm-images.sh 로 렌더링 결과를
재확인했다. 로컬 docker 계정은 paasup push 권한이 확인됐으나 GitHub Actions
시크릿(DOCKERHUB_USER/TOKEN)의 권한은 별도 확인이 필요하다(MEMORY.md).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-03 15:32:27 +09:00
wbsong111 6878b61efa 자체 빌드 이미지 3종(cloudnative-pg/cnpg-postgresql/etcd) + 대응 헬름 차트 도입
security-catalog 프로젝트에서 첫 실사용 자체 빌드 이미지 3종을 포팅한다 — 전부
상위 태그·베이스 OS 교체로 해소 안 되는 CVE(Go 모듈 정적 링크 또는 미수정 CRITICAL/
HIGH)를 자체 빌드(소스 컴파일 또는 SUSE BCI 재설치)로 대응한다:

- images/cloudnative-pg: CNPG operator, release-1.30 소스 컴파일 + bci-micro
- images/cnpg-postgresql: PostgreSQL 18.4, bci-base + zypper 재설치
- images/etcd: etcd v3.7.1, 소스 컴파일(x/text 강제 업그레이드) + bci-micro

함께 추가:
- manifests/helm/{cloudnative-pg,cnpg-cluster,etcd} — 위 이미지를 참조하는 카탈로그 차트
- scripts/deploy-test/*.sh, .claude/deploy-test-procedure.md — CVE 0건과 별개로
  "실제로 뜨는가"를 검증하는 배포 스모크 테스트
- .claude/pitfalls.md — 자체 빌드/배포 테스트 중 실측한 함정 모음

검토 중 발견해 반영한 수정:
- cloudnative-pg 차트의 image 블록을 etcd와 동일한 registry/repository/tag 3필드+
  따옴표 포맷으로 통일 — 기존 포맷(repository에 registry+repo 결합, 따옴표 없음)은
  patch-catalog-tag.py 의 split 패처가 tag만 갱신하고 repository는 그대로 남기는
  조용한 부분 치환을 일으켜, 향후 레지스트리 마이그레이션 시 깨진 참조를 만들 수 있었다
- cnpg-cluster 차트의 SLES 커버리지 코멘트를 최신 실측(trivy가 SLES 15.7을 정상
  커버함, 2026-07-29 재측정)에 맞게 정정 — 폐기된 "측정 불가/OVAL 우회 필요" 결론이
  남아있었다
- CLAUDE.md/MEMORY.md 의 "images/ 디렉토리 없음" 서술을 갱신하고, 레지스트리
  마이그레이션(docker.io/wbsong111 → docker.io/paasup)·decisions/analysis 문서 이관·
  리소스 프로파일 추가를 다음 작업으로 기록

이 3개 이미지는 아직 dip-catalog 자체 CI(build-image.yml)로 빌드·게이트·push 를
실행해본 적이 없다 — 현재 참조 태그는 security-catalog 쪽에서 이미 검증된 것이다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-03 12:03:37 +09:00
wbsong111 41af7537a0 feat(catalog): add qdrant 1.18.2 chart
- Pull upstream qdrant-helm chart v1.18.2 (appVersion v1.18.2)
- Add PaaSup custom overrides: custom-values.yaml, dip-values.yaml
  (ingress.ingressClassName=apisix), dip resource/volume quotas
- No breaking changes to existing overrides vs 1.12.4; helm lint passes,
  image renders as docker.io/qdrant/qdrant:v1.18.2

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 14:44:13 +09:00
wbsong111 18ca8cd979 fix(catalog): exclude windowsExporter from rancher-monitoring
Windows 노드 미사용 + Windows 이미지라 trivy 스캔 불가 → windowsExporter.enabled=false
로 SBOM/패키징 대상에서 제외.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 16:32:22 +09:00
wbsong111 1d8e68eaf5 fix(catalog): repoint dead upstream image refs to existing coordinates
미러 없이 이미지 목록으로 오프라인 패키징하므로, 레지스트리에서 사라진 참조는
패키징을 깨뜨림. 존재 검증된 좌표로 정정:
- kafka:      bitnami/kafka        → bitnamilegacy/kafka
- kyverno:    bitnami/kubectl      → bitnamilegacy/kubectl (webhooks/policyReports cleanup)
- strimzi:    defaultImageRegistry ""(→docker.io) → quay.io (strimzi 는 quay 발행)
- nemo:       gcr.io/kubebuilder/kube-rbac-proxy → quay.io/brancz/kube-rbac-proxy
- unitycatalog: tag ""(→appVersion SNAPSHOT, 미발행) → v0.3.0

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 16:21:53 +09:00
wbsong111 2af7fcb43d feat(sbom): add Helm catalog SBOM+vuln pipeline (CycloneDX)
manifests/helm 카탈로그 전 이미지의 SBOM(CycloneDX)과 취약점 리포트를
생성하는 파이프라인 추가. 컨테이너 내부 trivy/helm 바이너리 직접 호출.

- doc/scripts/extract-helm-images.sh: helm template 렌더로 이미지 인벤토리 추출
- doc/scripts/generate-sbom.sh: trivy image --format cyclonedx (이미지 1회 pull)
- doc/scripts/scan-sbom.sh: trivy sbom 로 SBOM 기반 오프라인 취약점 스캔
- .github/workflows/sbom.yml: 스케줄(전체)+PR(증분)+수동, 산출물은 아티팩트
- doc/sbom-pipeline.md: 파이프라인 설계·운영 문서(단일)
- latest/무태그 digest 고정: mlflow postgresql, vllm-openai(v0.24.0)
- .gitignore: 파이프라인 산출물 제외

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 12:15:58 +09:00
wbsong111 9676fec2f3 docs: correct VictoriaLogs tenant header to AccountID/ProjectID across docs
otelcol 헤더 수정(aef6439)에 맞춰 아키텍처 문서·vlogs/otelcol CUSTOM-README·
vlogs custom-values 주석의 VictoriaLogs-AccountID 참조를 AccountID/ProjectID 로 정정.
VictoriaLogs-* 접두 헤더 무시(전량 acct0) 경고 추가.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 15:45:10 +09:00
wbsong111 aef64390f1 fix(otelcol): use AccountID/ProjectID headers for VictoriaLogs multitenancy
로그 테넌트 라우팅이 동작하지 않던 결함 수정. otelcol exporter가
'VictoriaLogs-AccountID' 헤더를 사용했으나 VictoriaLogs는 이를 인식하지 못해
모든 로그가 account 0 으로 적재됨(dev 실측: AccountID:1 쓰기는 acct1,
VictoriaLogs-AccountID:1 쓰기는 acct0). 올바른 헤더 AccountID/ProjectID 로 교체.

- opentelemetry-collector custom-values(로그 3파이프라인) + events(acct0)
- docs: deploy-guide §1.4 relabel '[]'=격리아님 경고+예시, vmagent CUSTOM-README keep 규칙 예시
- .gitignore: tenant-verification/ (로컬 검증 산출물)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 15:37:46 +09:00
wbsong111 d35117a976 docs: capture internal-CA trust requirement for vmauth/perses OIDC + perses login=preferred_username
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 16:11:18 +09:00
wbsong111 9fab760992 vmauth: mount internal root CA + SSL_CERT_FILE for Keycloak OIDC discovery (fix x509)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 16:06:14 +09:00
wbsong111 7ddb1f062d improvements: ApplicationSet ignoreDifferences(SS VCT) + vmauth drop unauthorized_user
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 15:16:21 +09:00
wbsong111 14fb0d214a perses overlay template: globalAdminUsers note (login=preferred_username)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 15:01:57 +09:00
wbsong111 d1f7c77201 Adjust VM ApplicationSet for test env + per-URL tenant routing rationale
- applicationset: ns argocd→platform, repoURL service-catalog/tenant-catalog @master
- vmagent custom-values/CUSTOM-README: per-URL 채택 근거 정정(인라인 가능하나 보안·격리 위해 per-URL)
- architecture doc: §5.1 테넌트 라우팅 결정 기록 + monitoring 배포 테스트 문서

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 14:36:58 +09:00
wbsong111 6290322f1b Add VictoriaMetrics observability stack + sync catalog for monitoring test
- VM stack 10 charts: victoria-metrics-cluster/auth, victoria-logs-cluster,
  victoria-metrics-agent/alert, opentelemetry-collector, kube-state-metrics,
  prometheus-node-exporter, alertmanager, perses (JWT/OIDC, Infisical-ready)
- ArgoCD ApplicationSet (syncWave) + per-chart dip-values overlays
- doc/victoria-metrics-architecture.md, define-chart-resources updates
- includes pending working-tree changes (mlflow, kubeflow, apisix, CLAUDE.md)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 11:10:51 +09:00
ychangkim a55427730e dip quotas yaml add 2026-06-18 15:23:09 +09:00
ychangkim 6805aa652f dip questions yaml add 2026-06-16 16:37:07 +09:00
wbsong111 f4d287abef update lakekeeper/0.11.0
- chart 0.8.1 → 0.11.0 (appVersion 0.10.4 → 0.12.2)
- deps: postgres 1.5.8 → 1.5.13, openfga 0.2.44 → 0.2.62
- ingress: Kong → APISIX (use-regex + path /.*, cluster-issuer)
- openfga.playground 비활성화 (preshared 인증 패닉 방지)
- breaking=false, custom-values 키 전부 호환

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 09:13:31 +09:00
ychangkim 1ab3d4d31c mlflow dip values 2026-06-10 15:10:47 +09:00
ychangkim 4064cd8971 dip values add 2026-06-09 16:30:22 +09:00
ychangkim 409536ee7c dip values add 2026-06-09 14:53:33 +09:00
ychangkim 3da2d3b4b8 dip-values add 2026-06-09 13:07:22 +09:00
ychangkim 5590af0ec5 dip-values add 2026-06-09 13:06:40 +09:00
ychangkim e64f933901 dip-values add 2026-06-09 11:51:43 +09:00
wbsong111 162d9b2c2a Update jupyter configuration for network connection 2026-05-06 09:00:16 +09:00
wbsong111 547dc58e8b patch before_request.py to allow workspace creation with EDIT permission 2026-04-27 16:58:04 +09:00
wbsong111 5fac7175a5 Update mlflow REAMD.md 2026-04-27 11:10:33 +09:00
wbsong111 bc4396a62e Merge remote-tracking branch with mlflow 1.9.0 README conflict resolved
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 10:44:11 +09:00
wbsong111 b897f0ad37 Add multi-tenant feature 2026-04-27 10:39:55 +09:00
wbsong111 e678775672 Update README.md 2026-04-24 09:59:57 +09:00
wbsong111 ba0a4b19bc Update CUSTOM-README.md 2026-04-23 16:34:40 +09:00
wbsong111 8e68b1d603 Update CUSTOM-README.md 2026-04-23 16:32:52 +09:00
wbsong111 d31a1fae18 Add service account and role/rolebinding 2026-04-23 16:30:38 +09:00
wbsong111 ed0542e36d Add service account and role/rolebinding 2026-04-23 16:23:37 +09:00
wbsong111 502e7f8e2b Replace hardcoded resource names with Helm template helpers 2026-04-23 14:35:15 +09:00
wbsong111 9c30bf0a80 Replace hardcoded resource names with Helm template helpers 2026-04-23 14:22:02 +09:00
wbsong111 aec5bc74ac Replace hardcoded resource names with Helm template helpers 2026-04-23 14:15:58 +09:00
wbsong111 3a78d39b7a Add chart mlflow 1.9.0 2026-04-22 17:08:02 +09:00
wbsong111 b8942c5f46 Modify image name 2026-04-22 17:04:56 +09:00
wbsong111 24ee4ec731 Add chart flink cdc job 2026-04-21 16:43:09 +09:00
wbsong111 bae49f352c Update BUILD-README.md 2026-04-21 16:13:00 +09:00
wbsong111 03460b4fa6 Add chart flink cdc session cluster chart 2026-04-21 16:10:10 +09:00
ychangkim 8aca1e74f9 fix: prevent root-owned .cache files by adding --no-cache-dir to pip upgrade
Running pip as root (runAsUser: 0) created /home/jovyan/.cache with root
ownership, causing permission issues for the jovyan user at runtime.
2026-04-20 14:37:27 +09:00
wbsong111 baba7dcf55 Define resource profiles for cloudbeaver 2026-04-13 16:23:08 +09:00
wbsong111 83c61ee0e2 Add chart cloudbeaver 1.1.4 2026-04-13 13:09:02 +09:00
ychangkim eb11d74e9f feat: add configurable shmSizeLimit for /dev/shm in jupyterlab chart
Introduce shmSizeLimit value (default 512Mi) to control the size of the
RAM-backed /dev/shm volume. Leave empty to apply no limit.
2026-04-01 17:40:33 +09:00