๐ ํ๋ก๋น์ ๋ - Strimzi
๐ณ๏ธโ๐ [๊ถ๊ธํ์ ]
๐[๋ชฉ์ฐจ]
์ด์ ํ๊ฒฝ์์๋ CSI๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
apiVersion: storage.k8s.io/v1
kind: StorageClass
reclaimPolicy: Delete
metadata:
name: dev-strimzi-local-storage
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
k apply -f dev-strimzi-sc.yml
sudo mkdir /tmp/dev-strimzi-data1
sudo chown -R 1001:1001 /tmp/dev-strimzi-data1
ls -ld /tmp/dev-strimzi-data1
drwxr-xr-x 2 1001 1001 4096 Jun 7 01:43 /tmp/dev-strimzi-data1
k apply -f dev-strimzi-pv.yaml
persistentvolume/dev-strimzi-pv1 created
k get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
mypv1 2Gi RWO Retain Bound kafka/data-0-my-cluster-dual-role-0 local-storage-del 34d
helm pull oci://quay.io/strimzi-helm/strimzi-kafka-operator --untar --version 0.47.0
Pulled: quay.io/strimzi-helm/strimzi-kafka-operator:0.47.0
Digest: sha256:b57f1f204446c4cdb8aa0cbb3e85f59daafc26d460bfcaf5bafe6631a7fa5ad4
cd strimzi-kafka-operator
cp values.yaml dev-strimzi-values.yaml
replicas: 1
helm install my-kafka . -n kafka --create-namespace -f dev-strimzi-values.yaml
NAME: my-kafka
LAST DEPLOYED: Sun Jul 20 16:08:52 2025
NAMESPACE: kafka
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing strimzi-kafka-operator-0.47.0
To create a Kafka cluster refer to the following documentation.
https://strimzi.io/docs/operators/latest/deploying.html#deploying-cluster-operator-helm-chart-str
Strimzi POD ํ์ธ
k get po -n kafka -l name=strimzi-cluster-operator
NAME READY STATUS RESTARTS AGE
strimzi-cluster-operator-7dbb969fc-7j97f 1/1 Running 0 60s
> ## Strimzi ์ฐจํธ ๋ฒ์
``` bash
helm ls -n kafka -l name=my-kafka
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
my-kafka kafka 1 2025-07-20 16:08:52.648176422 +0900 KST deployed strimzi-kafka-operator-0.47.0 0.47.0
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaNodePool
metadata:
name: dual-role
namespace: kafka
labels:
strimzi.io/cluster: my-cluster
spec:
replicas: 1
roles:
- controller
- broker
storage:
type: jbod
volumes:
- id: 0
type: persistent-claim
size: 2Gi
deleteClaim: false
kraftMetadata: shared
---
apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
name: my-cluster
namespace: kafka
annotations:
strimzi.io/node-pools: enabled
strimzi.io/kraft: enabled
spec:
kafka:
version: 4.0.0
metadataVersion: 4.0-IV3
listeners:
- name: plain
port: 9092
type: internal
tls: false
- name: tls
port: 9093
type: internal
tls: true
config:
offsets.topic.replication.factor: 1
transaction.state.log.replication.factor: 1
transaction.state.log.min.isr: 1
default.replication.factor: 1
min.insync.replicas: 1
entityOperator:
topicOperator: {}
userOperator: {}
k apply -f kafka-cr.yml -n kafka
kafkanodepool.kafka.strimzi.io/dual-role created
kafka.kafka.strimzi.io/my-cluster created
k get po -n kafka -w
NAME READY STATUS RESTARTS AGE
my-cluster-dual-role-0 1/1 Running 0 97s
my-cluster-entity-operator-7d6d6dcd88-mvf2l 2/2 Running 0 28s
strimzi-cluster-operator-7dbb969fc-7j97f 1/1 Running 0 36m
kubectl logs deployment/strimzi-cluster-operator -n kafka -f
...
2025-07-20 07:08:56 INFO StrimziPodSetController:525 - Waiting for informers to sync
2025-07-20 07:08:56 INFO ClusterOperator:109 - Opened watch for Kafka operator
2025-07-20 07:08:56 INFO ClusterOperator:109 - Opened watch for KafkaConnect operator
kubectl -n kafka run kafka-producer -ti --image=quay.io/strimzi/kafka:0.47.0-kafka-4.0.0 --rm=true --restart=Never -- bin/kafka-console-producer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic
If you don't see a command prompt, try pressing enter.
>my message
kubectl -n kafka run kafka-consumer -ti --image=quay.io/strimzi/kafka:0.47.0-kafka-4.0.0 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic --from-beginning
If you don't see a command prompt, try pressing enter.
my message
kubectl get clusterrole -o name | grep '^clusterrole.rbac.authorization.k8s.io/strimzi' | xargs kubectl delete
kubectl get clusterrolebinding -o name | grep '^clusterrolebinding.rbac.authorization.k8s.io/strimzi' | xargs kubectl delete
kubectl -n kafka delete $(kubectl get strimzi -o name -n kafka)
kubectl delete pvc -l strimzi.io/name=my-cluster-kafka -n kafka
# helm ์ญ์ ํ ์ฌ ์์ฑ
helm delete my-kafka -n kafka
helm install my-kafka . -n kafka -f dev-strimzi-values.yaml --create-namespace
# persistentVolumeReclaimPolicy: Retain ์ผ ๊ฒฝ์ฐ - Released ์ํ์ pv Available๋ก ๋ณ๊ฒฝ
rm -rf /tmp/dev-strimzi-pv1/*
kubectl patch pv mypv1 -p '{"spec":{"claimRef": null}}'
# persistentVolumeReclaimPolicy: Retain ์ผ ๊ฒฝ์ฐ - PV ์์ฑ
k apply -f dev-strimzi-dev.yaml
# persistentVolumeReclaimPolicy: Retain ์ผ ๊ฒฝ์ฐ - pv ์ ์ฒด ์ญ์
k delete -f dev-strimzi-dev.yaml
# PVC ์ ์ฒด ์ญ์
k delete pvc -n my-dev data-my-strimzi-{0..3}
## ๊ธฐ๋ณธ storageclass ์ง์
kubectl patch storageclass local-storage-del \
-p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class":"true"}}}'
## node hostPath ๋๋ ํ ๋ฆฌ ์์ฑ
sudo mkdir /tmp/mypv{1..10}
sudo chown -R 1001:1001 /tmp/mypv{1..10}
## PV Released ํจ์น
kubectl patch pv mypv1 -p '{"spec":{"claimRef": null}}'
## ๋ฒ์ ํ์ธ
kubectl -n kafka get deploy strimzi-cluster-operator -o=jsonpath='{.spec.template.spec.containers[0].image}'
quay.io/strimzi/operator:0.47.0