티스토리 뷰

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
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함