Add service account and role/rolebinding

This commit is contained in:
wbsong111
2026-04-23 16:23:37 +09:00
parent 502e7f8e2b
commit ed0542e36d
8 changed files with 105 additions and 12 deletions
+44 -9
View File
@@ -24,8 +24,11 @@ flink-cdc-job/
├── values.yaml
└── templates/
├── _helpers.tpl
├── configmap.yaml # 이 Job 전용 pipeline.yaml (Release.Name 기반 네이밍)
── job.yaml # Kubernetes Job
├── configmap.yaml # 이 Job 전용 pipeline.yaml (Release.Name 기반 네이밍)
── job.yaml # Kubernetes Job
├── serviceaccount.yaml # ServiceAccount (serviceAccount.create: true 시 생성)
├── role.yaml # Role (rbac.create: true 시 생성)
└── rolebinding.yaml # RoleBinding (rbac.create: true 시 생성)
```
## 배포
@@ -36,9 +39,11 @@ flink-cdc-job/
helm install cdc-job ./flink/helm/flink-cdc-job -n flink-test
```
Release 이름이 Job ConfigMap 이름으로 사용됩니다.
Release 이름이 Job, ConfigMap, ServiceAccount, Role 이름으로 사용됩니다.
- Job: `cdc-job`
- ConfigMap: `cdc-job-config`
- ServiceAccount: `cdc-job`
- Role / RoleBinding: `cdc-job`
### 여러 파이프라인 동시 배포
@@ -77,10 +82,29 @@ helm uninstall cdc-job -n flink-test
| 파라미터 | 기본값 | 설명 |
|----------|--------|------|
| `image.repository` | `wbsong111/flink-cdc-pipeline` | 컨테이너 이미지 레지스트리/이름 |
| `image.repository` | `paasup/flink-cdc-pipeline` | 컨테이너 이미지 레지스트리/이름 |
| `image.tag` | `3.5.0-flink1.20-r1` | 이미지 태그 |
| `image.pullPolicy` | `Always` | 이미지 풀 정책 |
| `serviceAccount` | `flink` | Kubernetes ServiceAccount 이름 |
### ServiceAccount
| 파라미터 | 기본값 | 설명 |
|----------|--------|------|
| `serviceAccount.create` | `true` | ServiceAccount 생성 여부 |
| `serviceAccount.name` | `""` | SA 이름. 비어있으면 Release.Name 사용 |
### RBAC
| 파라미터 | 기본값 | 설명 |
|----------|--------|------|
| `rbac.create` | `true` | Role / RoleBinding 생성 여부 |
`rbac.create: true` 시 생성되는 Role 권한:
| 리소스 | 권한 |
|--------|------|
| `configmaps` | `get`, `list` |
| `pods` | `get`, `list` |
### Session Cluster 연결
@@ -89,8 +113,10 @@ helm uninstall cdc-job -n flink-test
| `sessionCluster.restAddress` | `flink-cdc-session-rest` | Session Cluster REST 서비스명 |
| `sessionCluster.restPort` | `8081` | REST 포트 |
> `restAddress`는 FlinkDeployment 이름에 `-rest`를 붙인 값입니다.
> 예: FlinkDeployment `flink-cdc-session` → 서비스명 `flink-cdc-session-rest`
> `restAddress`는 `flink-cdc-session` chart의 FlinkDeployment 이름에 `-rest`를 붙인 값입니다.
> `flink-cdc-session` chart는 FlinkDeployment를 `{release-name}-session`으로 생성하므로
> REST 서비스명은 `{release-name}-session-rest`가 됩니다.
> 예: release name `flink-cdc-session` → `sessionCluster.restAddress: flink-cdc-session-session-rest`
### Flink CDC 글로벌 설정
@@ -128,7 +154,7 @@ helm uninstall cdc-job -n flink-test
| `sink.catalog.s3Endpoint` | `https://minio.example.org` | S3 호환 스토리지 엔드포인트 |
| `sink.catalog.s3PathStyleAccess` | `"true"` | Path-style 접근 여부 |
| `sink.catalog.oauth2Uri` | `https://keycloak.example.org/...` | OAuth2 토큰 엔드포인트 |
| `sink.catalog.credential` | `lakekeeper-admin:...` | OAuth2 client_id:client_secret |
| `sink.catalog.credential` | `lakekeeper-admin:...` | OAuth2 `client_id:client_secret` |
| `sink.catalog.scope` | `lakekeeper` | OAuth2 scope |
### 라우팅
@@ -148,6 +174,9 @@ route:
### values-users.yaml (사용자/상품 테이블)
```yaml
sessionCluster:
restAddress: flink-cdc-session-session-rest
pipeline:
name: cdc-users
parallelism: 2
@@ -172,6 +201,9 @@ route:
### values-orders.yaml (주문 테이블)
```yaml
sessionCluster:
restAddress: flink-cdc-session-session-rest
pipeline:
name: cdc-orders
parallelism: 4
@@ -198,7 +230,7 @@ helm template cdc-job . -n flink-test
helm lint .
# 여러 release 이름으로 ConfigMap/Job 이름이 분리되는지 확인
# 여러 release 이름으로 리소스 이름이 분리되는지 확인
helm template cdc-users . -n flink-test | grep "name:"
helm template cdc-orders . -n flink-test | grep "name:"
```
@@ -211,4 +243,7 @@ kubectl get job -n flink-test
# Job 로그 확인
kubectl logs -n flink-test job/cdc-job
# Flink REST API로 Job 상태 확인
kubectl exec -n flink-test <jobmanager-pod> -- curl -s http://localhost:8081/jobs
```