# 使用 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
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
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
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 证书终结问题