fix spark
This commit is contained in:
21
README.md
21
README.md
@@ -22,6 +22,9 @@ Quản deploy lakehouse lên K8s qua ArgoCD. Theo khuôn `argo-k8s` (App-of-Apps
|
|||||||
|
|
||||||
## Cấu trúc
|
## Cấu trúc
|
||||||
```
|
```
|
||||||
|
infra/cluster/ Hạ tầng NỀN cụm (singleton toàn cụm, tách khỏi envs/<env>)
|
||||||
|
root.yaml App-of-apps tầng nền (infra-cluster-root)
|
||||||
|
00-longhorn.yaml Longhorn (Helm upstream, SC longhorn, replica=2, KHÔNG default)
|
||||||
charts/lake-cdc-job/ Chart CDC job (SparkApplication) — THAM SỐ HOÁ theo customer
|
charts/lake-cdc-job/ Chart CDC job (SparkApplication) — THAM SỐ HOÁ theo customer
|
||||||
envs/dev/
|
envs/dev/
|
||||||
apps/ ArgoCD Applications (App-of-Apps)
|
apps/ ArgoCD Applications (App-of-Apps)
|
||||||
@@ -41,17 +44,21 @@ images/spark-cdc/ Dockerfile (image bundled)
|
|||||||
|
|
||||||
## Điều kiện tiên quyết trên cụm (Phase 0 — dựng TRƯỚC)
|
## Điều kiện tiên quyết trên cụm (Phase 0 — dựng TRƯỚC)
|
||||||
1. ArgoCD (đã có).
|
1. ArgoCD (đã có).
|
||||||
2. **Longhorn** (StorageClass `longhorn`) — cho Kafka PV + checkpoint.
|
2. **Sealed Secrets controller** (đã có).
|
||||||
3. **Sealed Secrets controller**.
|
3. **cert-manager** + ingress (nếu expose UI).
|
||||||
4. **cert-manager** + ingress (nếu expose UI).
|
4. **Gitea `git.dbiz.com`** online + repo này + **Deploy Token** (đọc repo cho ArgoCD, đọc registry cho pull image).
|
||||||
5. **Gitea `git.dbiz.com`** online + repo này + **Deploy Token** (đọc repo cho ArgoCD, đọc registry cho pull image).
|
5. **Woodpecker** nối Gitea, khai secret `gitea_registry_user` / `gitea_registry_token`.
|
||||||
6. **Woodpecker** nối Gitea, khai secret `gitea_registry_user` / `gitea_registry_token`.
|
|
||||||
|
> **Longhorn** (StorageClass `longhorn`, cho Kafka PV + checkpoint) KHÔNG còn dựng tay — nay là app GitOps trong `infra/cluster/`, apply ở Bootstrap bước 0. Phải XANH trước khi apply tầng lake.
|
||||||
|
|
||||||
## Bootstrap (khi Gitea + nền sẵn sàng)
|
## Bootstrap (khi Gitea + nền sẵn sàng)
|
||||||
|
0. **Tầng nền cụm TRƯỚC** — apply app-of-apps hạ tầng, chờ Longhorn XANH rồi mới sang bước sau:
|
||||||
|
`kubectl apply -f infra/cluster/root.yaml` (node không có repo -> dùng raw URL của Gitea).
|
||||||
|
Verify: `kubectl get sc longhorn` + pods `longhorn-system` Running.
|
||||||
1. Điền IP thật vào `envs/dev/infra/external-services.yaml` (MinIO, Postgres nguồn).
|
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/`.
|
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`.
|
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ả.
|
4. `kubectl apply -f envs/dev/apps/root.yaml` -> ArgoCD sync tầng lake (cdc-job xin PVC storageClass=longhorn).
|
||||||
|
|
||||||
## Nhân bản cho khách mới (TƯƠNG LAI)
|
## 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.
|
- Copy `envs/dev/values/cdc-job.yaml`, đổi `customer`, nguồn, bucket, namespace, s3.endpoint.
|
||||||
@@ -62,4 +69,6 @@ images/spark-cdc/ Dockerfile (image bundled)
|
|||||||
## LƯU Ý
|
## 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).
|
- 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.
|
- Version Helm chart (Strimzi/Spark Operator) đang pin TẠM — kiểm bản mới nhất khi dựng thật.
|
||||||
|
- Longhorn pin `1.11.3`, `defaultClassReplicaCount=2` — cụm chỉ 2 worker = 2 node lưu trữ (3 control-plane bị taint). `local-path` VẪN default; `longhorn` KHÔNG default. Thêm worker thứ 3 mới nâng replica=3.
|
||||||
|
- Cài Longhorn qua ArgoCD phải để `preUpgradeChecker.jobEnabled=false` — helm hook pre-upgrade sẽ deadlock ở PreSync (chạy trước khi RBAC/CRD tạo).
|
||||||
- 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.
|
- 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.
|
||||||
|
|||||||
@@ -38,7 +38,8 @@ spec:
|
|||||||
- name: KAFKA_BOOTSTRAP
|
- name: KAFKA_BOOTSTRAP
|
||||||
value: "{{ .Values.kafka.bootstrap }}"
|
value: "{{ .Values.kafka.bootstrap }}"
|
||||||
- name: TOPIC_PATTERN
|
- name: TOPIC_PATTERN
|
||||||
value: "{{ .Values.topicPattern }}"
|
# | quote: escape backslash đúng (regex crm\.public\..*) -> YAML hợp lệ
|
||||||
|
value: {{ .Values.topicPattern | quote }}
|
||||||
- name: TARGET_TABLE
|
- name: TARGET_TABLE
|
||||||
value: "{{ .Values.targetTable }}"
|
value: "{{ .Values.targetTable }}"
|
||||||
- name: TRIGGER_INTERVAL
|
- name: TRIGGER_INTERVAL
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ kind: Application
|
|||||||
metadata:
|
metadata:
|
||||||
name: lake-spark-operator-dev
|
name: lake-spark-operator-dev
|
||||||
namespace: argocd
|
namespace: argocd
|
||||||
|
annotations:
|
||||||
|
argocd.argoproj.io/sync-wave: "3"
|
||||||
spec:
|
spec:
|
||||||
project: default
|
project: default
|
||||||
source:
|
source:
|
||||||
@@ -22,4 +24,6 @@ spec:
|
|||||||
namespace: dbiz-lake-dev
|
namespace: dbiz-lake-dev
|
||||||
syncPolicy:
|
syncPolicy:
|
||||||
automated: { prune: true, selfHeal: true }
|
automated: { prune: true, selfHeal: true }
|
||||||
syncOptions: [ CreateNamespace=true ]
|
syncOptions:
|
||||||
|
- CreateNamespace=true
|
||||||
|
- ServerSideApply=true # né "annotations Too long" trên CRD spark-operator
|
||||||
|
|||||||
Reference in New Issue
Block a user