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-system
namespace), по умолчанию открыт с помощью службы 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 и запустите скрипт, чтобы автоматически установить эти секреты.git clone https://github.com/apache/pulsar-helm-chart cd pulsar-helm-chart ./scripts/pulsar/prepare_helm_release.sh \ -n pulsar \ -k pulsar-mini \ -c
- Приведённые выше команды создают пространство имён под названием
pulsar
в вашем кластере Kubernetes. Чтобы добавить его в рабочее пространствоpulsar
, перейдите к Cluster Management (управлению кластерами) в разделе Platform и вручную назначьте его в рабочее пространство.
Дополнительные сведения см. в разделе Добавление существующих пространств имён Kubernetes в рабочее пространство KubeSphere. - Теперь давайте вернёмся к рабочему пространству
pulsar
. Мы видим, что пространство имёнpulsar
namespace было добавлено. В 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 могут многое предложить корпоративным пользователям и энтузиастам открытого кода. То, о чём я рассказал в этой статье, служит лишь быстрым стартом для тех, кто хочет получить представление о них. Для того чтобы узнать больше, вы всегда можете заглянуть в их последнюю документацию.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.