searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Apache Pulsar 离线部署(二):Helm部署

2023-08-04 09:29:05
142
0

大数据组件Apache Pulsar内网离线部署流程:在完全离线的内网环境下使用官方Helm chart部署可用的Apache Pulsar集群,并进行消息收发功能测试

部署规划:

Kubernetes集群一共六个节点,分别部署:

Zookeeper 3个pod

Proxy 3个pod

Broker 3个pod

Bookkeeper 4个pod

pulsar-recovery 1个pod

pulsar-toolset 1 个pod

 

环境准备:

上传helm chart

https://github.com/apache/pulsar-helm-chart/archive/refs/heads/master.zip

Pulsar helm chart 安装配置

https://downloads.apache.org/pulsar/helm-chart/3.0.0/pulsar-3.0.0.tgz

 

准备镜像文件

pulsar-all:3.0.0

pulsar-manager:latest

 

 

安装pulsarctl:

内网无法连接在线资源,所以需要通过install.sh确定所需要下载的文件:

curl --retry 10 -L -o ${TARFILE} https://github.com/streamnative/pulsarctl/releases/download/${version}/${TARFILE}

这里的version,由

version=$(curl -s https://raw.githubusercontent.com/streamnative/pulsarctl/master/stable.txt)

取得;

TARFILE由

pulsarctl-${ARCH}-${OS}.tar.gz

拼接得来,这里需要根据环境本身的处理器架构和操作系统选择。

 

这里官方网址下载pulsarctl安装包

pulsarctl-amd64-linux.tar.gz

作为示例,并上传内网解压

之后手动复制文件到

${HOME}/.pulsarctl

并增加环境变量

export PATH=${HOME}/.pulsarctl:${HOME}/.pulsarctl/plugins:${PATH}

 

创建kubernetes secret:

./scripts/pulsar/prepare_helm_release.sh -n pulsar -k pulsar -l > pulsar_helm_release_res.yaml

其中-n参数对应kubernetes集群中namesapce名称,-k参数对应之后helm部署时helm-release名称

得到输出结果为一个yaml文件,其中包含生了4个K8S Secret的Manifest。其中

pulsar-token-asymmetric-key这个Secret中是用于生成Token和验证Token的私钥和公钥;

pulsar-token-proxy-admin这个Secret中是用于proxy的超级用户角色Token;

pulsar-token-broker-admin这个Secret中是用于broker的超级用户角色Token;

pulsar-token-admin这个Secret中是用于管理客户端的超级用户角色Token

 

接下来使用

kubectl apply -f pulsar_helm_release_res.yaml

完成创建。

 

编辑values.yaml:

values中一些配置需要修改:

 

修改对应镜像名称与版本:

images:

  zookeeper:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  bookie:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  autorecovery:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  broker:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  proxy:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  functions:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

  pulsar_manager:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-manager

    #tag: v0.3.0

    tag: test

    pullPolicy: IfNotPresent

    hasCommand: false

 

演示集群关闭本地存储:

local_storage: false

 

 

集群启动:

输入命令:

helm install --values values.yaml --set initialize=true --namespace pulsar pulsar pulsar-3.0.0.tgz

这里第一个pulsar是对应需要部署pulsar集群的kubernetes namespace。第二个pulsar对应创建kubernetes secret步骤中-k后面传入的helm部署名

 

测试:

查看pod启动情况:

出现此情况代表集群初始化完成

可用kubectl查看集群情况:

测试集群功能:

输入命令:

kubectl exec -it -n pulsar pulsar-toolset-0 -- /bin/bash

进入toolset容器,然后尝试创建tenant:

bin/pulsar-admin tenants create test-tenant

使用命令:

bin/pulsar-admin tenants list

输出tenant,可以看到创建成功:

 

可能遇到的问题及解决方案:

出现该问题说明当前helm chart可能存在版本过老,与kubernetes不匹配的问题,可以考虑尝试更新的helm chart

 

出现该问题说明当前端口号80,kubeernetes没有权限进行绑定操作。可以修改values中对应组件(pulsar-proxy)的端口号:

 

0条评论
0 / 1000
逍遥排骨
3文章数
0粉丝数
逍遥排骨
3 文章 | 0 粉丝
逍遥排骨
3文章数
0粉丝数
逍遥排骨
3 文章 | 0 粉丝
原创

Apache Pulsar 离线部署(二):Helm部署

2023-08-04 09:29:05
142
0

大数据组件Apache Pulsar内网离线部署流程:在完全离线的内网环境下使用官方Helm chart部署可用的Apache Pulsar集群,并进行消息收发功能测试

部署规划:

Kubernetes集群一共六个节点,分别部署:

Zookeeper 3个pod

Proxy 3个pod

Broker 3个pod

Bookkeeper 4个pod

pulsar-recovery 1个pod

pulsar-toolset 1 个pod

 

环境准备:

上传helm chart

https://github.com/apache/pulsar-helm-chart/archive/refs/heads/master.zip

Pulsar helm chart 安装配置

https://downloads.apache.org/pulsar/helm-chart/3.0.0/pulsar-3.0.0.tgz

 

准备镜像文件

pulsar-all:3.0.0

pulsar-manager:latest

 

 

安装pulsarctl:

内网无法连接在线资源,所以需要通过install.sh确定所需要下载的文件:

curl --retry 10 -L -o ${TARFILE} https://github.com/streamnative/pulsarctl/releases/download/${version}/${TARFILE}

这里的version,由

version=$(curl -s https://raw.githubusercontent.com/streamnative/pulsarctl/master/stable.txt)

取得;

TARFILE由

pulsarctl-${ARCH}-${OS}.tar.gz

拼接得来,这里需要根据环境本身的处理器架构和操作系统选择。

 

这里官方网址下载pulsarctl安装包

pulsarctl-amd64-linux.tar.gz

作为示例,并上传内网解压

之后手动复制文件到

${HOME}/.pulsarctl

并增加环境变量

export PATH=${HOME}/.pulsarctl:${HOME}/.pulsarctl/plugins:${PATH}

 

创建kubernetes secret:

./scripts/pulsar/prepare_helm_release.sh -n pulsar -k pulsar -l > pulsar_helm_release_res.yaml

其中-n参数对应kubernetes集群中namesapce名称,-k参数对应之后helm部署时helm-release名称

得到输出结果为一个yaml文件,其中包含生了4个K8S Secret的Manifest。其中

pulsar-token-asymmetric-key这个Secret中是用于生成Token和验证Token的私钥和公钥;

pulsar-token-proxy-admin这个Secret中是用于proxy的超级用户角色Token;

pulsar-token-broker-admin这个Secret中是用于broker的超级用户角色Token;

pulsar-token-admin这个Secret中是用于管理客户端的超级用户角色Token

 

接下来使用

kubectl apply -f pulsar_helm_release_res.yaml

完成创建。

 

编辑values.yaml:

values中一些配置需要修改:

 

修改对应镜像名称与版本:

images:

  zookeeper:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  bookie:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  autorecovery:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  broker:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  proxy:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

    pullPolicy: IfNotPresent

  functions:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-all

    # uses defaultPulsarImageTag when unspecified

    tag: 3.0.0

  pulsar_manager:

    repository: dockerhub.kubekey.local/apachepulsar/pulsar-manager

    #tag: v0.3.0

    tag: test

    pullPolicy: IfNotPresent

    hasCommand: false

 

演示集群关闭本地存储:

local_storage: false

 

 

集群启动:

输入命令:

helm install --values values.yaml --set initialize=true --namespace pulsar pulsar pulsar-3.0.0.tgz

这里第一个pulsar是对应需要部署pulsar集群的kubernetes namespace。第二个pulsar对应创建kubernetes secret步骤中-k后面传入的helm部署名

 

测试:

查看pod启动情况:

出现此情况代表集群初始化完成

可用kubectl查看集群情况:

测试集群功能:

输入命令:

kubectl exec -it -n pulsar pulsar-toolset-0 -- /bin/bash

进入toolset容器,然后尝试创建tenant:

bin/pulsar-admin tenants create test-tenant

使用命令:

bin/pulsar-admin tenants list

输出tenant,可以看到创建成功:

 

可能遇到的问题及解决方案:

出现该问题说明当前helm chart可能存在版本过老,与kubernetes不匹配的问题,可以考虑尝试更新的helm chart

 

出现该问题说明当前端口号80,kubeernetes没有权限进行绑定操作。可以修改values中对应组件(pulsar-proxy)的端口号:

 

文章来自个人专栏
Apache Pulsar
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0