Использование коннектора с установленным Helm Kafka/Confluent

Я установил Kafka на локальный Minikube, используя диаграммы Helm https://github.com/confluentinc/cp-helm-charts, следуя этим инструкциям https://docs.confluent.io/current/installation/installing_cp/cp-helm-charts/docs/index.html следующим образом:

helm install -f kafka_config.yaml confluentinc/cp-helm-charts --name kafka-home-delivery --namespace cust360

kafka_config.yaml почти идентичен yaml по умолчанию, за одним исключением: я уменьшил его до 1 сервера/брокера вместо 3 (просто потому, что я пытаюсь сохранить ресурсы на своем локальном мини-кубе; надеюсь, это не имеет отношения к моя проблема).

Также на Minikube работает экземпляр MySQL. Вот результат kubectl get pods --namespace myNamespace:

Использование коннектора с установленным Helm Kafka/Confluent

Я хочу подключить MySQL и Kafka, используя один из коннекторов (например, Дебезиум MySQL CDC). В инструкции написано:

Install your connector

Use the Confluent Hub client to install this connector with:

confluent-hub install debezium/debezium-connector-mysql:0.9.2

Звучит хорошо, за исключением 1) я не знаю, на каком модуле запустить эту команду, 2) похоже, что ни один из модулей не имеет доступной команды конфлюэнтного концентратора.

Вопросы:

  1. Разве confluent-hub не устанавливается через эти диаграммы Helm?
  2. Должен ли я сам устанавливать confluent-hub?
  3. Если да, то на какой модуль мне его установить?

Снято в темноте, но разве разъем не должен быть установлен в kafka-connect pod? Вы также можете взглянуть на Strimzi. Он предоставляет встроенный в kube способ развертывания кластеров Kafka на k8s.

RubberDuck 01.04.2019 23:23

См. «Автоматически установить подключаемый модуль Kafka Connect» — rmoff.net/2018/12/15/docker-tips-and-tricks-with-ksql-and-ka‌​fka, т. е. изменить команду контейнера Connect.

OneCricketeer 02.04.2019 00:35
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
6
2
2 926
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

В модуле Kafka Connect уже должен быть установлен confluent-hub. Это тот модуль, на котором вы должны запускать команды.

Однако, если модуль перезапустится, этот разъем исчезнет.

OneCricketeer 02.04.2019 00:33

На данный момент игнорирую вопрос @cricket_007 (хотя это может быть проблематично) — когда я запускаю bash на этом модуле, я ввожу confluent-hub как команду и получаю «команда не найдена»

Matthew Groves 02.04.2019 15:01
Ответ принят как подходящий

В идеале это должно быть настроено как часть сценария helm, но, к сожалению, на данный момент это не так. Один из способов обойти это — создать новый Docker из образа Docker Kafka Connect от Confluent. Загрузите коннектор вручную и извлеките содержимое в папку. Скопируйте его содержимое в путь в контейнере. Что-то вроде ниже.

Содержимое Dockerfile

FROM confluentinc/cp-kafka-connect:5.2.1
COPY <connector-directory> /usr/share/java

/usr/share/java — это место по умолчанию, в котором Kafka Connect ищет плагины. Вы также можете использовать другое местоположение и указать новое местоположение (plugin.path) во время установки helm.

Создайте этот образ и разместите его в доступном месте. Вам также нужно будет предоставить/переопределить данные изображения и тега во время установки helm.

Здесь — это путь к файлу values.yaml. Вы можете найти значения image и plugin.path здесь.

Модуль cp kafka connect имеет 2 контейнера, один из них — контейнер cp-kafka-connect-server. В этом контейнере установлен confluent-hub. Вы можете войти в этот контейнер и запустить там свои команды соединителя. Чтобы войти в этот контейнер, выполните следующую команду:

kubectl exec -it {pod-name} -c cp-kafka-connect-server -- /bin/bash

Просто дополнение к комментарию Джегана выше: https://stackoverflow.com/a/56049585/6002912

Вы можете сделать Dockerfile ниже. Рекомендуемые.

FROM confluentinc/cp-server-connect-operator:5.4.0.0

RUN confluent-hub install --no-prompt debezium/debezium-connector-postgresql:1.0.0

Или вместо этого вы можете использовать многоэтапную сборку Docker.

FROM confluentinc/cp-server-connect-operator:5.4.0.0

COPY --from=debezium/connect:1.0 \
    /kafka/connect/debezium-connector-postgres/ \
    /usr/share/confluent-hub-components/debezium-connector-postgres/

Это поможет вам сэкономить время на получении правильных jar-файлов для ваших плагинов, таких как debezium-connector-postgres.

Из документации Confluent: https://docs.confluent.io/current/connect/managing/extending.html#create-a-docker-image-content-c-hub-connectors

В последней версии диаграммы это можно сделать с помощью customEnv.CUSTOM_SCRIPT_PATH

См. README.md

Скрипт можно передать как секрет и смонтировать как объем

Другие вопросы по теме