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
按流程往下走,整个过程很顺,我没有碰到什么坑。
创建集群完成后,点击集群名称后,进入集群基本信息页面,打开内外网开关,按照通过Kubectl连接Kubernetes集群操作说明在本地笔记本安装kubectl命令行工具。
在本地命令行执行:
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 集群
【重要】务必等待cert-manager安装成功后,再执行安装emqx-operator
在本地命令行执行:
kubectl apply -f "https://github.com/emqx/emqx-operator/releases/download/1.2.2/emqx-operator-controller.yaml"
检查 EMQX Operator 控制器状态:
$ 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
本地命令行执行:
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
这里我执行得比较坎坷:
qcloudregistrykey
。确认部署好。
$ 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部署相对简单,这里不再赘述。
打开浏览器,输入IP和端口(Ingress中有)
缺省用户名是admin,密码是public。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。