first commit

This commit is contained in:
2026-07-08 14:58:58 +07:00
commit 634c8e8ba5
19 changed files with 471 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: lake-cdc-job-dev
namespace: argocd
spec:
project: default
sources:
- repoURL: <REPO_URL>
targetRevision: main
path: charts/lake-cdc-job
helm:
valueFiles:
- $values/envs/dev/values/cdc-job.yaml
- repoURL: <REPO_URL>
targetRevision: main
ref: values
destination:
server: https://kubernetes.default.svc
namespace: dbiz-lake-dev
syncPolicy:
automated: { prune: true, selfHeal: true }

22
envs/dev/apps/infra.yaml Normal file
View File

@@ -0,0 +1,22 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: lake-infra-dev
namespace: argocd
spec:
project: default
source:
repoURL: <REPO_URL>
targetRevision: main
path: envs/dev/infra
directory:
recurse: true
destination:
server: https://kubernetes.default.svc
namespace: dbiz-lake-dev
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View File

@@ -0,0 +1,17 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: lake-kafka-dev
namespace: argocd
spec:
project: default
source:
repoURL: <REPO_URL>
targetRevision: main
path: envs/dev/kafka
directory: { recurse: true }
destination:
server: https://kubernetes.default.svc
namespace: dbiz-lake-dev
syncPolicy:
automated: { prune: true, selfHeal: true }

20
envs/dev/apps/root.yaml Normal file
View File

@@ -0,0 +1,20 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: lake-root-dev
namespace: argocd
spec:
project: default
source:
repoURL: <REPO_URL>
targetRevision: main
path: envs/dev/apps
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true

View File

@@ -0,0 +1,25 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: lake-spark-operator-dev
namespace: argocd
spec:
project: default
source:
repoURL: https://kubeflow.github.io/spark-operator
chart: spark-operator
targetRevision: 2.1.1 # pin (kiểm bản mới khi dựng)
helm:
releaseName: spark-operator
values: |
spark:
jobNamespaces:
- dbiz-lake-dev
webhook:
enable: true
destination:
server: https://kubernetes.default.svc
namespace: dbiz-lake-dev
syncPolicy:
automated: { prune: true, selfHeal: true }
syncOptions: [ CreateNamespace=true ]

View File

@@ -0,0 +1,19 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: lake-strimzi-operator-dev
namespace: argocd
spec:
project: default
source:
repoURL: https://strimzi.io/charts/
chart: strimzi-kafka-operator
targetRevision: 0.45.0 # pin version (kiểm bản mới nhất khi dựng thật)
helm:
releaseName: strimzi
destination:
server: https://kubernetes.default.svc
namespace: dbiz-lake-dev
syncPolicy:
automated: { prune: true, selfHeal: true }
syncOptions: [ CreateNamespace=true ]

View File

@@ -0,0 +1,50 @@
# Service + Endpoints không selector -> trỏ tới hạ tầng NGOÀI K8s (theo pattern argo-k8s).
# MinIO lake: GIỮ NGUYÊN, K8s compute trỏ vào đây như S3 endpoint.
# ĐIỀN IP THẬT của máy chạy MinIO (VM lake) trước khi apply.
---
apiVersion: v1
kind: Service
metadata:
name: minio-lake
namespace: dbiz-lake-dev
spec:
ports:
- name: s3
port: 9000
targetPort: 9000
---
apiVersion: v1
kind: Endpoints
metadata:
name: minio-lake
namespace: dbiz-lake-dev
subsets:
- addresses:
- ip: 192.168.110.37 # <-- ĐIỀN IP máy MinIO (VM lake)
ports:
- name: s3
port: 9000
---
# Postgres nguồn CRM (172.20.109.5) — để Debezium/Strimzi trỏ tới khi CDC
apiVersion: v1
kind: Service
metadata:
name: crm-source-pg
namespace: dbiz-lake-dev
spec:
ports:
- name: pg
port: 5432
targetPort: 5432
---
apiVersion: v1
kind: Endpoints
metadata:
name: crm-source-pg
namespace: dbiz-lake-dev
subsets:
- addresses:
- ip: 172.20.109.5
ports:
- name: pg
port: 5432

45
envs/dev/kafka/kafka.yaml Normal file
View File

@@ -0,0 +1,45 @@
# Strimzi Kafka (KRaft mode, không Zookeeper). PV qua Longhorn.
# Dev: 1 broker; prod: 3 broker (đổi replicas + storage).
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaNodePool
metadata:
name: dual-role
namespace: dbiz-lake-dev
labels:
strimzi.io/cluster: lake-kafka
spec:
replicas: 1
roles: [ controller, broker ]
storage:
type: persistent-claim
size: 20Gi
class: longhorn
deleteClaim: false
---
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: lake-kafka
namespace: dbiz-lake-dev
annotations:
strimzi.io/node-pools: enabled
strimzi.io/kraft: enabled
spec:
kafka:
version: 3.9.0
listeners:
- name: plain
port: 9092
type: internal
tls: false
config:
# message to (giải bài RecordTooLarge đã gặp): 10MB
message.max.bytes: 10485760
offsets.topic.replication.factor: 1
transaction.state.log.replication.factor: 1
transaction.state.log.min.isr: 1
default.replication.factor: 1
min.insync.replicas: 1
entityOperator:
topicOperator: {}
userOperator: {}

View File

View File

@@ -0,0 +1,23 @@
# DBIZ lake — "khách số 0". Nhân bản: copy file này, đổi customer + nguồn + bucket.
customer: dbiz
image:
repository: git.dbiz.com/dbiz/spark-cdc # <-- Gitea registry built-in (git.dbiz.com/dbiz/spark-cdc)
tag: "latest"
imagePullSecret: gitea-registry
kafka:
bootstrap: "lake-kafka-kafka-bootstrap:9092"
topicPattern: "crm\\.public\\..*"
targetTable: "iceberg.raw_crm.cdc_events"
triggerInterval: "30 seconds"
catalog:
uri: "http://polaris:8181/api/catalog"
warehouse: "dbiz_warehouse"
s3:
endpoint: "http://minio-lake:9000"
region: "us-east-1"
checkpoint:
storageClass: longhorn
size: 5Gi

View File