diff --git a/.ci/build_packages/tests.sh b/.ci/build_packages/tests.sh index 8498bd8be..1f07bd8c6 100755 --- a/.ci/build_packages/tests.sh +++ b/.ci/build_packages/tests.sh @@ -25,6 +25,7 @@ emqx_test(){ unzip -q ${PACKAGE_PATH}/$packagename sed -i "/zone.external.server_keepalive/c zone.external.server_keepalive = 60" ${PACKAGE_PATH}/emqx/etc/emqx.conf sed -i "/mqtt.max_topic_alias/c mqtt.max_topic_alias = 10" ${PACKAGE_PATH}/emqx/etc/emqx.conf + sed -i '/emqx_telemetry/d' ${PACKAGE_PATH}/emqx/data/loaded_plugins if [ ! -z $(echo ${EMQX_DEPS_DEFAULT_VSN#v} | grep -oE "[0-9]+\.[0-9]+(\.[0-9]+)?-(alpha|beta|rc)\.[0-9]") ]; then if [ ! -d ${PACKAGE_PATH}/emqx/lib/emqx-${EMQX_DEPS_DEFAULT_VSN#v} ] || [ ! -d ${PACKAGE_PATH}/emqx/releases/${EMQX_DEPS_DEFAULT_VSN#v} ] ;then @@ -111,6 +112,7 @@ running_test(){ sed -i "/zone.external.server_keepalive/c zone.external.server_keepalive = 60" /etc/emqx/emqx.conf sed -i "/mqtt.max_topic_alias/c mqtt.max_topic_alias = 10" /etc/emqx/emqx.conf + sed -i '/emqx_telemetry/d' /var/lib/emqx/loaded_plugins emqx start || tail /var/log/emqx/erlang.log.1 IDLE_TIME=0 diff --git a/.ci/fvt_tests/docker-compose.yaml b/.ci/fvt_tests/docker-compose.yaml index 50e5efa16..467a0ed25 100644 --- a/.ci/fvt_tests/docker-compose.yaml +++ b/.ci/fvt_tests/docker-compose.yaml @@ -16,6 +16,7 @@ services: - -c - | sed -i "s 127.0.0.1 $$(ip route show |grep "link" |awk '{print $$1}') g" /opt/emqx/etc/acl.conf + sed -i '/emqx_telemetry/d' /opt/emqx/data/loaded_plugins /usr/bin/start.sh healthcheck: test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"] @@ -42,6 +43,7 @@ services: - -c - | sed -i "s 127.0.0.1 $$(ip route show |grep "link" |awk '{print $$1}') g" /opt/emqx/etc/acl.conf + sed -i '/emqx_telemetry/d' /opt/emqx/data/loaded_plugins /usr/bin/start.sh healthcheck: test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"] diff --git a/.ci/fvt_tests/relup.lux b/.ci/fvt_tests/relup.lux index 990606b88..c0c2b7592 100644 --- a/.ci/fvt_tests/relup.lux +++ b/.ci/fvt_tests/relup.lux @@ -26,6 +26,7 @@ !cd emqx !sed -i 's|listener.wss.external[ \t]*=.*|listener.wss.external = 8085|g' etc/emqx.conf + !sed -i '/emqx_telemetry/d' data/loaded_plugins !./bin/emqx start ?EMQ X Broker $old_vsn is started successfully! @@ -42,6 +43,7 @@ ?SH-PROMPT !cd emqx2 + !sed -i '/emqx_telemetry/d' data/loaded_plugins !./bin/emqx start ?EMQ X Broker $old_vsn is started successfully! diff --git a/.github/workflows/.gitlint b/.github/workflows/.gitlint index 5982f6b66..50e7bf636 100644 --- a/.github/workflows/.gitlint +++ b/.github/workflows/.gitlint @@ -58,7 +58,7 @@ ignore=title-trailing-punctuation, T1, T2, T3, T4, T5, T6, T8, B1, B2, B3, B4, B # python-style regex that the commit-msg title must match # Note that the regex can contradict with other rules if not used correctly # (e.g. title-must-not-contain-word). -regex=^(feat|feature|fix|docs|style|refactor|test|chore|perf|improve)\(.+\): .+ +regex=^(feat|feature|fix|docs|style|refactor|test|chore|build|perf|improve)\(.+\): .+ # [body-max-line-length] # line-length=72 diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index 8beaa9e57..cfe434961 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -91,6 +91,7 @@ jobs: run: | pkg_name=$(basename _packages/emqx/emqx-macos-*.zip) unzip _packages/emqx/$pkg_name + gsed -i '/emqx_telemetry/d' ./emqx/data/loaded_plugins ./emqx/bin/emqx start || cat emqx/log/erlang.log.1 ./emqx/bin/emqx_ctl status ./emqx/bin/emqx stop diff --git a/.github/workflows/run_fvt_tests.yaml b/.github/workflows/run_fvt_tests.yaml index e8ca663ea..fd2c55f05 100644 --- a/.github/workflows/run_fvt_tests.yaml +++ b/.github/workflows/run_fvt_tests.yaml @@ -77,6 +77,7 @@ jobs: sed -i -r "s/^appVersion: .*$/appVersion: \"${version}\"/g" deploy/charts/emqx/Chart.yaml sed -i -r 's/ pullPolicy: .*$/ pullPolicy: Never/g' deploy/charts/emqx/values.yaml + sed -i '/emqx_telemetry/d' deploy/charts/emqx/values.yaml helm install emqx --set emqxAclConfig="" --set emqxConfig.EMQX_ZONE__EXTERNAL__RETRY_INTERVAL=2s --set emqxConfig.EMQX_MQTT__MAX_TOPIC_ALIAS=10 deploy/charts/emqx --debug --dry-run helm install emqx --set emqxAclConfig="" --set emqxConfig.EMQX_ZONE__EXTERNAL__RETRY_INTERVAL=2s --set emqxConfig.EMQX_MQTT__MAX_TOPIC_ALIAS=10 deploy/charts/emqx @@ -89,6 +90,11 @@ jobs: echo "waiting emqx started"; sleep 10; done + - name: get pods log + if: failure() + env: + KUBECONFIG: "/etc/rancher/k3s/k3s.yaml" + run: kubectl describe pods emqx-0 - uses: actions/checkout@v2 with: repository: emqx/paho.mqtt.testing diff --git a/deploy/charts/emqx/templates/StatefulSet.yaml b/deploy/charts/emqx/templates/StatefulSet.yaml index 43494b6ec..c364ec83d 100644 --- a/deploy/charts/emqx/templates/StatefulSet.yaml +++ b/deploy/charts/emqx/templates/StatefulSet.yaml @@ -49,6 +49,18 @@ spec: app.kubernetes.io/instance: {{ .Release.Name }} spec: volumes: + - name: emqx-loaded-plugins + configMap: + name: {{ include "emqx.fullname" . }}-loaded-plugins + items: + - key: loaded_plugins + path: loaded_plugins + - name: emqx-loaded-modules + configMap: + name: {{ include "emqx.fullname" . }}-loaded-modules + items: + - key: loaded_modules + path: loaded_modules - name: emqx-acl configMap: name: {{ include "emqx.fullname" . }}-acl @@ -128,6 +140,12 @@ spec: - name: emqx-acl mountPath: "/opt/emqx/etc/acl.conf" subPath: "acl.conf" + - name: emqx-loaded-plugins + mountPath: "/opt/emqx/data/loaded_plugins" + subPath: "loaded_plugins" + - name: emqx-loaded-modules + mountPath: "/opt/emqx/data/loaded_modules" + subPath: "loaded_modules" {{ if .Values.emqxLicneseSecretName }} - name: emqx-license mountPath: "/opt/emqx/etc/emqx.lic" diff --git a/deploy/charts/emqx/templates/configmap.yaml b/deploy/charts/emqx/templates/configmap.yaml index bf7a1c1e6..c9c4b4770 100644 --- a/deploy/charts/emqx/templates/configmap.yaml +++ b/deploy/charts/emqx/templates/configmap.yaml @@ -11,4 +11,49 @@ metadata: data: {{- range $index, $value := .Values.emqxConfig}} {{$index}}: "{{ $value }}" - {{- end}} \ No newline at end of file + {{- end}} + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "emqx.fullname" . }}-acl + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ include "emqx.name" . }} + helm.sh/chart: {{ include "emqx.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +data: + "acl.conf": | + {{ .Values.emqxAclConfig }} + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "emqx.fullname" . }}-loaded-plugins + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ include "emqx.name" . }} + helm.sh/chart: {{ include "emqx.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +data: + "loaded_plugins": | + {{ .Values.emqxLoadedPlugins }} + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "emqx.fullname" . }}-loaded-modules + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ include "emqx.name" . }} + helm.sh/chart: {{ include "emqx.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +data: + "loaded_modules": | + {{ .Values.emqxLoadedModules }} diff --git a/deploy/charts/emqx/templates/configmap_for_acl.yaml b/deploy/charts/emqx/templates/configmap_for_acl.yaml deleted file mode 100644 index 23b8ab583..000000000 --- a/deploy/charts/emqx/templates/configmap_for_acl.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "emqx.fullname" . }}-acl - namespace: {{ .Release.Namespace }} - labels: - app.kubernetes.io/name: {{ include "emqx.name" . }} - helm.sh/chart: {{ include "emqx.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -data: - "acl.conf": | - {{ .Values.emqxAclConfig }} \ No newline at end of file diff --git a/deploy/charts/emqx/values.yaml b/deploy/charts/emqx/values.yaml index 2d82d4a5e..f75afcc06 100644 --- a/deploy/charts/emqx/values.yaml +++ b/deploy/charts/emqx/values.yaml @@ -3,7 +3,7 @@ ## Declare variables to be passed into your templates. ## 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. -replicaCount: 3 +replicaCount: 3 image: repository: emqx/emqx pullPolicy: IfNotPresent @@ -74,6 +74,23 @@ emqxAclConfig: > {deny, all, subscribe, ["$SYS/#", {eq, "#"}]}. {allow, all}. +emqxLoadedPlugins: > + {emqx_management, true}. + {emqx_recon, true}. + {emqx_retainer, true}. + {emqx_dashboard, true}. + {emqx_telemetry, true}. + {emqx_rule_engine, true}. + {emqx_bridge_mqtt, false}. + +emqxLoadedModules: > + {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}. + ## EMQX Enterprise Edition requires manual creation of a Secret containing the licensed content. Write the name of Secret to the value of "emqxLicneseSecretName" ## Example: ## kubectl create secret generic emqx-license-secret-name --from-file=/path/to/emqx.lic @@ -86,7 +103,7 @@ service: ## Port for MQTT ## mqtt: 1883 - ## Port for MQTT(SSL) + ## Port for MQTT(SSL) ## mqttssl: 8883 ## Port for mgmt API