Add service account and role/rolebinding
This commit is contained in:
@@ -25,7 +25,10 @@ flink-cdc-job/
|
||||
└── templates/
|
||||
├── _helpers.tpl
|
||||
├── configmap.yaml # 이 Job 전용 pipeline.yaml (Release.Name 기반 네이밍)
|
||||
└── job.yaml # Kubernetes Job
|
||||
├── 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
|
||||
```
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
# 제출 대상 Session Cluster (flink-cdc-session chart의 FlinkDeployment 이름 + "-rest")
|
||||
sessionCluster:
|
||||
restAddress: flink-cdc-session-rest
|
||||
restAddress: flink-cdc-session-session-rest
|
||||
restPort: 8081
|
||||
|
||||
# PostgreSQL 소스 연결 정보
|
||||
|
||||
@@ -12,6 +12,17 @@ Fully qualified name: Release.Name (chart name 중복 시 제거)
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
ServiceAccount name
|
||||
*/}}
|
||||
{{- define "flink-cdc-job.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "flink-cdc-job.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
|
||||
@@ -9,7 +9,7 @@ spec:
|
||||
backoffLimit: 0
|
||||
template:
|
||||
spec:
|
||||
serviceAccountName: {{ .Values.serviceAccount }}
|
||||
serviceAccountName: {{ include "flink-cdc-job.serviceAccountName" . }}
|
||||
containers:
|
||||
- name: submit
|
||||
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
{{- if .Values.rbac.create }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ include "flink-cdc-job.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "flink-cdc-job.labels" . | nindent 4 }}
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["configmaps"]
|
||||
verbs: ["get", "list"]
|
||||
- apiGroups: [""]
|
||||
resources: ["pods"]
|
||||
verbs: ["get", "list"]
|
||||
{{- end }}
|
||||
@@ -0,0 +1,17 @@
|
||||
{{- if .Values.rbac.create }}
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ include "flink-cdc-job.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "flink-cdc-job.labels" . | nindent 4 }}
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ include "flink-cdc-job.fullname" . }}
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ include "flink-cdc-job.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- end }}
|
||||
@@ -0,0 +1,9 @@
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "flink-cdc-job.serviceAccountName" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
labels:
|
||||
{{- include "flink-cdc-job.labels" . | nindent 4 }}
|
||||
{{- end }}
|
||||
@@ -3,7 +3,12 @@ image:
|
||||
tag: 3.5.0-flink1.20-r1
|
||||
pullPolicy: Always
|
||||
|
||||
serviceAccount: flink
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: "" # defaults to fullname (release name) when empty
|
||||
|
||||
rbac:
|
||||
create: true
|
||||
|
||||
# 제출 대상 Session Cluster REST 엔드포인트
|
||||
# flink-cdc-session chart가 생성한 서비스명: {FlinkDeployment.metadata.name}-rest
|
||||
|
||||
Reference in New Issue
Block a user