Repository for dip
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

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