Strimzi 란

Kubernetes는 효율적인 방법으로 클러스터 전체에서 애플리케이션 컨테이너의 배포 및 스케줄링을 자동화합니다. Strimzi는 Kubernetes 또는 Red Hat OpenShift에서 Apache Kafka를 쉽게 실행할 수있는 방법을 제공하는 오픈 소스 프로젝트입니다.

Strimzi Kafka Operator로 Kafka 설치

Strimzi Kafka operator를 배포하기 전에 먼저 kafka 네임 스페이스를 만들어 보겠습니다.

$ kubectl create namespace kafka

다음으로 ClusterRoles, ClusterRoleBindings 및 Custom Resource Definitions (CRD)를 포함한 Strimzi 설치 파일을 적용합니다.

$ kubectl apply -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka

다음 명령어로 pod이 생성되는지 확인합니다.

$ kubectl get pod -n kafka -w

그런 다음 새로운 Kafka 커스텀 리소스를 생성하여 아파치 주키퍼(Apache Zookeeper)와 아파치 카프카(Apache Kafka)에 각각 세개의 노드가있는 Kafka 클러스터를 생성 합니다.

echo '
apiVersion: kafka.strimzi.io/v1beta1
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    version: 2.5.0
    replicas: 3
    listeners:
      plain: {}
      tls: {}
    config:
      offsets.topic.replication.factor: 3
      transaction.state.log.replication.factor: 3
      transaction.state.log.min.isr: 2
      log.message.format.version: "2.5"
    storage:
      type: jbod
      volumes:
      - id: 0
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
  zookeeper:
    replicas: 3
    storage:
      type: persistent-claim
      size: 100Gi
      deleteClaim: false
  entityOperator:
    topicOperator: {}
    userOperator: {}
' | kubectl -n kafka apply -f -

Kafka 클러스터가 실행되면 간단한 producer를 실행하여 Kafka 토픽에 메시지를 보낼 수 있습니다 (토픽이 자동으로 생성됨):

$ kubectl -n kafka run kafka-producer -ti --image=strimzi/kafka:0.18.0-kafka-2.5.0 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list my-cluster-kafka-bootstrap:9092 --topic my-topic

그리고 다른 터미널에서 수신하려면 다음을 실행할 수 있습니다.

$ kubectl -n kafka run kafka-consumer -ti --image=strimzi/kafka:0.18.0-kafka-2.5.0 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server my-cluster-kafka-bootstrap:9092 --topic my-topic --from-beginning

메세지 전달이 확인되면 Apache Kafka 클러스터가 정상적으로 설치가 되었습니다.

참고자료