前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于腾讯云容器服务Serverless集群的EMQ X集群搭建

基于腾讯云容器服务Serverless集群的EMQ X集群搭建

原创
作者头像
buzzfrog
发布2023-04-12 19:00:27
2K0
发布2023-04-12 19:00:27
举报
文章被收录于专栏:云上修行云上修行

背景

EMQ X是杭州映云科技有限公司使用Apache License 2.0协议开源的一款MQTT Broker服务软件。

本文介绍使用EMQ X在腾讯云容器服务Serverless集群上搭建MQTT服务。

相关资料

emqx官网地址:https://www.emqx.io/zh

emqx的github地址:https://github.com/emqx/emqx

emqx operator的github地址:https://github.com/emqx/emqx-operator

cert-manager的安装说明地址:https://cert-manager.io/docs/installation/

腾讯云容器服务Serverless集群(原弹性容器服务EKS):https://console.cloud.tencent.com/tke2/quickstart

搭建步骤

创建腾讯云容器服务Serverless集群

按流程往下走,整个过程很顺,我没有碰到什么坑。

创建集群完成后,点击集群名称后,进入集群基本信息页面,打开内外网开关,按照通过Kubectl连接Kubernetes集群操作说明在本地笔记本安装kubectl命令行工具。

部署cert-manager

在本地命令行执行:

代码语言:shell
复制
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.8.2/cert-manager.yaml

由于cert-manager 官方使用的镜像在 quay.io (需要修改为 quay.tencentcloudcr.com )进行拉取,但由于众说周知的原因网络不通,腾讯云有一篇文档《使用cert-manager签发免费证书》 可以参考如何解决这个问题。另外,缺省配置的Secret也有问题。我是在腾讯云控制台修改了yaml的配置解决问题的。

以第一个Deployment为例,演示如何修改:

后面两个Deployment也需要做同样的修改。

部署EMQX Operator

这段可以参考利用 EMQX Operator 部署 EMQX 集群

【重要】务必等待cert-manager安装成功后,再执行安装emqx-operator

在本地命令行执行:

代码语言:shell
复制
kubectl apply -f "https://github.com/emqx/emqx-operator/releases/download/1.2.2/emqx-operator-controller.yaml"

检查 EMQX Operator 控制器状态:

代码语言:shell
复制
$ kubectl get pods -l "control-plane=controller-manager" -n emqx-operator-system
NAME                                                READY   STATUS    RESTARTS   AGE
emqx-operator-controller-manager-xxxxxxxx-xxxxx   1/1     Running   0          15s

部署 EMQX 开源版

本地命令行执行:

代码语言:txt
复制
cat << "EOF" | kubectl apply -f -
apiVersion: apps.emqx.io/v1beta3
kind: EmqxBroker
metadata:
  name: emqx
  labels:
    "foo": "bar"
spec:
  emqxTemplate:
    image: emqx/emqx:4.4.5
EOF

这里我执行得比较坎坷:

  1. cert-manager部署还没有成功的时候,就开始部署EMQX;
  2. EMQX的Secret没有被正确下发,需要下发qcloudregistrykey
  1. 在怀疑Volume的问题上,纠缠了很久。

确认部署好。

代码语言:shell
复制
$ kubectl get pods
NAME              READY   STATUS    RESTARTS   AGE
emqx-0   2/2     Running   0          22m
emqx-1   2/2     Running   0          22m
emqx-2   2/2     Running   0          22m

$ kubectl exec -it emqx-0 -c emqx -- emqx_ctl status
Node 'emqx@emqx-0.emqx-headless.default.svc.cluster.local' 4.4.5 is started

$ kubectl exec -it emqx-0 -c emqx -- emqx_ctl cluster status
Cluster status: #{running_nodes =>
                   ['emqx@emqx-0.emqx-headless.default.svc.cluster.local',
                    'emqx@emqx-1.emqx-headless.default.svc.cluster.local',
                    'emqx@emqx-2.emqx-headless.default.svc.cluster.local'],
               stopped_nodes => []} 

进入服务与路由-Service中,可以看到绿色框中缺省建立的两个Service,但这两个Service只能内网使用。

为了让外网也能使用,需要通过Ingress开放HTTP和HTTPS的入口。为了让外网也能使用基于TCP的MQTT,则需要部署上图中的新的红框中的Service。Service和Ingress部署相对简单,这里不再赘述。

登录EMQ X Dashboard

打开浏览器,输入IP和端口(Ingress中有)

EMQ X Dashboard
EMQ X Dashboard

缺省用户名是admin,密码是public。

测试EMQ X的MQTT是否能联通

  1. 下载客户端软件 https://www.emqx.com/zh/try?product=MQTTX
  2. 创建链接
创建MQTT链接
创建MQTT链接
  1. 测试发布和订阅
测试订阅
测试订阅
测试发布
测试发布

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 相关资料
  • 搭建步骤
    • 创建腾讯云容器服务Serverless集群
      • 部署cert-manager
        • 部署EMQX Operator
          • 部署 EMQX 开源版
            • 登录EMQ X Dashboard
              • 测试EMQ X的MQTT是否能联通
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档