Подключиться к кластеру Apache Kafka®
В данной инструкции мы разберем команды kcat
Перед началом работы
- Установите утилиту kcat
. - Если проект еще не создан, создайте его:
kubectl create namespace <название проекта>. - Создайте кластер Apache Kafka®.
- Создайте топик.
- Создайте пользователя с правами администратора.
Как подключиться к кластеру Apache Kafka®
Примечание
Чтобы была возможность подключаться к Apache Kafka® извне кластера, в настройках кластера Apache Kafka® должна быть включена опция публичного доступа (listenerType: LoadBalancer).
-
Получите внешнюю ссылку на кластер Apache Kafka®:
kubectl get kafkaclusters <название кластера> -o jsonpath='{.status.listenersStatus.external.fqdn}' -n <название проекта>. -
Получите порт для подключения:
kubectl get kafkaclusters <название кластера> -o jsonpath='{.status.listenersStatus.external.port}' -n <название проекта>. -
Скопируйте сертификат для подключения из поля
status.listenersStatus.external.certificateресурса кластера Apache Kafka®:kubectl describe kafkaclusters <название кластера> -n <название проекта>. -
Сохраните сертификат в файл
<путь до сертификата>/ca.crt. -
Запустите команду получения сообщений из топика:
kcat -C \ -b <ссылка на кластер>:<порт> \ -t <название топика> \ -X security.protocol=SASL_SSL \ -X sasl.mechanism=SCRAM-SHA-512 \ -X sasl.username="<имя пользователя>" \ -X sasl.password="<пароль пользователя>" \ -X ssl.endpoint.identification.algorithm=none \ -X ssl.ca.location=/<путь до сертификата>/ca.crt -Z -K: -
Откройте новый терминал и отправьте сообщение в топик:
echo "test message" | kcat -P \ -b <ссылка на кластер>:<порт> \ -t <название топика> \ -k key \ -X security.protocol=SASL_SSL \ -X sasl.mechanism=SCRAM-SHA-512 \ -X sasl.username="<имя пользователя>" \ -X sasl.password="<пароль пользователя>" \ -X ssl.endpoint.identification.algorithm=none \ -X ssl.ca.location=/<путь до сертификата>/ca.crt -Z
Потребитель получит сообщение: "test message".
-
Получите внутреннюю ссылку на кластер Apache Kafka®:
kubectl get kafkaclusters <название кластера> -o jsonpath='{.status.listenersStatus.internal.fqdn}' -n <название проекта>. -
Получите порт для подключения:
kubectl get kafkaclusters <название кластера> -o jsonpath='{.status.listenersStatus.internal.port}' -n <название проекта>. -
Запустите команду получения сообщений из топика:
kcat -C \ -b <ссылка на кластер>:<порт> \ -t <название топика> \ -X security.protocol=SASL_PLAINTEXT \ -X sasl.mechanism=SCRAM-SHA-512 \ -X sasl.username="<имя пользователя>" \ -X sasl.password="<пароль пользователя>" -Z -K: -
Откройте новый терминал и отправьте сообщение в топик:
echo "test message" | kcat -P \ -b <ссылка на кластер>:<порт> \ -t <название топика> \ -k key \ -X security.protocol=SASL_PLAINTEXT \ -X sasl.mechanism=SCRAM-SHA-512 \ -X sasl.username="<имя пользователя>" \ -X sasl.password="<пароль пользователя>" -Z
Потребитель получит сообщение: "test message".