Flink CDC Session 배포
1. 배포 방법
Session Cluster 먼저 배포 후 Job 활성화 (권장)
2. custom-values.yaml 설명
1) ServiceAccount / RBAC
| Name |
설명 |
기본값 |
serviceAccount.create |
ServiceAccount 생성 여부 |
true |
serviceAccount.name |
SA 이름. 비어있으면 Release.Name 사용 |
"" |
rbac.create |
Role / RoleBinding 생성 여부 |
true |
rbac.create: true 시 JobManager가 TaskManager(Deployment)를 관리하기 위한 RBAC 권한이 함께 생성됩니다.
2) 체크포인트 저장소
| Name |
설명 |
기본값 |
checkpointStorage.storageType |
저장소 유형 (s3 | gcs) |
s3 |
checkpointStorage.checkpointDir |
체크포인트 저장 경로 |
s3://flink/checkpoints |
checkpointStorage.savepointDir |
세이브포인트 저장 경로 |
s3://flink/savepoints |
checkpointStorage.s3.endpoint |
S3/MinIO 엔드포인트 |
http://minio.minio.svc.cluster.local:9000 |
checkpointStorage.s3.pathStyleAccess |
Path-style 접근 여부 (MinIO는 "true") |
"true" |
checkpointStorage.s3.existingSecret |
자격증명 Secret 이름 |
minio-credentials |
3) Ingress 설정
| Name |
설명 |
기본값 |
ingress.enabled |
Ingress 활성화 여부 |
true |
ingress.host |
Flink Web UI 호스트명 |
flink-cdc-session.example.org |
ingress.className |
IngressClass 이름 |
kong |
ingress.annotations |
Ingress 어노테이션 |
cert-manager + Kong HTTPS 설정 |
4) Truststore (사설 CA 환경)
| Name |
설명 |
기본값 |
truststore.enabled |
외부 JKS 사용 여부 |
true |
truststore.secretName |
기존 Secret 이름 지정. 비어있으면 {release-name}-flink-truststore 자동 사용 |
"" |
truststore.secretName: flink-truststore 처럼 기존 Secret을 지정하면 chart가 Secret을 새로 생성하지 않고 재사용합니다.
5) Job 설정
| Name |
설명 |
기본값 |
job.enabled |
CDC Job 활성화 여부 |
false |
주의: Session Cluster가 RUNNING 상태가 된 후 job.enabled: true로 upgrade하세요.
6) Flink 클러스터 리소스 (values.yaml에서 조정)
| Name |
설명 |
기본값 |
jobManager.memory |
JobManager 메모리 |
1024m |
jobManager.cpu |
JobManager CPU |
0.5 |
taskManager.replicas |
TaskManager 인스턴스 수 |
3 |
taskManager.memory |
TaskManager 메모리 |
2048m |
taskManager.cpu |
TaskManager CPU |
1 |
taskManager.taskSlots |
TaskManager 슬롯 수 |
2 |
7) PostgreSQL 소스 (values.yaml에서 조정)
| Name |
설명 |
기본값 |
postgres.hostname |
PostgreSQL 호스트 |
postgres-postgresql.flink-test.svc.cluster.local |
postgres.port |
PostgreSQL 포트 |
5432 |
postgres.username |
CDC 전용 사용자 |
flink_cdc |
postgres.password |
사용자 패스워드 |
password |
postgres.slotName |
Replication slot 이름 |
flink_cdc_slot |
postgres.tables |
CDC 대상 테이블 목록 |
testdb.public.orders,testdb.public.users |
8) Iceberg 싱크 (values.yaml에서 조정)
| Name |
설명 |
기본값 |
sink.catalog.uri |
Lakekeeper REST URI |
https://lakekeeper.example.org/catalog |
sink.catalog.warehouse |
카탈로그 warehouse 이름 |
minio |
sink.catalog.s3Endpoint |
Iceberg 데이터 저장소 엔드포인트 |
https://minio.example.org |
sink.catalog.oauth2Uri |
Keycloak OAuth2 토큰 URI |
https://keycloak.example.org/… |
sink.catalog.credential |
client_id:client_secret |
- |
sink.catalog.scope |
OAuth2 scope |
lakekeeper |
3. 사전 준비: Secret 생성
3.1 MinIO 자격증명 Secret
3.2 Truststore Secret (truststore.enabled: true 인 경우)
공인 CA 환경(Let's Encrypt 등)에서는 truststore.enabled: false로 설정하면 truststore Secret 불필요합니다.
4. 배포 후 확인
5. 삭제
6. 참고
자세한 파라미터 설명, truststore 생성 방법, 렌더링 확인 방법은 README.md를 참조하세요.