기타
Nginx Pod + PVC 조합 kafka connect plugin 관리
ipxy
2025. 4. 20. 13:59
728x90
pv pvc 예시
apiVersion: v1
kind: PersistentVolume
metadata:
name: plugin-repo-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadOnlyMany
hostPath:
path: /home/ubuntu/plugin-repo # 실제 노드 디렉토리
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: plugin-repo-pvc
spec:
accessModes:
- ReadOnlyMany
resources:
requests:
storage: 1Gi
volumeName: plugin-repo-pv
nginx http 예
apiVersion: v1
kind: Pod
metadata:
name: plugin-http
labels:
app: plugin-http
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
volumeMounts:
- name: plugin-volume
mountPath: /usr/share/nginx/html
readOnly: true
volumes:
- name: plugin-volume
persistentVolumeClaim:
claimName: plugin-repo-pvc
---
apiVersion: v1
kind: Service
metadata:
name: plugin-http
spec:
selector:
app: plugin-http
ports:
- port: 80
targetPort: 80
initcontainer 예시
apiVersion: apps/v1
kind: Deployment
metadata:
name: kafka-connect
spec:
replicas: 1
selector:
matchLabels:
app: kafka-connect
template:
metadata:
labels:
app: kafka-connect
spec:
volumes:
- name: plugin-volume
emptyDir: {} # initContainer와 공유할 임시 볼륨
initContainers:
- name: init-download-plugin
image: curlimages/curl:latest
command: ["sh", "-c"]
args:
- >
echo "⬇️ Downloading plugin..." &&
curl -fSL http://plugin-http.default.svc.cluster.local/my-custom-plugin.jar -o /plugins/my-custom-plugin.jar &&
echo "✅ Download complete"
volumeMounts:
- name: plugin-volume
mountPath: /plugins
containers:
- name: kafka-connect
image: confluentinc/cp-kafka-connect:latest
env:
- name: CONNECT_PLUGIN_PATH
value: "/usr/share/java,/plugins" # 다운로드된 경로 포함
- name: CONNECT_BOOTSTRAP_SERVERS
value: "your-kafka:9092"
- name: CONNECT_REST_PORT
value: "8083"
ports:
- containerPort: 8083
volumeMounts:
- name: plugin-volume
mountPath: /plugins
728x90