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

Развертывание и использование сообщений, управляемых событиями Kafka, в многооблачной среде с поддержкой Java

В постоянно усложняющемся мире, в котором мы живем, наши ожидания также растут в геометрической прогрессии… С тегами java, event driven, cloudnative, микросервисы.

В постоянно усложняющемся мире, в котором мы живем, наши ожидания также растут в геометрической прогрессии с точки зрения того, как мы требуем, чтобы информация была мгновенно готова для нас, когда мы ее ищем. В мире вычислительной техники растет потребность в наиболее эффективной обработке огромных объемов данных, и именно тогда на передний план вышел событийно-ориентированный подход в области обмена сообщениями и проектирования систем, когда облачные и облачные вычисления взяли мир штурмом. Итак, могут ли сообщения о событиях стать общедоступными “расходными материалами”, как это было с API REST за последнее десятилетие?

Мы рассмотрим и пошагово рассмотрим базовый пример мульти- и облачного сценария, в котором мы будем использовать брокер сообщений Kafka, работающий на управляемой облачной платформе Confluent и отвечающий за отправку сообщений в тему, из которой клиент Kafka consumer, включенный с помощью микропрофильного реактивного обмена сообщениямисоединитель Kafka и инкапсулирован в среду выполнения Open Liberty, которая работает под управлением очень эффективной среды выполнения IBM Semeru – JVM OpenJ9, а клиент запускается с помощью OpenShift в IBM Cloud. На стороне производителя Confluent Cloud может быть запущен на одном из поддерживаемых внешних облачных провайдеров – Microsoft Azure, Amazon AWS или Google Cloud Platform.

Давайте погрузимся в:

Предварительные шаги (перед любыми работами по развертыванию):

  1. Сторона, создающая сообщения, обрабатывается облаком слияния. Подробности здесь обсуждаться не будут, поскольку эта статья посвящена в первую очередь стороне потребителя сообщений. Пожалуйста, обратитесь к документации на веб-сайте Confluent, например Как создать ваше первое приложение Apache Kafka Producer . Другой способ, более быстрый способ, – использовать консоль Confluent Cloud для создания темы.

  2. Войдите в IBM Cloud или зарегистрируйтесь в учетной записи бесплатного уровня если вы еще этого не сделали.

  3. Доступ к вашему кластеру OpenShift (пожалуйста, ознакомьтесь с одним из следующих способов соответственно):

    1. (ДЛЯ УЧАСТНИКОВ СЕМИНАРА) Если вам предоставлен временный кластер OpenShift на семинаре IBM: Конференция IBM Digital Developer Conference – Hybrid Cloud 2021 Пожалуйста, ознакомьтесь с инструкциями, которые были предоставлены вам в качестве URL-адреса Закладки на канале #ddc-labs-courses Slack.
    2. (ДЛЯ КЛИЕНТОВ/ПРОБНЫХ КЛИЕНТОВ) Если вы готовы создать новый кластер OpenShift, пожалуйста, обратитесь к документации IBM Cloud по как создать свой кластер Red Hat OpenShift .

Взаимодействуйте с вашим кластером OpenShift одним из следующих способов:

     * OpenShift console (via the IBM Cloud console)
     * OpenShift CLI (`oc`)
     * IBM Cloud shell (via the IBM Cloud console)
  1. Как только вы войдете в свой кластер OpenShift, вам нужно будет установить Open Liberty operator. Это поможет нам развернуть и управлять нашим приложением Open Liberty microservices в кластере. Вы можете сделать это с помощью консоли OpenShift или из командной строки.

  2. Как только оператор Open Liberty будет установлен, вы можете захотеть убедиться, что все прошло успешно.

  3. Добавьте личные учетные данные Docker:

Docker ограничивает запросы на извлечение изображений контейнеров для бесплатных подписок на DockerHub. Для получения дополнительной информации см. Понимание ограничения скорости Docker Hub . Если у вас есть учетная запись Docker с подпиской Pro или Team, вы можете добавить личные учетные данные, чтобы избежать любых ошибок из-за ограничений.

Чтобы добавить личные учетные данные, перейдите в веб-консоль OpenShift и выберите Рабочие нагрузки > Секреты в меню боковой панели. Убедитесь, что выбранный проект является openshift-config. Найдите pull-secret и щелкните меню с тремя вертикальными точками; затем Редактировать секрет . Прокрутите страницу вниз и нажмите Добавить учетные данные . Введите docker.io в поле Адрес сервера реестра, ваш идентификатор пользователя Docker в поле Имя пользователя и ваш пароль Docker в поле Пароль. Нажмите кнопку Кнопка Сохранить для сохранения учетных данных.

Подготовка к развертыванию микросервиса инвентаризации в OpenShift:

Используйте пример микросервиса (и в настоящее время мы назвали его inventory ) путем клонирования из следующего репозитория:

git clone https://github.com/mgrygles-lab/guide-ddc.git

Чтобы развернуть микросервис инвентаризации, вы должны сначала упаковать его, затем создать и запустить сборку OpenShift для создания работоспособного образа контейнера упакованного микросервиса.

  1. Упаковка микросервиса Убедитесь, что вы находитесь в стартовом каталоге, и выполните следующие команды, чтобы упаковать системные и инвентаризационные микросервисы:

  2. Создание и продвижение изображений Требуется: шаблон сборки для настройки способа создания изображений контейнеров. Мы предоставили вам шаблон сборки.

Изучите build.yaml файл шаблона.

строить.yaml- сборка.шаблон yaml включает в себя два объекта. Объект потока изображений обеспечивает абстракцию от изображения в реестре изображений. Это позволяет вам ссылаться на изображение и помечать его тегами. Используемый реестр изображений представляет собой встроенный внутренний реестр контейнеров OpenShift.

