# 使用 EMQX Operator 在 Azure AKS 上部署 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)
AKS: Azure Kubernetes 服务 (AKS)。详见:Azure 文档 (opens new window)
# 创建AKS集群
登录 Azure AKS 控制台,进入 Kubernetes 服务,创建 Kubernetes 集群。EMQX Operator 要求Kubernetes 版本>=1.20.0 ,因此我们在此选择 Kubernetes 选择 1.22.11,网络与其他资源信息根据自身需求来制定。细节请参考 (opens new window)
# 访问 Kubernetes 集群
建议通过 Azure 提供的 Cloud Shell 连接。细节请参考 (opens new window)
# StorageClass 配置
这里采用 NSF 文件存储。其他 StorageClass 可参考 (opens new window)
创建 StroageClass
cat << "EOF" | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azurefile-csi-nfs provisioner: file.csi.azure.com allowVolumeExpansion: true parameters: protocol: nfs mountOptions: - nconnect=8 EOF
Copied!
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
查看该 StroageClass 是否创建成功
kubectl get sc
Copied!
1
可以看到azurefile-csi-nfs
已经成功创建
# 使用EMQX Operator 部署EMQX集群
Operator 安装参考 (opens new window)
Operator 安装完成后,使用以下yaml 在 azure 上进行部署 EMQX 集群
cat << "EOF" | kubectl apply -f - apiVersion: apps.emqx.io/v1beta3 kind: EmqxEnterprise metadata: name: emqx-ee labels: "foo": "bar" spec: replicas: 3 persistent: storageClassName: azurefile-csi-nfs resources: requests: storage: 4Gi accessModes: - ReadWriteOnce emqxTemplate: image: emqx/emqx-ee:4.4.8 serviceTemplate: spec: type: LoadBalancer EOF
Copied!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
这里 service type采用LoadBalancer
# 关于 LoadBalancer 终结 TLS
由于 Azure LoadBalancer 不支持 TCP 证书,所以请参考这篇文档 (opens new window)解决 TCP 证书终结问题