# flink-sql-gateway 버전 갱신 가이드

## 1. git 작업 환경 구성

- DIP 카탈로그 git 다운로드
```
$ git clone https://github.com/paasup/dip-catalog.git
```

- 작업 브랜치로 체크아웃
```
$ git checkout -b update-flink-sql-gateway/0.1.0
```

## 2. helm 차트 개발 및 업데이트

- 현재 flink-sql-gateway 차트는 직접 작성하여 업데이트 중입니다.
- 기존 오픈소스 차트를 기반으로 하지 않고, 프로젝트 요구사항에 맞게 커스텀 개발하고 있습니다.

### 2.1 차트 구조
```
flink-sql-gateway/0.1.0/
├── Chart.yaml                 # 차트 메타데이터
├── values.yaml                # 기본 설정값
├── custom-values.yaml         # 커스텀 설정값
├── BUILD-README.md           # 빌드 가이드 (본 파일)
├── CUSTOM-README.md          # 배포 가이드
├── deployment.md             # 상세 배포 문서
└── templates/
    ├── _helpers.tpl          # 헬퍼 템플릿
    ├── configmaps.yaml       # 설정 맵
    ├── flink-session-cluster.yaml  # Flink 클러스터
    ├── flink-sql-gateway.yaml      # SQL Gateway
    ├── rbac.yaml            # 권한 설정
    ├── services.yaml        # 서비스 정의
    └── sql-client.yaml      # SQL 클라이언트
```

### 2.2 개발 중인 주요 기능
- Apache Flink SQL Gateway 배포
- Flink Session Cluster 통합
- 외부 Python 클라이언트 접근 최적화
- SSL/TLS 인증서 지원
- Kafka 연동 설정
- MinIO/S3 스토리지 연동

## 3. git push 및 tag 추가

- 갱신작업 진행후 commit
```sh
$ git add .
$ git commit -m "update flink-sql-gateway/0.1.0"
```

- main 브랜치에 체크아웃 후 merge
```sh
$ git checkout main
$ git merge update-flink-sql-gateway/0.1.0
```

- git에 push 후 작업 브랜치 삭제
```sh
$ git push -u origin main
$ git branch -d update-flink-sql-gateway/0.1.0
```

- git tag 추가 후 push
```sh
$ git tag flink-sql-gateway/0.1.0
$ git push origin flink-sql-gateway/0.1.0
```

## 4. 차트 버전 정보

- flink-sql-gateway/0.1.0
  - Apache Flink SQL Gateway 2.0.1 기반
  - 외부 Python 클라이언트 접근에 최적화된 구성
  - SSL/TLS 인증서 및 Truststore 지원
  - Kafka, MinIO 연동 설정 포함
  - 서비스 배포를 위하여 custom-values.yaml에 정의하였다.
  - 차트의 빌드 방법과 배포 방법을 BUILD-README.md, CUSTOM-README.md 문서에 작성하였다.

## 5. 개발 참고사항

### 5.1 커스텀 이미지
- 기본 이미지: `paasup/flink-sql:2.0.1`
- Kafka 커넥터 및 SSL 인증서 지원 포함

### 5.2 주요 의존성
- Flink Kubernetes Operator 필요
- Kubernetes 1.20+ 권장
- Helm 3.x 필요

### 5.3 보안 설정
- Truststore 기반 SSL/TLS 인증서 관리
- Kubernetes Secret을 통한 인증서 배포
- 환경 변수를 통한 보안 정보 주입

## 참고) 관련 문서
- [Flink SQL Gateway 공식 문서](https://nightlies.apache.org/flink/flink-docs-release-1.20/docs/dev/table/sql-gateway/)