You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.1 KiB
128 lines
4.1 KiB
image:
|
|
repository: paasup/flink-cdc-pipeline
|
|
tag: 3.5.0-flink1.20-r1
|
|
pullPolicy: Always
|
|
|
|
flinkVersion: v1_20
|
|
serviceAccount:
|
|
create: true
|
|
name: "" # defaults to fullname (release name) when empty
|
|
|
|
rbac:
|
|
create: true
|
|
|
|
ingress:
|
|
enabled: false
|
|
host: "flink-cdc-session.example.org"
|
|
className: ""
|
|
annotations: {}
|
|
|
|
jobManager:
|
|
replicas: 1
|
|
memory: 1024m
|
|
cpu: 0.5
|
|
|
|
taskManager:
|
|
replicas: 3
|
|
memory: 2048m
|
|
cpu: 1
|
|
taskSlots: 2
|
|
|
|
# ──────────────────────────────────────────────────────────────
|
|
# CheckpointStorage: 체크포인트/세이브포인트 저장 위치 + 자격증명 (WHERE)
|
|
# storageType에 해당하는 하위 블록(gcs 또는 s3)만 설정
|
|
# ──────────────────────────────────────────────────────────────
|
|
checkpointStorage:
|
|
storageType: s3 # gcs | s3
|
|
checkpointDir: s3://my-bucket/flink/checkpoints
|
|
savepointDir: s3://my-bucket/flink/savepoints
|
|
|
|
# S3 (storageType: s3 일 때 설정)
|
|
# endpoint 비어있음 → AWS S3 / MinIO 등: https://minio.example.org
|
|
# accessKeyId/secretAccessKey 모두 비어있음 → IAM Role / IRSA 사용
|
|
# existingSecret 지정 시 → 기존 Secret에서 자격증명 참조 (accessKeyId 값보다 우선)
|
|
s3:
|
|
endpoint: ""
|
|
pathStyleAccess: "false"
|
|
accessKeyId: ""
|
|
secretAccessKey: ""
|
|
existingSecret: ""
|
|
accessKeyIdKey: access-key-id
|
|
secretAccessKeyKey: secret-access-key
|
|
# GCS (storageType: gcs 일 때 설정)
|
|
gcs:
|
|
credentialSecret: gcs-key
|
|
credentialPath: /opt/flink/gcs-key/key.json
|
|
create: false
|
|
# create: true 시 필요: base64 인코딩된 key.json 파일 내용
|
|
# base64json: ""
|
|
|
|
# 체크포인트 동작 설정 (HOW)
|
|
checkpoint:
|
|
interval: 60s
|
|
mode: EXACTLY_ONCE
|
|
|
|
# Secret 관리
|
|
# create: false → 기존 Secret 참조 (kubectl create secret으로 별도 생성 필요)
|
|
# create: true → 차트가 Secret 리소스를 직접 생성 (base64 값 필수)
|
|
truststore:
|
|
# enabled: true → 외부 JKS를 사용. 싱크/소스 엔드포인트가 사설 CA 인증서를 사용할 때 필요.
|
|
# enabled: false → 외부 JKS 미사용. 모든 엔드포인트가 공인 CA 인증서를 사용할 때 설정.
|
|
# JVM 기본 cacerts로 TLS 검증을 수행하며, truststore Secret도 불필요.
|
|
enabled: false
|
|
password: changeit
|
|
create: false
|
|
secretName: "" # 기존 Secret 이름 지정 시 사용. 비어있으면 <fullname>-flink-truststore 사용
|
|
# create: true 시 필요: base64 인코딩된 truststore.jks 파일 내용
|
|
# base64jks: ""
|
|
|
|
# Flink CDC 글로벌 설정 (flink-cdc.yaml)
|
|
flinkCdc:
|
|
parallelism: 1
|
|
schemaChangeBehavior: EVOLVE
|
|
|
|
# PostgreSQL 소스
|
|
postgres:
|
|
hostname: postgres-postgresql.flink-test.svc.cluster.local
|
|
port: 5432
|
|
username: flink_cdc
|
|
password: password
|
|
slotName: flink_cdc_slot
|
|
decodingPlugin: pgoutput
|
|
tables: testdb.public.orders,testdb.public.users
|
|
|
|
# 파이프라인 설정
|
|
pipeline:
|
|
name: pg-to-iceberg-test
|
|
parallelism: 2
|
|
checkpointInterval: 60s
|
|
|
|
# Iceberg REST 카탈로그 싱크
|
|
sink:
|
|
catalog:
|
|
uri: https://lakekeeper.example.org/catalog
|
|
warehouse: minio
|
|
s3Endpoint: https://minio.example.org
|
|
s3PathStyleAccess: "true"
|
|
oauth2Uri: https://keycloak.example.org/realms/paasup/protocol/openid-connect/token
|
|
credential: lakekeeper-admin:wMyE9WNn50DH8yycLXwLTmMmu66JU7GV
|
|
scope: lakekeeper
|
|
|
|
# 소스→싱크 테이블 라우팅
|
|
# source-table: PostgreSQL CDC emit 형식 (schema.table)
|
|
# sink-table: Iceberg namespace.table 형식
|
|
route:
|
|
- sourceTable: public.orders
|
|
sinkTable: testdb_public.orders
|
|
- sourceTable: public.users
|
|
sinkTable: testdb_public.users
|
|
|
|
# CDC 파이프라인 Job 제출
|
|
# enabled: false → Session Cluster만 배포 (Job 생략)
|
|
# enabled: true → Session Cluster + Job 함께 배포
|
|
job:
|
|
enabled: true
|
|
name: submit-cdc
|
|
restAddress: flink-cdc-session-rest
|
|
restPort: 8081
|
|
pipelineFile: ./conf/pipeline.yaml
|
|
|