# 使用 EMQX Operator 部署 EMQX 集群

EMQX Operator 与适用的 EMQX 版本的对应关系如下:

EMQX 版本EMQX Operator 版本APIVersion
4.4.6<= EMQX < 4.4.81.2.5v1beta3
4.4.8 <= EMQX1.2.6,1.2.7,1.2.8,2.0.0,2.0.1,2.0.2(推荐)v1beta3

关于 EMQX Operator 最新信息,请访问 EMQX Operator (opens new window)注意: EMQX Operator 需要 Kubernetes v1.20.11 或者以上。

# 部署 EMQX Operator

# 准备

我们使用 cert-manager (opens new window) 给 EMQX Operator webhook 服务提供证书。cert-manager 的安装教程可以参考文档:cert-manager 文档 (opens new window)

# 安装

  1. 安装 EMQX Operator
  • 添加 EMQX helm chart 仓库
helm repo add emqx https://repos.emqx.io/charts
helm repo update emqx 
1
2
  • 安装 EMQX Operator
helm install emqx-operator emqx/emqx-operator --namespace emqx-operator-system --create-namespace --version=2.0.2
1

说明--version 用于安装指定版本的 EMQX Operator, 不指定 version 的时默认安装最新版本。请根据 EMQX Operator 与适用的 EMQX 版本对应关系表安装适合的 EMQX Operator 版本。

  1. 检查 EMQX Operator 是否就绪
kubectl get pods -l "control-plane=controller-manager" -n emqx-operator-system
1

输出类似于:

NAME                                                READY   STATUS    RESTARTS   AGE
emqx-operator-controller-manager-68b866c8bf-kd4g6   1/1     Running   0          15s
1
2

说明NAME 字段是 EMQX Operator Pod 的名称,READY 字段表示 Pod 中就绪的 Container 数量。 STATUS 字段是 Pod 的状态。

# 部署 EMQX Broker

  1. 部署 EMQX 自定义资源
cat << "EOF" | kubectl apply -f -
  apiVersion: apps.emqx.io/v1beta3
  kind: EmqxBroker
  metadata:
    name: emqx
  spec:
    emqxTemplate:
      image: emqx/emqx:4.4.9
EOF
1
2
3
4
5
6
7
8
9
  1. 检查 EMQX 集群是否就绪
kubectl get emqxbroker emqx -o json | jq ".status.conditions"
1

输出类似于:

[
  {
    "lastTransitionTime": "2022-12-21T11:59:47Z",
    "lastUpdateTime": "2022-12-21T12:00:28Z",
    "message": "All resources are ready",
    "reason": "ClusterReady",
    "status": "True",
    "type": "Running"
  },
  {
    "lastTransitionTime": "2022-12-21T11:59:34Z",
    "lastUpdateTime": "2022-12-21T11:59:34Z",
    "message": "All default plugins initialized",
    "reason": "PluginInitializeSuccessfully",
    "status": "True",
    "type": "PluginInitialized"
  }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

说明:从输出结果可以看到 EMQX 集群已经准备就绪。