作者介绍:徐文涛,StreamNative Content Strategist,热爱云原生与开源技术,活跃于本地化/文档/技术博客贡献,持有 K8s CKA/CKAD/CKS 认证。
Apache Pulsar 作为 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、跨地域复制、分层存储,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性,是云原生时代解决实时消息流数据传输、存储和计算的最佳解决方案。
Pulsar 的 Broker 没有状态,不存储数据。BookKeeper 负责存储数据,其中的 Bookie 支持水平扩容,元数据的信息存储在 ZooKeeper 上。这种架构也方便容器化的环境进行扩缩容,支持高可用等场景。

KubeSphere 是建立在 Kubernetes 之上的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理、应用商店、可观测性(监控、告警及审计等)和多租户等功能,提供全栈的 IT 自动化运维能力,简化企业的 DevOps 工作流。

作为一个以应用为中心的 K8s 容器平台,KubeSphere 为用户提供多种安装应用的方式。为快速部署应用,这里给大家推荐以下两种方法:
helm 相关命令添加仓库并安装。注:KubeSphere 的应用商店与应用的全生命周期管理功能基于开源项目 OpenPitrix。在安装 Pulsar 前,你需要先在 KubeSphere 中启用 OpenPitrix。
下面我们通过第二种方式在 KubeSphere Console 中添加 Pulsar 的 Helm 仓库并安装。
准备一个 KubeSphere 集群。你可以直接使用 KubeKey 安装或通过 ks-installer 在已有 K8s 集群上搭建 KubeSphere 集群。同时,请注意 Pulsar 文档中对 K8s 集群和 Helm 的版本要求。
创建好企业空间和项目。企业空间是 KubeSphere 中的一种逻辑单元,用于管理项目、DevOps 项目和应用模板等资源,管理员可以管理其中的资源访问权限;项目指 K8s 中的 Namespace。为方便演示,本文统一采用 admin 用户操作。基于 KubeSphere 的多租户体系,在实际环境中你可以根据组织中每个租户的职责,创建不同的帐户并分配相应角色。 
在你的企业空间空间下,点击应用管理 > 应用仓库,然后点击添加。定义仓库名称后,添加 https://pulsar.apache.org/charts 仓库地址。仓库地址验证成功后,点击确定。 
仓库添加成功后,我们还需要运行一个脚本,创建一些和 Pulsar 相关的 Secret 等资源,方便我们后续访问 Grafana 和 Pulsar Manager 等工具。先前往你的 K8s 节点,执行以下命令将 pulsar-helm-chart 的 GitHub 仓库克隆到本地。需要注意的是,在该节点上必须要可以执行 kubectl 和 helm 命令。
git clone https://github.com/apache/pulsar-helm-chart
cd pulsar-helm-chart执行以下命令运行 prepare_helm_release.sh 脚本。其中 -n 指相关的 Secret 生成的 Namespace,-k 指使用 helm 安装应用的 release 名称,这两个地方需要和我们在 KubeSphere 上指定的项目和应用名称相对应。有关该脚本可用参数的更多信息,可运行 ./scripts/pulsar/prepare_helm_release.sh --help 查看详情。
./scripts/pulsar/prepare_helm_release.sh -n pulsar -k ks-pulsar前往 KubeSphere 中所创建的项目,本示例中的项目名为 pulsar。
点击应用负载 > 应用,在基于模板的应用标签页下,点击创建。 
选择从应用模板,在应用模板的下拉列表中选中 Pulsar 的仓库。点击 Pulsar 后,我们可以在这里查看 Chart 文件的一些信息。 
点击安装。定义应用名称(即刚才执行脚本时的 release 名称),选择版本以及安装位置(如果启用多集群功能并添加了多个集群,这里还可以选择 Pulsar 安装的所在集群),点击下一步。
转到应用设置页面,这里类似于使用 helm 命令时自定义 values.yaml 文件的各项参数。我们设置 namespace 为项目名称,initialize 为 true(仅首次安装 Pulsar 时需要设置),并启用 Pulsar Manager(设置 components.pulsar_manager 为 true),然后点击安装。有关这些参数更具体的信息,可参考 Pulsar 文档。 
等待一段时间后,查看 Pulsar 的各项组件是否已正常运行。

Pulsar 集群搭建好后,我们可以使用 Web 工具 Pulsar Manager 来管理 Pulsar 中的租户(Tenant)、命名空间(Namespace)以及主题(Topic)。这些资源可用来确保同一个组织中不同部门间数据的相互隔离,如下图所示。


pulsar/pulsar 登录,然后添加环境。Service URL 这里填 Broker 的 Service 地址与端口号,本示例中为 http://ks-pulsar-broker:8080。 

现在我们创建好了相关资源,可以尝试向 Pulsar 集群发送信息并消费。
在本地先下载好 Pulsar 的二进制文件,然后解压。
进入 Pulsar 目录后修改 conf/client.conf 文件中的 webServiceUrl 和 brokerServiceUrl 地址,用于将 Pulsar 客户端和 Pulsar 集群绑定。本示例中启用了代理访问集群,这里的地址需要填代理所暴露的 IP 地址。我们可以在 KubeSphere 的服务页面找到代理的 Service,并查看其详情页面中的 IP 地址。 
webServiceUrl=http://34.71.201.104:8080
brokerServiceUrl=pulsar://34.71.201.104:6650修改完后,在 Pulsar 目录下执行以下命令创建订阅并消费信息,命令中的 kubesphere/kubesphere/kubesphere 对应刚才在 Pulsar Manager 中所创建的 Tenant、Namespace 以及 Topic。
./bin/pulsar-client consume -s sub kubesphere/kubesphere/kubesphere -n 0注意:运行前请务必确保已安装适用的 Java JRE/JDK 版本。
再打开一个命令行窗口,执行以下命令生产信息。
./bin/pulsar-client produce kubesphere/kubesphere/kubesphere -m “Hello KubeSphere and Pulsar” -n 10可以看到消息已经成功消费。 
Pulsar 的 Helm Chart 在部署时会安装 Grafana 提供与 Pulsar 相关的可观测性指标,便于我们进行后续的运维分析。
pulsar/pulsar 登录。在左上角选择一个 Dashboard 以查看 Pulsar 相关指标。
本文演示了在 KubeSphere 上部署 Apache Pulsar 的操作步骤。借助 Pulsar 天然适配云原生环境的特性,我们可以借助 KubeSphere 运维友好的操作界面轻松部署并管理 Pulsar。感兴趣的朋友可以阅读 KubeSphere 和 Pulsar 的官方文档了解更多信息。
6 月 25 日,KubeSphere 社区联合 Apache Pulsar 社区,共同组织一场线上的 Meetup,总共四个议题,现在已开启报名,欢迎大家扫描海报中的二维码报名!

本文由博客一文多发平台 OpenWrite 发布!