2026-07-08 15:48:18 +07:00
2026-07-08 14:58:58 +07:00
2026-07-08 14:58:58 +07:00
2026-07-08 15:15:21 +07:00
2026-07-08 14:58:58 +07:00
2026-07-08 15:48:18 +07:00
2026-07-08 14:58:58 +07:00
2026-07-08 15:48:18 +07:00
2026-07-08 15:15:21 +07:00

dbiz-lake-k8s — DBIZ Lakehouse GitOps

Quản deploy lakehouse lên K8s qua ArgoCD. Theo khuôn argo-k8s (App-of-Apps, Helm + YAML thuần). Công cụ: Helm + ApplicationSet. KHÔNG Kustomize.

Git/CI — URL là biến số (không chờ hạ tầng)

  • https://git.renolation.com/renolation/dbiz-lake-k8s.git trong các Application = placeholder repo GitOps. Chạy được với repo BẤT KỲ đang dùng. Đổi repo (vd sang Gitea git.dbiz.com sau này) = một lệnh: grep -rl 'https://git.renolation.com/renolation/dbiz-lake-k8s.git' | xargs sed -i 's#https://git.renolation.com/renolation/dbiz-lake-k8s.git#<url-thật>#g', rồi cập nhật ArgoCD repo creds. Không phải chờ Gitea.
  • <IMAGE_REGISTRY> trong values = registry chứa image. Đổi tương tự khi chuyển registry.
  • CI: Woodpecker (đã có) build + push image. File: .woodpecker/. Secret registry khai trong Woodpecker UI.
  • Đích cuối: code + registry ở Gitea git.dbiz.com (built-in registry) — nhưng KHÔNG chặn việc chạy hôm nay.

Triết lý

  • Lakehouse as a product: DBIZ lake = "khách số 0". Mọi thứ THAM SỐ HOÁ (không hardcode) để sau nhân bản cho khách mua gói (Vietbank/Gemadept) qua ApplicationSet — CHƯA làm, hoãn tới khi có khách thứ 2.
  • Stateful đứng yên, compute di: MinIO (data lake) GIỮ NGUYÊN ngoài K8s, trỏ qua Service+Endpoints. Kafka dựng mới (Strimzi) trên K8s — chấp nhận snapshot CDC lại.
  • dev giống prod: cùng chart, khác values theo env (dev/prod). Helm values-driven, portable.
  • Portable cho on-prem: chart nhận mọi dependency (S3/nguồn/kafka) qua values → chạy được cả trên hạ tầng DBIZ lẫn on-prem tại khách (air-gapped: mirror image sang registry nội bộ khách).

Cấu trúc

charts/lake-cdc-job/        Chart CDC job (SparkApplication) — THAM SỐ HOÁ theo customer
envs/dev/
  apps/                     ArgoCD Applications (App-of-Apps)
    root.yaml               Root -> quét apps/
    infra.yaml              External Service+Endpoints (MinIO ngoài, Postgres nguồn)
    strimzi-operator.yaml   Strimzi (Helm upstream)
    spark-operator.yaml     Spark Operator (Helm upstream)
    kafka-cluster.yaml      -> envs/dev/kafka (Kafka CRD)
    cdc-job.yaml            CDC job (chart lake-cdc-job + values, multi-source)
  kafka/                    Kafka CRD (Strimzi, KRaft, Longhorn PV)
  infra/                    external-services.yaml (IP hạ tầng ngoài)
  values/                   values per-app (cdc-job.yaml = khách số 0 dbiz)
  sealed-secrets/           SealedSecrets (imagePullSecret, creds) — an toàn commit
images/spark-cdc/           Dockerfile (image bundled)
.woodpecker/                Woodpecker CI (build + push image lên Gitea registry)

Điều kiện tiên quyết trên cụm (Phase 0 — dựng TRƯỚC)

  1. ArgoCD (đã có).
  2. Longhorn (StorageClass longhorn) — cho Kafka PV + checkpoint.
  3. Sealed Secrets controller.
  4. cert-manager + ingress (nếu expose UI).
  5. Gitea git.dbiz.com online + repo này + Deploy Token (đọc repo cho ArgoCD, đọc registry cho pull image).
  6. Woodpecker nối Gitea, khai secret gitea_registry_user / gitea_registry_token.

Bootstrap (khi Gitea + nền sẵn sàng)

  1. Điền IP thật vào envs/dev/infra/external-services.yaml (MinIO, Postgres nguồn).
  2. Seal imagePullSecret (Gitea registry, tên gitea-registry) -> envs/dev/sealed-secrets/.
  3. Push images/spark-cdc/** -> Woodpecker tự build + push image lên git.dbiz.com/dbiz/spark-cdc.
  4. kubectl apply -f envs/dev/apps/root.yaml -> ArgoCD sync tất cả.

Nhân bản cho khách mới (TƯƠNG LAI)

  • Copy envs/dev/values/cdc-job.yaml, đổi customer, nguồn, bucket, namespace, s3.endpoint.
  • Nhiều khách -> ApplicationSet (generator theo customer).
  • Mức cách ly (1/2/3) = preset values + namespace/cụm riêng. Vietbank on-prem = cùng chart, cụm khác.
  • S3: DBIZ dựng (ngoài/trong cụm) hoặc khách tự cấp — chỉ đổi s3.endpoint + secret, không sửa chart.

LƯU Ý

  • CDC Docker cũ GIỮ CHẠY tới khi CDC K8s verify xong, rồi mới tắt (không đập cái đang chạy).
  • Version Helm chart (Strimzi/Spark Operator) đang pin TẠM — kiểm bản mới nhất khi dựng thật.
  • 5 VM/1 host Proxmox: HA storage là ảo giác tới khi trải 2 host. Backup (Velero/pg_dump/mc mirror) là phòng thủ thật.
Description
No description provided
Readme 58 KiB
Languages
Dockerfile 100%