基于 k8s 部署 EMQX 集群

利用 EMQX Operator 部署 EMQX 集群

EMQX Operator 最新信息, 请访问 github 基于 k8s 部署 EMQX 集群 - 图1 (opens new window).

  1. 使用 cert-manager 基于 k8s 部署 EMQX 集群 - 图2 (opens new window) 给 webhook 服务提供证书,可以参考 cert-manager 文档 基于 k8s 部署 EMQX 集群 - 图3 (opens new window) 安装

  2. 可以通过如下两种方式之一来安装 Operator Controller:

    • 使用静态文件安装
curl -f -L "https://github.com/emqx/emqx-operator/releases/download/1.2.2/emqx-operator-controller.yaml" | kubectl apply -f -
 * 使用 Helm 安装

   * 添加 EMQX Helm 仓库
helm repo add emqx https://repos.emqx.io/charts
helm repo update
   * 用 Helm 安装 EMQX Operator 控制器
$ helm install emqx-operator emqx/emqx-operator \
  --set installCRDs=true \
  --namespace emqx-operator-system \
  --create-namespace
  1. 检查 EMQX Operator 控制器状态
$ kubectl get pods -l "control-plane=controller-manager" -n emqx-operator-system
NAME READY STATUS RESTARTS AGE
emqx-operator-controller-manager-68b866c8bf-kd4g6 1/1 Running 0 15s
  1. 部署 EMQX Broker

  2. 部署 EMQX Custom Resource

$ cat << "EOF" | kubectl apply -f -
apiVersion: apps.emqx.io/v1beta3
kind: EmqxBroker
metadata:
  name: emqx
  labels:
    "foo": "bar"
spec:
  emqxTemplate:
    image: emqx/emqx:4.4.5
EOF
  • 检查 EMQX 状态
$ kubectl get pods
 NAME READY STATUS RESTARTS AGE
 emqx-0 2/2 Running 0 22s
 emqx-1 2/2 Running 0 22s
 emqx-2 2/2 Running 0 22s
 $ kubectl exec -it emqx-0 -c emqx -- emqx_ctl status
 Node 'emqx@emqx-0.emqx-headless.default.svc.cluster.local' 4.4.5 is started
 $ kubectl exec -it emqx-0 -c emqx -- emqx_ctl cluster status
 Cluster status: #{running_nodes =>
                   ['emqx@emqx-0.emqx-headless.default.svc.cluster.local',
                    'emqx@emqx-1.emqx-headless.default.svc.cluster.local',
                    'emqx@emqx-2.emqx-headless.default.svc.cluster.local'],
               stopped_nodes => []}