在 Azure Kubernetes Service 中部署 EMQX
EMQX Operator 支持在 Azure Kubernetes Service (AKS) 上部署 EMQX。AKS 通过将运维开销转移到 Azure 来简化在 Azure 中部署托管 Kubernetes 集群的过程。作为托管的 Kubernetes 服务,Azure 处理关键任务,如健康监控和维护。创建 AKS 集群时,Azure 会自动配置和管理 Kubernetes 控制平面,无需额外费用。
前提条件
在 AKS 上部署 EMQX 之前,请确保满足以下先决条件:
Azure 订阅中的 AKS 集群
- 有关创建和配置 AKS 集群的指导,请参阅 Azure Kubernetes Service 文档。
用于连接到 AKS 集群的有效
kubectl配置- 要使用本地安装的
kubectl连接,请按照 连接到 AKS 集群 中的说明操作。 - 要使用 Azure Cloud Shell 连接,请参阅 在 Azure CloudShell 中管理 AKS 集群。
- 要使用本地安装的
在集群上安装 EMQX Operator
- 有关安装详细信息,请参阅 安装 EMQX Operator。
快速部署 EMQX 集群
以下示例显示了 EMQX 自定义资源 (CR) 的基本配置。
将其保存为 YAML 文件,并使用
kubectl apply部署。yamlapiVersion: apps.emqx.io/v2beta1 kind: EMQX metadata: name: emqx spec: image: emqx/emqx:6.0.1 config: data: | license { key = "..." } coreTemplate: spec: volumeClaimTemplates: ## 有关存储类的更多信息:https://learn.microsoft.com/zh-cn/azure/aks/concepts-storage#storage-classes storageClassName: default resources: requests: storage: 10Gi accessModes: - ReadWriteOnce dashboardServiceTemplate: spec: ## 有关负载均衡器的更多信息:https://learn.microsoft.com/zh-cn/azure/aks/load-balancer-standard type: LoadBalancer listenersServiceTemplate: spec: ## 有关负载均衡器的更多信息:https://learn.microsoft.com/zh-cn/azure/aks/load-balancer-standard type: LoadBalancer等待 EMQX 集群就绪。
使用
kubectl get检查集群状态,并验证STATUS为Ready。启动可能需要一些时间。shell$ kubectl get emqx NAME STATUS AGE emqx Ready 1m5s获取 EMQX Dashboard 的外部 IP 并访问它。
EMQX Operator 会根据
dashboardServiceTemplate配置自动创建 Service。shell$ kubectl get svc emqx-dashboard -o json | jq -r '.status.loadBalancer.ingress[0].ip' 20.245.230.91在
http://20.245.230.91:18083打开 Dashboard。使用默认凭据登录:
- 用户名:
admin - 密码:
public
- 用户名:
使用 MQTTX 订阅和发布
本演练使用 MQTTX CLI,这是一款开源的 MQTT 5.0 命令行客户端工具,可帮助开发者快速测试 MQTT 服务和应用。
获取 EMQX TCP 监听器的外部 IP。
EMQX Operator 会为每个配置的监听器自动创建 Service 资源。
shellexternal_ip=$(kubectl get svc emqx-listeners -o json | jq -r '.status.loadBalancer.ingress[0].ip')订阅主题。
shell$ mqttx sub -t 'hello' -h ${external_ip} -p 1883 [10:00:25] › … Connecting... [10:00:25] › ✔ Connected [10:00:25] › … Subscribing to hello... [10:00:25] › ✔ Subscribed to hello在另一个终端中,连接到 EMQX 集群并发布消息。
shell$ mqttx pub -t 'hello' -h ${external_ip} -p 1883 -m 'hello world' [10:00:58] › … Connecting... [10:00:58] › ✔ Connected [10:00:58] › … Message Publishing... [10:00:58] › ✔ Message published观察订阅者接收消息。
shell[10:00:58] › payload: hello world
关于使用 LoadBalancer 进行 TLS 卸载的说明
作为 L3/L4 负载均衡器,Azure LoadBalancer 不支持 TLS 终止。请参阅此讨论以了解可能的解决方案。