|
|
пре 4 година | |
|---|---|---|
| .. | ||
| templates | пре 4 година | |
| Chart.yaml | пре 4 година | |
| README.md | пре 4 година | |
| values.yaml | пре 4 година | |
This chart bootstraps an EMQX deployment on a Kubernetes (K8s) cluster using the Helm package manager.
To install the chart with the release name my-emqx:
From github
$ git clone https://github.com/emqx/emqx.git
$ cd emqx/deploy/charts/emqx
$ helm install my-emqx .
From chart repos
helm repo add emqx https://repos.emqx.io/charts
helm install my-emqx emqx/emqx
If you want to install an unstable version, you need to add
--develwhen you execute thehelm installcommand.
To uninstall/delete the my-emqx deployment:
$ helm del my-emqx
The following sections describe the configurable parameters of the chart and their default values.
The following table lists the configurable K8s parameters of the EMQX chart and their default values.
Parameter | Description | Default Value
--- | --- | ---
replicaCount | It is recommended to have odd number of nodes in a cluster, otherwise the emqx cluster cannot be automatically healed in case of net-split. | 3
image.tag | EMQX Image tag (defaults to .Chart.AppVersion) | nil
image.repository | EMQX Image repository | emqx/emqx
image.pullPolicy | The image pull policy | IfNotPresent
image.pullSecrets | The image pull secrets (does not add image pull secrets to deployed pods) |[]
recreatePods | Forces the recreation of pods during upgrades, which can be useful to always apply the most recent configuration. | false
persistence.enabled | Enable EMQX persistence using PVC | false
persistence.storageClass | Storage class of backing PVC (uses alpha storage class annotation) | nil
persistence.existingClaim | EMQX data Persistent Volume existing claim name, evaluated as a template | ""
persistence.accessMode | PVC Access Mode for EMQX volume | ReadWriteOnce
persistence.size | PVC Storage Request for EMQX volume | 20Mi
initContainers | Containers that run before the creation of EMQX containers. They can contain utilities or setup scripts. |{}
resources | CPU/Memory resource requests/limits |{}
nodeSelector | Node labels for pod assignment |{}
tolerations | Toleration labels for pod assignment |[]
affinity | Map of node/pod affinities |{}
service.type | Kubernetes Service type. | ClusterIP
service.mqtt | Port for MQTT. | 1883
service.mqttssl | Port for MQTT(SSL). | 8883
service.mgmt | Port for mgmt API. | 8081
service.ws | Port for WebSocket/HTTP. | 8083
service.wss | Port for WSS/HTTPS. | 8084
service.dashboard | Port for dashboard. | 18083
service.nodePorts.mqtt | Kubernetes node port for MQTT. | nil
service.nodePorts.mqttssl | Kubernetes node port for MQTT(SSL). | nil
service.nodePorts.mgmt | Kubernetes node port for mgmt API. | nil
service.nodePorts.ws | Kubernetes node port for WebSocket/HTTP. | nil
service.nodePorts.wss | Kubernetes node port for WSS/HTTPS. | nil
service.nodePorts.dashboard | Kubernetes node port for dashboard. | nil
service.loadBalancerIP | loadBalancerIP for Service | nil
service.loadBalancerSourceRanges | Address(es) that are allowed when service is LoadBalancer | []
service.externalIPs | ExternalIPs for the service | []
service.annotations | Service annotations (evaluated as a template) | {}
ingress.dashboard.enabled | Enable ingress for EMQX Dashboard | false
ingress.dashboard.ingressClassName | Set the ingress class for EMQX Dashboard
ingress.dashboard.path | Ingress path for EMQX Dashboard | /
ingress.dashboard.hosts | Ingress hosts for EMQX Mgmt API | dashboard.emqx.local
ingress.dashboard.tls | Ingress tls for EMQX Mgmt API | []
ingress.dashboard.annotations | Ingress annotations for EMQX Mgmt API | {}
ingress.mgmt.enabled | Enable ingress for EMQX Mgmt API | false
ingress.mqtt.ingressClassName | Set the ingress class for EMQX Mgmt API | nil
ingress.mgmt.path | Ingress path for EMQX Mgmt API | /
ingress.mgmt.hosts | Ingress hosts for EMQX Mgmt API | api.emqx.local
ingress.mgmt.tls | Ingress tls for EMQX Mgmt API | []
ingress.mgmt.annotations | Ingress annotations for EMQX Mgmt API | {}
ingress.wss.enabled | Enable ingress for EMQX Mgmt API | false
ingress.wss.ingressClassName | Set the ingress class for EMQX Mgmt API | nil
ingress.wss.path | Ingress path for EMQX WSS | /
ingress.wss.hosts | Ingress hosts for EMQX WSS | wss.emqx.local
ingress.wss.tls | Ingress tls for EMQX WSS | []
ingress.wss.annotations | Ingress annotations for EMQX WSS | {}
extraEnv | Aditional container env vars | []
extraEnvFrom | Aditional container env from vars (eg. config map, secrets | []
extraArgs | Additional container executable arguments | []
extraVolumes | Additional container volumes (eg. for mounting certs from secrets) | []
extraVolumeMounts | Additional container volume mounts (eg. for mounting certs from secrets) | []
The following table lists the configurable EMQX-specific parameters of the chart and their default values.
Parameter | Description | Default Value
--- | --- | ---
emqxConfig | Map of configuration items expressed as environment variables (prefix can be omitted) or using the configuration files namespaced dotted notation | nil
emqxLicenseSecretName | Name of the secret that holds the license information | nil
emqxAclConfig | ACL configuration | {allow, {user, "dashboard"}, subscribe, ["$SYS/#"]}. {allow, {ipaddr, "127.0.0.1"}, pubsub, ["$SYS/#", "#"]}. {deny, all, subscribe, ["$SYS/#", {eq, "#"}]}. {allow, all}.
emqxLoadedModules | Modules to load on startup | {emqx_mod_acl_internal, true}. {emqx_mod_presence, true}. {emqx_mod_delayed, false}. {emqx_mod_rewrite, false}. {emqx_mod_subscription, false}. {emqx_mod_topic_metrics, false}.
emqxLoadedPlugins | Plugins to load on startup | {emqx_management, true}. {emqx_recon, true}. {emqx_retainer, true}. {emqx_dashboard, true}. {emqx_telemetry, true}. {emqx_rule_engine, true}. {emqx_bridge_mqtt, false}.
This section provides some examples for the configuration of common scenarios.
The following settings describe a working scenario for acessing EMQX Websockets with SSL termination at the nginx-ingress community controller.
ingress:
wss:
enabled: true
# ingressClassName: nginx
annotations:
nginx.ingress.kubernetes.io/backend-protocol: "http"
nginx.ingress.kubernetes.io/use-forwarded-headers: "true"
nginx.ingress.kubernetes.io/enable-real-ip: "true"
nginx.ingress.kubernetes.io/proxy-request-buffering: "off"
nginx.ingress.kubernetes.io/proxy-connect-timeout: "120"
nginx.ingress.kubernetes.io/proxy-http-version: "1.1"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/use-proxy-protocol: "false"
nginx.ingress.kubernetes.io/proxy-protocol-header-timeout: "5s"
path: /mqtt
hosts:
- myhost.example.com
tls:
- hosts:
- myhost.example.com
secretName: myhost-example-com-tls # Name of the secret that holds the certificates for the domain