티스토리 뷰
728x90
목표
- 커넥터 설정(JSON) GitOps화
- Kafka Connect 인프라 Helm 배포
- 커스텀 SMT 빌드, 배포, 반영 자동화
- 전체 흐름을 Git + CI/CD + Helm + REST로 통합 관리
📁 1. GitOps 디렉토리 구조 예시
kafka-connect-gitops/
├── helm/
│ └── kafka-connect-values.yaml # Helm 설정
├── connectors/
│ ├── mongo-source.json
│ ├── s3-sink.json
│ └── ...
├── smt/
│ ├── build.gradle
│ ├── settings.gradle
│ └── custom-smt/
│ └── src/main/java/com/example/smt/CustomSMT.java
├── plugins/
│ └── kafka-connect-custom-smt.jar # 커스텀 SMT 결과물 (CI에서 생성됨)
├── scripts/
│ ├── build-smt.sh
│ ├── apply-connectors.sh
│ └── deploy-smt-and-restart.sh
├── .gitlab-ci.yml or .github/workflows/deploy.yml
└── README.md
⚙️ 2. Helm 기반 Kafka Connect 설정 (kafka-connect-values.yaml)
pluginPaths: "/opt/kafka/plugins,/opt/kafka/custom-smt"
extraVolumeMounts:
- name: custom-smt
mountPath: /opt/kafka/custom-smt
extraVolumes:
- name: custom-smt
configMap:
name: kafka-custom-smt
커스텀 SMT JAR을 포함하는 ConfigMap 또는 PVC로 마운트합니다.
🛠️ 3. SMT 빌드 스크립트 (scripts/build-smt.sh)
#!/bin/bash
cd smt
./gradlew clean shadowJar
JAR_PATH=$(find . -name "*.jar" | grep build/libs)
cp "$JAR_PATH" ../plugins/kafka-connect-custom-smt.jar
echo "✅ SMT JAR 빌드 완료 → plugins/"
📦 4. SMT ConfigMap 생성 (deploy-smt-and-restart.sh)
#!/bin/bash
NAMESPACE=kafka
JAR_FILE=plugins/kafka-connect-custom-smt.jar
CONFIGMAP_NAME=kafka-custom-smt
echo "🧩 커스텀 SMT ConfigMap 생성 중..."
kubectl create configmap $CONFIGMAP_NAME \
--from-file=custom-smt.jar=$JAR_FILE \
-n $NAMESPACE \
--dry-run=client -o yaml | kubectl apply -f -
echo "🔄 Kafka Connect 재시작 (롤링)"
kubectl rollout restart deployment kafka-connect -n $NAMESPACE
🚀 5. CI/CD 예시 (.gitlab-ci.yml)
stages:
- build
- deploy
build-smt:
stage: build
image: gradle:8-jdk17
script:
- chmod +x scripts/build-smt.sh
- ./scripts/build-smt.sh
artifacts:
paths:
- plugins/kafka-connect-custom-smt.jar
deploy-kafka-connect:
stage: deploy
image: bitnami/kubectl:latest
script:
- chmod +x scripts/deploy-smt-and-restart.sh
- chmod +x scripts/apply-connectors.sh
- ./scripts/deploy-smt-and-restart.sh
- ./scripts/apply-connectors.sh
only:
- main
728x90
'CI_CD' 카테고리의 다른 글
Kafka Connect + 커스텀 SMT GitOps 통합 관리 전략 (InitContainer) (0) | 2025.04.18 |
---|---|
Kafka Connect + 커스텀 SMT GitOps 통합 관리 전략 (PVC) (0) | 2025.04.18 |
Kafka Connect SMT 멀티레포 + Git Submodule + 개별/통합 빌드 (0) | 2025.04.16 |
CI/CD 자동화 다이어그램/시퀀스 다이어그램 (0) | 2025.04.06 |
containerD 란? (0) | 2025.03.29 |