Объект конфигурации сборки определяет единое определение сборки и любые триггеры, которые запускают сборку. Спецификация источника определяет входные данные для сборки. В этом случае входными данными для сборки являются ваши двоичные (локальные) файлы, которые передаются в OpenShift для сборки. Загруженные файлы должны включать упакованные двоичные файлы приложения WAR, поэтому вам необходимо было выполнить команды Maven. Шаблон определяет сборку стратегии Docker, которая вызывает команду сборки docker и создает доступный для выполнения образ контейнера микросервиса из входных данных сборки. Шаблон параметризуется параметром APP_NAME, чтобы вы могли использовать один и тот же шаблон для создания объектов для системных и инвентаризационных микросервисов отдельно.

Выполните следующие команды, чтобы создать объекты для микросервисов system и inventory:

       oc process -f build.yaml -p APP_NAME=inventory | oc create -f -

Затем выполните следующие команды, чтобы просмотреть вновь созданный объект потока изображений и конфигурацию сборки для микросервиса:

       oc get all -l name=inventory

Ищите следующие ресурсы, похожие на следующие:

Двоичный построить config.build.openshift.io/inventory-buildconfig Докер 1
РЕПОЗИТОРИЙ-ТЕГ имя изображение обновленный
1.0-МОМЕНТАЛЬНЫЙ СНИМОК имя image-registry.openshift-image-registry.svc:5000/руководство/инвентарь-поток изображений 2 дня назад

Убедитесь, что вы находитесь в каталоге ddc, и запустите сборки, выполнив следующие команды:

  oc start-build inventory-buildconfig --from-dir=inventory/.

Локальный каталог инвентаря загружается в OpenShift для встраивания в образ Docker. Выполните следующую команду, чтобы отобразить список сборок и отслеживать их статус:

   oc get builds

Найдите результат, аналогичный следующему примеру:

Двоичный код@f24cb58 инвентарь-buildconfig-1 Докер Бегущий 13 секунд назад

Возможно, вам придется подождать некоторое время, пока сборка не будет завершена. Чтобы проверить, завершена ли сборка, выполните следующие команды для просмотра журналов сборки, пока не появится сообщение об успешном завершении:

     oc logs build/inventory-buildconfig-1

Выполните следующую команду, чтобы просмотреть объекты потока изображений:

     oc get imagestreams

Выполните следующие команды, чтобы получить более подробную информацию о новых загруженных изображениях в потоках:

     oc describe imagestream/inventory-imagestream

В следующем примере показана часть вывода потока изображений инвентаризации:

Имя: inventory-image stream Пространство имен: руководство Создано: 2 минуты назад Метки: Аннотации: Хранилище изображений: image-registry.openshift-image-registry.svc:5000/guide/inventory-imagestream Поиск изображений: Уникальные изображения: 1 Теги: 1

Теперь вы готовы к развертыванию изображений.

Развертывание образов

Вы можете настроить специфику развертывания Open Liberty, управляемого оператором, с помощью файла конфигурации YAML.

Изучите deploy.yaml конфигурационный файл.

развертывать.yaml – Это развертывание.файл yaml настроен для развертывания ресурса приложения OpenLiberty с именем inventory, который управляется оператором Open Liberty.

Параметр application Image определяет, какой образ контейнера развертывается как часть CRD приложения Open Liberty. Этот параметр соответствует формату/[:tag]. Параметр также может указывать на образ, размещенный во внешнем реестре, таком как Docker Hub.

Одним из преимуществ использования объекта ImageStream является то, что оператор повторно развертывает приложение, когда обнаруживает, что новое изображение загружается. Параметр env используется для указания переменных среды, которые передаются в контейнер во время выполнения. Вам необходимо указать адрес начальной загрузки, необходимый для связи с кластером Kafka, в качестве переменной среды.

Обновите переменную [kafka-bootstrap-address] до адреса начальной загрузки удаленного кластера Kafka, в котором размещен производитель, например:

    pkc-epwny.eastus.azure.confluent.cloud:9092

Выполните следующую команду, чтобы развернуть микросервис инвентаризации с описанными ранее конфигурациями:

      oc apply -f deploy.yaml

Затем выполните следующую команду, чтобы просмотреть недавно созданный ресурс OpenLiberty Applications:

      oc get OpenLibertyApplications

Вы также можете заменить приложения OpenLiberty на короткое имя olapps.

Ищите выходные данные, похожие на следующий пример:

10s инвентарь руководство/инвентарь-поток изображений:1.0-МОМЕНТАЛЬНЫЙ СНИМОК True True

Согласованное значение состояния True указывает на то, что оператор смог успешно обработать экземпляр OpenLibertyApplications. Выполните следующие команды, чтобы просмотреть сведения о вашем микросервисе:

       oc describe olapps/inventory

В этом примере показана часть выходных данных olapps/inventory:

Имя: Пространство имен инвентаря: Метки руководства: Аннотации: kubectl.kubernetes.io/last-applied-configuration: {“apiVersion”:”openliberty.io/v1beta1″,”kind”:”OpenLibertyApplication”,”metadata”:{“annotations”:{},”labels”:{“имя”:”инвентарь”}, “имя”:”инв… Версия API: openliberty.io/v1beta1 Добрый: Приложение OpenLiberty

Теперь мы должны быть готовы к выполнению основного теста. Поскольку сообщения создаются производителем Kafka, проверьте файл журнала на стороне клиента Kafka consumer, чтобы убедиться, что сообщения доставляются соответствующим образом.

Оригинал: “https://dev.to/mgrygles/deploying-and-consuming-kafka-event-driven-messages-in-a-java-enabled-multi-cloud-environment-47gm”