# Kafka 버전 갱신 가이드

## 1. git 작업 환경 구성

- 서비스 카탈로그 git 다운로드
```
$ git clone https://github.com/paasup/service-catalog.git
```

- 작업 브랜치로 체크아웃
```
$ git checkout -b update-kafka/32.4.3
```

## 2. helm chart 업데이트

### 1) 차트 버전 변경

- BUILD-README.md, CUSTOM-README.md, custom-values.yaml을 제외한 파일 삭제
  ``` sh
  # chart 디렉토리로 이동
  cd ~/service-catalog/charts/kafka
  
  # 파일 삭제 전 삭제할 파일 목록 확인
  find . -mindepth 1 \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -print
  
  # 파일 삭제
  find . -mindepth 1 \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" \) -prune -o -exec rm -rf {} +
  ```

- bitnami/kafka 차트 다운로드
  ``` sh
  # charts 디렉토리로 이동
  cd ~/service-catalog/charts
  
  # helm repo 추가
  helm repo add bitnami https://charts.bitnami.com/bitnami
  helm repo update
  
  # helm 차트 다운로드
  helm pull bitnami/kafka --version="32.4.3"
  
  # 차트 변경
  tar xzvf kafka*.tgz
  
  # 필요 없는 파일 삭제
  rm kafka-*.tgz
  ```

### 2) 차트 수정 사항 반영

- Bitnami Kafka 차트는 기본적으로 KRaft 모드로 동작하며, 별도의 수정 사항 없이 사용 가능합니다.
- custom-values.yaml에서 필요한 설정을 조정하여 사용합니다.

## 3. git push 및 tag 추가

- 갱신작업 진행후 commit
```
$ git add .
$ git commit -m "update kafka/32.4.3"
```

- main 브랜치에 체크아웃 후 merge
```
$ git checkout main
$ git merge update-kafka/32.4.3
```

- git에 push 후 작업 브랜치 삭제
```
$ git push -u origin main
$ git branch -d update-kafka/32.4.3
```

- git tag 추가 후 push
```
$ git tag kafka/32.4.3
$ git push origin kafka/32.4.3
```

## 4. 차트 버전 정보

- kafka/32.4.3
  - Apache Kafka 4.0.0 기반 Bitnami 차트
  - KRaft 모드 기본 지원 (ZooKeeper 불필요)
  - Controller-eligible 노드와 Broker-only 노드 분리 배포 지원
  - SASL 인증 기본 활성화
  - JMX 메트릭 및 Prometheus 모니터링 지원
  - 서비스 배포를 위하여 custom-values.yaml에 정의
  - 차트의 빌드 방법과 배포 방법을 BUILD-README.md, CUSTOM-README.md 문서에 작성