# Install EMQX Cluster with EMQX Operator

For more information about latest EMQX Operator, please access github (opens new window).

  1. Use cert-manager (opens new window) for provisioning the certificates for the webhook server. Please follow the cert-manager documentation (opens new window) to install it。

  2. Install Operator Controller Manager service in one of the following ways:

    • Install with default static files
    curl -f -L "https://github.com/emqx/emqx-operator/releases/download/1.2.2/emqx-operator-controller.yaml" | kubectl apply -f -
    
    1
    • Install with Helm
      • Add the EMQX Helm repository
    helm repo add emqx https://repos.emqx.io/charts 
    helm repo update
    
    1
    2
    • Install EMQX Operator Controller by Helm
    $ helm install emqx-operator emqx/emqx-operator \ 
    --set installCRDs=true \ 
    --namespace emqx-operator-system \ 
    --create-namespace
    
    1
    2
    3
    4
  3. Check EMQX Operator Controller Status

    $ 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
    2
    3
  1. Deploy EMQX Enterprise
  • Deploy EMQX Enterprise Custom Resource

    $ cat << "EOF" | kubectl apply -f -
    apiVersion: apps.emqx.io/v1beta3
    kind: EmqxEnterprise
    metadata:
      name: emqx-ee
      labels:
        "foo": "bar"
    spec:
      emqxTemplate:
        image: emqx/emqx-ee:4.4.5
    EOF
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
  • Check EMQX Enterprise status

    $ kubectl get pods 
    NAME READY STATUS RESTARTS AGE 
    emqx-ee-0 2/2 Running 0 22s 
    emqx-ee-1 2/2 Running 0 22s 
    emqx-ee-2 2/2 Running 0 22s
    $ kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl status 
    Node 'emqx-ee@emqx-ee-0.emqx-ee-headless.default.svc.cluster.local' 4.4.5 is started
    $ kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl cluster status 
    Cluster status: #{running_nodes =>
                       ['emqx-ee@emqx-ee-0.emqx-ee-headless.default.svc.cluster.local',
                        'emqx-ee@emqx-ee-1.emqx-ee-headless.default.svc.cluster.local',
                        'emqx-ee@emqx-ee-2.emqx-ee-headless.default.svc.cluster.local'],
                   stopped_nodes => []}
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
What’s on this page