Pulsar на KubeSphere. Установка платформы распределённого обмена сообщениями и потоковой передачи данных
∘ARTICLES 06.04.22 06.04.22 260
на главную сниппетов Apache Pulsar и KubeSphere — мощные инструменты для нативных облачных приложений. В этом посте мы покажем, как развернуть Pulsar на KubeSphere с нуля.
KubeSphere — контейнерная платформа с открытым исходным кодом на базе Kubernetes, которая предоставляет пользователям ориентированный на приложениях опыт. В связи с этим она обладает полным набором инструментов для разработчиков, позволяющих управлять приложениями на протяжении всего их жизненного цикла. В этой статье в качестве примера я продемонстрирую, как установить Apache Pulsar на кластере KubeSphere. Apache Pulsar, облачный нативный инструмент распределённого обмена сообщениями и потоковой передачи данных, представляет собой передовую платформу для обеспечения нужд предприятий в потоковой передаче событий в реальном времени.
Прежде чем начать
Чтобы установить Pulsar на KubeSphere, необходимо предварительно выполнить следующие действия:
Создайте кластер Kubernetes с установленным KubeSphere. Вы можете развернуть оба кластера Kubernetes и KubeSphere с помощью KubeKey на общедоступных облачных инстансах или в среде с «воздушным зазором». KubeKey — это лёгкая, совершенно новая программа установки Kubernetes. Она также установит Helm 3.0+ на ваш кластер Kubernetes, который является обязательным для Apache Pulsar. В качестве альтернативы можно использовать управляемый сервис Kubernetes, например, Google Kubernetes Engine (GKE) или Azure Kubernetes Servce (AKS) для создания кластера Kubernetes, а затем установить KubeSphere с помощью ks-installer. В производстве рекомендуется выбрать второй вариант, поскольку управляемые службы могут освободить вас от дополнительных настроек (например, постоянного хранилища и балансировщиков нагрузки) по мере развёртывания рабочих нагрузок.
Включите KubeSphere App Store. Как вы можете заметить из документации Pulsar, его можно установить на кластер Kubernetes через Helm чарт (набор файлов). KubeSphere App Store позволяет добавить репозиторий Helm и устанавливать в нём приложения на KubeSphere в качестве шаблонов приложений через консоль KubeSphere. KubeSphere App Store работает на базе OpenPitrix, веб-системы с открытым исходным кодом для пакетирования, развёртывания и управления различными типами приложений на протяжении всего их жизненного цикла.
Примечание. Для получения дополнительной информации убедитесь, что ваша среда соответствует предварительным условиям для
KubeSphere и
Apache Pulsar.
В моей среде я создал кластер Kubernetes с помощью Google Kubernetes Engine. В таблице ниже в качестве примера перечислены машины в моём кластере. Не стесняйтесь настраивать свой кластер в соответствии с собственными потребностями.
IP Хоста
Система
Версия кластера
10.128.0.5
Ubuntu 20.04.3, 6 виртуальных CPU, 8 Гб ОЗУ
Kubernetes 1.21.5, KubeSphere 3.2.1
10.128.0.6
Ubuntu 20.04.3, 6 виртуальных CPU, 8 Гб ОЗУ
Kubernetes 1.21.5, KubeSphere 3.2.1
10.128.0.7
Ubuntu 20.04.3, 6 виртуальных CPU, 8 Гб ОЗУ
Kubernetes 1.21.5, KubeSphere 3.2.1
Установка Pulsar в качестве шаблона приложения на KubeSphere
KubeSphere может похвастаться высокоинтерактивным и отзывчивым пользовательским интерфейсом, где
арендаторы (Tenants) с различными ролями могут напрямую выполнять соответствующие действия. При этом пользователи-администраторы могут выполнять команды с помощью
kubectl в веб-терминале, как обычно. В демонстрационных целях я использовал встроенную учётную запись
admin на протяжении всех шагов.
Примечание. На самом деле, благодаря многопользовательской системе KubeSphere, вы можете легко установить учётные записи и назначить им роли без ручного создания ресурсов, связанных с управлением доступа на основе ролей (RBAC), таких как объекты
Role и
RoleBinding. С их наличием каждый пользователь сам выполняет свою работу в кластере, например, добавляет репозитории приложений или непосредственно развёртывает приложения. Ознакомьтесь с этой
статьёй быстрого старта в документации KubeSphere, чтобы узнать больше.
Итак, давайте начнём наше путешествие.
Войдите в консоль KubeSphere с учётной записью и паролем по умолчанию (admin/P@88w0rd). Помните, что консольный под (Pod), управляемый развёртыванием (ks-console в пространстве имён kubesphere-systemnamespace), по умолчанию открыт с помощью службы Kubernetes Service c названием ks-console через NodePort. Это означает, что вы можете получить к нему доступ, используя любой IP-адрес узла в вашем кластере с номером порта (порт 30880). Если вы, как и я, используете кластер Kubernetes, размещённый на GKE, рекомендуется изменить тип службы на LoadBalancer. Таким образом, Google автоматически назначит Службе публичный IP-адрес, что поможет направить трафик на Pod более безопасным и надёжным способом.
В консоли KubeSphere перейдите в Access Control (контроль доступа) в разделе Platform (платформа). Это место, где вы управляете всеми рабочими пространствами, учётными записями и ролями платформы. Чтобы управлять ресурсами Pulsar единым образом, сначала создайте рабочее пространство. Как видно из приведённого ниже изображения, в моём кластере уже есть рабочее пространство под названием pulsar.
Щёлкните по рабочему пространству и перейдите к App Repositories (репозиториям приложений) в разделе App Management (управления приложениями). На странице App Repositories перечислены все репозитории, добавленные в выбранное рабочее пространство. Добавьте репозиторий Pulsar, как показано ниже:
Обратите внимание, что добавление репозитория Pulsar — это только один из нескольких способов установки на KubeSphere. Вы также можете загрузить его Helm чарт файл в качестве независимого шаблона приложения и выпустить его в KubeSphere App Store.
Помимо репозитория, нам также нужны секреты для Pulsar. Хранящиеся в них имя пользователя (pulsar) и пароль (pulsar) могут быть использованы для входа в панель управления Grafana и Pulsar Manager в дальнейшем. Вы можете создавать эти секреты по одному, но я настоятельно советую вам использовать скрипт, предоставленный в документации Pulsar. Склонируйте репозиторий GitHub и запустите скрипт, чтобы автоматически установить эти секреты.
Приведённые выше команды создают пространство имён под названием pulsar в вашем кластере Kubernetes. Чтобы добавить его в рабочее пространство pulsar, перейдите к Cluster Management (управлению кластерами) в разделе Platform и вручную назначьте его в рабочее пространство.
Теперь давайте вернёмся к рабочему пространству pulsar. Мы видим, что пространство имён pulsarnamespace было добавлено. В KubeSphere пространство имён Kubernetes называется KubeSphere project. Щёлкните по нему, чтобы увидеть подробности.
Перейдите в раздел Apps (приложения) и в подраздел Application Workloads (рабочие нагрузки приложений). Нажмите Create (создать) на вкладке Template-Based Apps (приложений на основе шаблонов) и выберите пункт From App Template (из шаблона приложения).
Переключитесь на репозиторий apache, в котором хранится чарт Pulsar Helm.
Щёлкните на Pulsar. На вкладке Chart Files (файлы чартов) мы можем просмотреть конфигурацию непосредственно из консоли. В выпадающем меню справа мы также можем увидеть доступные версии.
Нажмите кнопку Install (установить). На странице Basic Information (базовая информация) введите имя приложения, версию и проект (а именно пространство имён), в котором будет развёрнут Pulsar. Нажмите Next (далее), чтобы продолжить.
На этом шаге отредактируйте файл values.yaml. Когда вы закончите, нажмите кнопку Install. Помните, что при первой установке Pulsar вам необходимо установить значение initialize в true. Эта команда установит и запустит Pulsar.
Дождитесь, пока Pulsar будет запущен. Переключайтесь между разделами Services (службы), Workloads (рабочая нагрузка), Jobs (задания) и Pods, чтобы проверить готовность всех ресурсов.
Использование pulsar-admin для создания арендаторов, пространств имён и топиков Pulsar
pulsar-admin — это инструмент интерфейса командной строки (CLI) для Pulsar. Для создания ресурсов с помощью
pulsar-admin можно выполнить следующие действия.
Перейдите в Pod toolset и щёлкните по значку терминала на странице подробностей, чтобы получить доступ к его контейнеру.
Появится терминал, в котором мы можем выполнять команды непосредственно в контейнере Pod. Создайте арендатора с именем apache и перечислите всех арендаторов.
bin/pulsar-admin tenants create apache
bin/pulsar-admin tenants list
В контейнере toolset создайте пространство имён с именем pulsar для арендатора apache и перечислите пространства имён арендатора apache, чтобы проверить, успешно ли создано пространство имён.
bin/pulsar-admin namespaces create apache/pulsar
bin/pulsar-admin namespaces list apache
Ожидаемый результат:
Работа с Pulsar Manager
Pulsar Manager — это визуализированный веб-инструмент для управления и мониторинга Pulsar. Чтобы получить доступ к нему, выполните следующие действия.
Перейдите к службе pulsar-manager и откройте её подробную страницу. По умолчанию Pulsar Manager Pod управляется развёртыванием (в моём случае pulsar-mini-pulsar-manager), открываемым службой через LoadBalancer, как показано ниже.
Если вы используете управляемую службу Kubernetes, поставщик назначит ей публичный IP-адрес. Чтобы получить доступ к Pulsar Manager, используйте IP-адрес (35.239.73.28) и порт службы (9527).
Если для службы LoadBalancer не назначен доступный публичный IP-адрес (это может произойти, если ваш кластер создан на облачных экземплярах непосредственно без балансиров нагрузки или в частной среде), используйте для доступа к Pulsar Manager IP-адрес узла и порт узла. Однако в зависимости от вашей среды может потребоваться настройка соответствующих правил брандмауэра или правил переадресации портов.
Используйте имя пользователя (pulsar) и пароль (pulsar) для входа в Pulsar Manager.
Создавайте необходимую среду.
Подводим итоги
И Apache Pulsar, и KubeSphere могут многое предложить корпоративным пользователям и энтузиастам открытого кода. То, о чём я рассказал в этой статье, служит лишь быстрым стартом для тех, кто хочет получить представление о них. Для того чтобы узнать больше, вы всегда можете заглянуть в их последнюю документацию.