# 使用 EMQX Operator 在腾讯云 TKE 上部署 EMQX 集群
# 名词解释
EMQX:The most scalable open-source MQTT broker for IoT,EMQX 文档 (opens new window)
EMQX Operator:A Kubernetes Operator for EMQX,EMQX Operator 文档 (opens new window)
TKE:腾讯云容器服务(Tencent Kubernetes Engine,TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务。TKE 文档 (opens new window)
CLB:负载均衡(Cloud Load Balancer, CLB),CLB 文档 (opens new window)
# 创建 TEK 集群
登录腾讯云, 选择云产品 -> 容器服务,点击创建, 选择标准集群,EMQX Operator 要求Kubernetes 版本>=1.20.0,因此我们在此选择 Kubernetes 选择 1.22.5 ,网络与其他资源信息根据自身需求来制定。具体创建步骤参考: 创建标准集群 (opens new window)
# LoadBalancer 配置
非直连模式下 CLB 和 Service 本身存在两层 CLB,性能有一定损失,开启直连配置可以提升转发性能。只需要在服务的 Service 的 annotations 里面添加以下注解: 直连模式配置说明 (opens new window)
service.cloud.tencent.com/direct-access: "true"
备注: 开启直连模式需要在 kube-system/tke-service-controller-config ConfigMap 中新增 GlobalRouteDirectAccess: "true" 以开启 GlobalRoute 直连能力。
# 创建 StorageClass
点击集群名称进入集群详情页面,点击存储 -> StorageClass 创建需要的StorageClass, 具体步骤参考:创建StorageClass (opens new window)
# 使用 EMQX Operator 部署 EQMX 集群
EMQX Operator 安装参考:EMQX Operator 安装 (opens new window)
EMQX Operator 安装完成后,使用以下命令在 TKE 上进行部署 EMQX 集群:
cat << EOF | kubectl apply -f -
apiVersion: apps.emqx.io/v1beta3
kind: EmqxEnterprise
metadata:
name: emqx-ee
labels:
"apps.emqx.io/instance": "emqx-ee"
annotations:
service.cloud.tencent.com/direct-access: "true" ##开启LB 直连 Pod 模式
spec:
emqxTemplate:
image: emqx/emqx-ee:4.4.8
serviceTemplate:
metadata:
name: emqx-ee
namespace: default
labels:
"apps.emqx.io/instance": "emqx-ee"
spec:
type: LoadBalancer
selector:
"apps.emqx.io/instance": "emqx-ee"
persistent:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: emqx-test
EOF
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 使用 LB 终结 TCP TLS 方案
目前腾讯云 CLB 支持 终结 TCP TLS ,如需要使用 LB 终结 TCP TLS 请参考这篇文档,LB 终结 TCP TLS 方案 (opens new window)