This project provides an operator for managing EMQX clusters on Kubernetes.
Note: EMQX Operator Controller requires Kubernetes v1.20.11 and up.
We use a cert-manager for provisioning the certificates for the webhook server. You can follow the cert-manager documentation to install it.
- Install by helm
helm repo add emqx https://repos.emqx.io/charts
helm repo update
helm install emqx-operator emqx/emqx-operator --namespace emqx-operator-system --create-namespace
- Wait EMQX Operator Controller running
$ 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
-
Deploy EMQX Custom Resource
cat << "EOF" | kubectl apply -f - apiVersion: apps.emqx.io/v2alpha1 kind: EMQX metadata: name: emqx spec: image: emqx/emqx:5.0.9 EOF
Full example please check
emqx-full.yaml
.Detailed explanation of each field please check v2alpha1-reference
-
Check EMQX Custom Resource status
$ kubectl get pods $ kubectl get emqx emqx -o json | jq ".status.emqxNodes"
-
Deploy EMQX Custom Resource
cat << "EOF" | kubectl apply -f - apiVersion: apps.emqx.io/v1beta3 kind: EmqxBroker metadata: name: emqx spec: emqxTemplate: image: emqx/emqx:4.4.9 EOF
Full example please check
emqxbroker-full.yaml
.Detailed explanation of each field please check v1beta3-reference
-
Check EMQX Custom Resource status
$ kubectl get pods $ kubectl get emqxbroker emqx -o json | jq ".status.emqxNodes"
-
Deploy EMQX Custom Resource
cat << "EOF" | kubectl apply -f - apiVersion: apps.emqx.io/v1beta3 kind: EmqxEnterprise metadata: name: emqx-ee spec: emqxTemplate: image: emqx/emqx-ee:4.4.9 EOF
Full example please check
emqxenterprise-full.yaml
.Detailed explanation of each field please check v1beta3-reference
-
Check EMQX Custom Resource status
$ kubectl get pods $ kubectl get emqxenterprise emqx-ee -o json | jq ".status.emqxNodes"
- The
MixedProtocolLBService
feature is enabled by default in Kubernetes 1.24 and above. For its documentation, please refer to: MixedProtocolLBService . TheMixedProtocolLBService
attribute allows different protocols to be used within the same Service instance of typeLoadBalancer
. Therefore, if the user deploys the EMQX cluster on Kubernetes and uses theLoadBalancer
type of Service, there are both TCP and UDP protocols in the Service, please pay attention to upgrading the Kubernetes version to 1.24 or above, otherwise the Service creation will fail.