Рубрики
Без рубрики

Доступ к Apache Kafka из кварков

В этой статье описывается, как разрабатывать микросервисы с кварками, которые используют Apache Kafka, работающие в кластере Kubernetes. С тегами java, микросервисы, реактивные, облачные.

В этой статье описывается, как разрабатывать микросервисы с Кварками , которые используют Apache Kafka , работающие в кластере Kubernetes.

Quarks поддерживает Микропрофильный реактивный обмен сообщениями для взаимодействия с Apache Kafka. Существует хорошее руководство Использование Apache Kafka с реактивными сообщениями , в котором объясняется, как отправлять и получать сообщения Кафке и от Кафки.

Руководство содержит инструкции по локальному запуску Kafka через Docker с помощью docker-compose. Хотя это, вероятно, самый простой способ начать работу, следующим шагом для разработчиков микросервисов часто является выяснение того, как получить доступ к Apache Kafka в средах Kubernetes или размещенных службах Kafka.

Вариант 1: Apache Kafka, работающий в Kubernetes

Проект с открытым исходным кодом Strimzi предоставляет изображения контейнеров и операторы для запуска Apache Kafka на Kubernetes и Red Hat OpenShift. Существует хорошая серия блогов о разработчике Red Hat, в которой описывается, как использовать Strimzi. Для доступа к нему из приложений существует несколько различных вариантов, например порты узлов, маршруты OpenShift, балансировщики нагрузки и вход.

Иногда эти возможности могут оказаться непосильными для разработчиков, особенно когда все, что вам нужно, – это простая среда разработки для написания некоторых реактивных приложений hello world, чтобы начать работу. В моем случае я хотел установить простой сервер Kafka в своем кластере Mini kube.

Существует краткое руководство по развертыванию Strimzi в мини-кубе. К сожалению, в нем не объясняется, как получить к нему доступ из приложений. Вторая часть серии блогов Доступ к Apache Kafka в Strimzi: Часть 2 – Порты узлов объясняет это.

На основе этих двух статей я написал простой скрипт, который развертывает Kafka в Mini cube менее чем за 5 минут. Сценарий является частью проекта cloud-native-starter . Выполните эти команды, чтобы попробовать:

$ git clone https://github.com/IBM/cloud-native-starter.git
$ cd cloud-native-starter/reactive
$ sh scripts/start-minikube.sh
$ sh scripts/deploy-kafka.sh
$ sh scripts/show-urls.sh

Вывод последней команды выводит URL-адрес загрузочного сервера Kafka, который вам понадобится на следующем шаге. Вы можете найти все ресурсы в пространстве имен “кафка”.

Чтобы получить доступ к Кафке из кварков, соединитель Кафки должен быть настроен . При запуске приложения Quarks в том же кластере Kubernetes, что и Kafka, используйте следующую конфигурацию в “application.properties”.’ мой-кластер-кафка-внешняя-начальная загрузка” – это имя службы, “кафка” – пространство имен и “9094” – порт.

kafka.bootstrap.servers=my-cluster-kafka-external-bootstrap.kafka:9094`
mp.messaging.incoming.new-article-created.connector=smallrye-kafka`
mp.messaging.incoming.new-article-created.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer

При локальной разработке приложения Quarks доступ к Kafka в мини-кубе осуществляется через порт узла. В этом случае замените конфигурацию kafka.bootstrap.servers следующим URL-адресом:

$ minikubeip=$(minikube ip)
$ nodeport=$(kubectl get svc my-cluster-kafka-external-bootstrap -n kafka --ignore-not-found --output 'jsonpath={.spec.ports[*].nodePort}')
$ echo ${minikubeip}:${nodeport}

Вариант 2: Кафка как услуга

Большинство облачных провайдеров также размещают управляемые сервисы Kafka. Например Потоки событий – это управляемый сервис Kafka в облаке IBM. Существует бесплатный тарифный план lite, который предоставляет доступ к одному разделу в кластере потоков событий с несколькими арендаторами. Все, что вам нужно, это IBM id , который является бесплатным, и вам не нужна кредитная карта.

Как и большинство сервисов Kafka в производстве, потоки событий требуют безопасного подключения. Эту дополнительную конфигурацию необходимо снова определить в разделе “приложение.свойства”.

kafka.bootstrap.servers=broker-0-YOUR-ID.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093,broker-4-YOUR-ID.kafka.svc01.us-south.eventstreams.cloud.ibm.com:9093,...MORE-SERVERS
mp.messaging.incoming.new-article-created.connector=smallrye-kafka
mp.messaging.incoming.new-article-created.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
mp.messaging.incoming.new-article-created.sasl.mechanism=PLAIN
mp.messaging.incoming.new-article-created.security.protocol=SASL_SSL
mp.messaging.incoming.new-article-created.ssl.protocol=TLSv1.2
mp.messaging.incoming.new-article-created.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="token" password="YOUR-PASSWORD";

Для того, чтобы ввести эту информацию, вам необходимо 1. список серверов начальной загрузки Kafka и 2. ваш пароль для службы потоков событий. Вы можете получить эту информацию в веб-интерфейсе службы потоков событий или использовать интерфейс командной строки IBM Cloud.

Мой коллега Харальд Уэбеле разработал скрипт , который программно создает службу и возвращает эти две части информации.

следующие шаги

Сценарии, упомянутые в этой статье, являются частью проекта cloud-native-starter, в котором описывается, как разрабатывать реактивные приложения с помощью Quarkus. Моя предыдущая статья описывает проект.

Попробуйте код самостоятельно.

Прочитайте другие статьи этой серии:

Оригинал: “https://dev.to/nheidloff/accessing-apache-kafka-from-quarkus-30na”