Доступ к внешнему центральному брокеру сообщений кафки из кластера Kubernetes

#kubernetes #apache-kafka #minikube

Вопрос:

Я очень новичок в мире Кафки и Кубернетеса и пытаюсь сделать над ним проект. Мое требование может показаться глупым, но оно чем-то похоже на это:

Производитель Kafka и потребители kafka развертываются только в локальном кластере мини-кубов. Брокер Kafka является центральным брокером и не присутствует в кластере minikube. Я поискал в Google и узнал, как я могу подключить Миникуб и кластер Кафки. Но я не знаю, как отправить сообщение от производителя(развернутого в kubernetes) в этот внешний кластер Кафки и как его использовать, поскольку потребитель также находится в мини-кубе. Кто-нибудь может мне в этом помочь, пожалуйста?

Правки:

Вот моя соответствующая конфигурация K8s.

 apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka-producer-deployment
  labels:
    app: kafka-producer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafka-producer
  template:
    metadata:
      labels:
        app: kafka-producer
    spec:
      containers:
        - name: kafka-producer
          image: chamilaliyanage/keda-demo-kafka-producer
          imagePullPolicy: Never
          ports:
            - containerPort: 8090
          env:
            - name: KAFKA_BOOTSTRAP_SERVER
              value: "localhost:9092"
            - name: KAFKA_ORDERS_TOPIC
              value: "FSMTest"
---
apiVersion: v1
kind: Service
metadata:
  name: kafka-producer-svc
  labels:
    app: kafka-producer
spec:
  type: NodePort
  ports:
    - port: 8090
      targetPort: 8090
      nodePort: 32000
      protocol: TCP
      name: http
  selector:
    app: kafka-producer
 

Комментарии:

1. Местоположение кластера не имеет значения, пока работает сетевое подключение. Миникуб не «подключается», это делают ваши модули. Пожалуйста, покажите свой код и любые конкретные ошибки, которые вы получаете при попытке подключиться

2. Чтобы связаться с внешним брокером kafka, достаточно указать его адрес в ваших блоках kafka. С другой стороны, вам нужно убедиться, что ваш модуль доступен. В этом случае, вероятно, через службу типа NodePort.

3. Проблема в том, что я не вижу потребителей Кафки, прикрепленных к моей сформированной теме в кластере Кафки. Также в нем также не создается сообщение. Я рекламировал Кафку.слушатель как localhost:9092 и добавил то же самое в свой YAML. Обновление yaml для справки.

Ответ №1:

Я сделал аналогичный проект, но там, где кластер Кафки работал внутри Kubernetes, а Производитель и Потребитель находились снаружи.

Поскольку с брокерами Кафки можно связаться по IP-адресу, я просто использовал библиотеку Python для создания и использования данных в теме Кафки.

Затем вам просто нужно будет контейнеризировать свои приложения для производителей и потребителей 🙂