Merge pull request #12242 from JimMoen/1228-chore-typo-and-style
chore: typo and style
This commit is contained in:
commit
a3fc4fa5c3
|
@ -1,12 +1,11 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps,
|
||||
[
|
||||
{deps, [
|
||||
{minirest, {git, "https://github.com/emqx/minirest.git", {tag, "1.3.7"}}}
|
||||
]}.
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
% {config, "config/sys.config"},
|
||||
% {config, "config/sys.config"},
|
||||
{apps, [http_server]}
|
||||
]}.
|
||||
|
|
5
Makefile
5
Makefile
|
@ -316,9 +316,10 @@ $(foreach tt,$(ALL_ELIXIR_TGZS),$(eval $(call gen-elixir-tgz-target,$(tt))))
|
|||
.PHONY: fmt
|
||||
fmt: $(REBAR)
|
||||
@$(SCRIPTS)/erlfmt -w 'apps/*/{src,include,priv,test,integration_test}/**/*.{erl,hrl,app.src,eterm}'
|
||||
@$(SCRIPTS)/erlfmt -w '**/*.escript' --exclude-files '_build/**'
|
||||
@$(SCRIPTS)/erlfmt -w '**/rebar.config'
|
||||
@$(SCRIPTS)/erlfmt -w 'rebar.config.erl'
|
||||
@$(SCRIPTS)/erlfmt -w '$(SCRIPTS)/**/*.escript'
|
||||
@$(SCRIPTS)/erlfmt -w 'bin/**/*.escript'
|
||||
@$(SCRIPTS)/erlfmt -w 'bin/nodetool'
|
||||
@mix format
|
||||
|
||||
.PHONY: clean-test-cluster-config
|
||||
|
|
|
@ -60,7 +60,7 @@ EMQX Cloud 文档:[docs.emqx.com/zh/cloud/latest/](https://docs.emqx.com/zh/cl
|
|||
- 访问 [EMQ 问答社区](https://askemq.com/) 以获取帮助,也可以分享您的想法或项目。
|
||||
- 添加小助手微信号 `emqmkt`,加入 EMQ 微信技术交流群。
|
||||
- 加入我们的 [Discord](https://discord.gg/xYGf3fQnES),参于实时讨论。
|
||||
- 关注我们的 [bilibili](https://space.bilibili.com/522222081),获取最新物联网技术分享。
|
||||
- 关注我们的 [Bilibili](https://space.bilibili.com/522222081),获取最新物联网技术分享。
|
||||
- 关注我们的 [微博](https://weibo.com/emqtt) 或 [Twitter](https://twitter.com/EMQTech),获取 EMQ 最新资讯。
|
||||
|
||||
## 相关资源
|
||||
|
|
|
@ -32,7 +32,7 @@ docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p
|
|||
|
||||
Чтобы ознакомиться с функциональностью EMQX, пожалуйста, следуйте [руководству по началу работы](https://www.emqx.io/docs/en/v5.0/getting-started/getting-started.html#start-emqx).
|
||||
|
||||
#### Запуск кластера EMQX на kubernetes
|
||||
#### Запуск кластера EMQX на Kubernetes
|
||||
|
||||
[Документация по EMQX Operator](https://github.com/emqx/emqx-operator/blob/main/docs/en_US/getting-started/getting-started.md).
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p
|
|||
|
||||
Next, please follow the [Deploy with Docker](https://www.emqx.io/docs/en/v5.1/deploy/install-docker.html) guide for further instructions.
|
||||
|
||||
#### Run EMQX cluster on kubernetes
|
||||
#### Run EMQX cluster on Kubernetes
|
||||
|
||||
Please consult official [EMQX Operator](https://github.com/emqx/emqx-operator/blob/main/docs/en_US/getting-started/getting-started.md) documentation for details.
|
||||
|
||||
|
|
|
@ -47,8 +47,10 @@
|
|||
{bbmustache, "1.10.0"},
|
||||
{emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.10.0"}}}
|
||||
]},
|
||||
{extra_src_dirs, [{"test", [recursive]},
|
||||
{"integration_test", [recursive]}]}
|
||||
{extra_src_dirs, [
|
||||
{"test", [recursive]},
|
||||
{"integration_test", [recursive]}
|
||||
]}
|
||||
]},
|
||||
{standalone_test, [
|
||||
{deps, [
|
||||
|
|
|
@ -137,7 +137,7 @@ to negotiate protocol version:
|
|||
protocol version supported by the remote node
|
||||
`Node`. `emqx_bpapi:supported_version(ProtocolId)` returns maximum
|
||||
protocol version that is supported by all nodes in the cluster. It can
|
||||
be useful when the protocol involves multicalls or multicasts.
|
||||
be useful when the protocol involves multi-calls or multi-casts.
|
||||
|
||||
The business logic can assume that the supported protocol version is
|
||||
not going to change on the remote node, while it is running. So it is
|
||||
|
|
|
@ -585,7 +585,7 @@ t_connack_max_qos_allowed(Config) ->
|
|||
|
||||
process_flag(trap_exit, false).
|
||||
|
||||
t_connack_assigned_clienid(Config) ->
|
||||
t_connack_assigned_clientid(Config) ->
|
||||
ConnFun = ?config(conn_fun, Config),
|
||||
{ok, Client1} = emqtt:start_link([{proto_ver, v5} | Config]),
|
||||
{ok, _} = emqtt:ConnFun(Client1),
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}}
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}}
|
||||
]}.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
{emqx_auth, {path, "../emqx_auth"}}
|
||||
]}.
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
{emqx_auth, {path, "../emqx_auth"}}
|
||||
]}.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
]}.
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
% {config, "config/sys.config"},
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {wolff, {git, "https://github.com/kafka4beam/wolff.git", {tag, "1.9.1"}}}
|
||||
, {kafka_protocol, {git, "https://github.com/kafka4beam/kafka_protocol.git", {tag, "4.1.3"}}}
|
||||
, {brod_gssapi, {git, "https://github.com/kafka4beam/brod_gssapi.git", {tag, "v0.1.1"}}}
|
||||
, {brod, {git, "https://github.com/kafka4beam/brod.git", {tag, "3.16.8"}}}
|
||||
, {snappyer, "1.2.9"}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{wolff, {git, "https://github.com/kafka4beam/wolff.git", {tag, "1.9.1"}}},
|
||||
{kafka_protocol, {git, "https://github.com/kafka4beam/kafka_protocol.git", {tag, "4.1.3"}}},
|
||||
{brod_gssapi, {git, "https://github.com/kafka4beam/brod_gssapi.git", {tag, "v0.1.1"}}},
|
||||
{brod, {git, "https://github.com/kafka4beam/brod.git", {tag, "3.16.8"}}},
|
||||
{snappyer, "1.2.9"},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_azure_event_hub]}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {ecql, {git, "https://github.com/emqx/ecql.git", {tag, "v0.5.2"}}}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{ecql, {git, "https://github.com/emqx/ecql.git", {tag, "v0.5.2"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_cassandra]}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {clickhouse, {git, "https://github.com/emqx/clickhouse-client-erl", {tag, "0.3.1"}}}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{clickhouse, {git, "https://github.com/emqx/clickhouse-client-erl", {tag, "0.3.1"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_clickhouse]}
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {wolff, {git, "https://github.com/kafka4beam/wolff.git", {tag, "1.9.1"}}}
|
||||
, {kafka_protocol, {git, "https://github.com/kafka4beam/kafka_protocol.git", {tag, "4.1.3"}}}
|
||||
, {brod_gssapi, {git, "https://github.com/kafka4beam/brod_gssapi.git", {tag, "v0.1.1"}}}
|
||||
, {brod, {git, "https://github.com/kafka4beam/brod.git", {tag, "3.16.8"}}}
|
||||
, {snappyer, "1.2.9"}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{wolff, {git, "https://github.com/kafka4beam/wolff.git", {tag, "1.9.1"}}},
|
||||
{kafka_protocol, {git, "https://github.com/kafka4beam/kafka_protocol.git", {tag, "4.1.3"}}},
|
||||
{brod_gssapi, {git, "https://github.com/kafka4beam/brod_gssapi.git", {tag, "v0.1.1"}}},
|
||||
{brod, {git, "https://github.com/kafka4beam/brod.git", {tag, "3.16.8"}}},
|
||||
{snappyer, "1.2.9"},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_confluent]}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {erlcloud, {git, "https://github.com/emqx/erlcloud", {tag, "3.7.0.3"}}}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{erlcloud, {git, "https://github.com/emqx/erlcloud", {tag, "3.7.0.3"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_dynamo]}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [
|
||||
warn_unused_vars,
|
||||
warn_shadow_vars,
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
{erl_opts, [
|
||||
debug_info
|
||||
]}.
|
||||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}},
|
||||
{greptimedb, {git, "https://github.com/GreptimeTeam/greptimedb-client-erl", {tag, "v0.1.6"}}}
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}},
|
||||
{greptimedb, {git, "https://github.com/GreptimeTeam/greptimedb-client-erl", {tag, "v0.1.6"}}}
|
||||
]}.
|
||||
{plugins, [rebar3_path_deps]}.
|
||||
{project_plugins, [erlfmt]}.
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{hstreamdb_erl, {git, "https://github.com/hstreamdb/hstreamdb_erl.git", {tag, "0.4.5+v0.16.1"}}},
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_utils, {path, "../../apps/emqx_utils"}}
|
||||
{hstreamdb_erl,
|
||||
{git, "https://github.com/hstreamdb/hstreamdb_erl.git", {tag, "0.4.5+v0.16.1"}}},
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_utils, {path, "../../apps/emqx_utils"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_http]}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
|
|
|
@ -5,11 +5,11 @@
|
|||
]}.
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}},
|
||||
{emqx_bridge_http, {path, "../emqx_bridge_http"}}
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}},
|
||||
{emqx_bridge_http, {path, "../emqx_bridge_http"}}
|
||||
]}.
|
||||
{plugins, [rebar3_path_deps]}.
|
||||
{project_plugins, [erlfmt]}.
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {wolff, {git, "https://github.com/kafka4beam/wolff.git", {tag, "1.9.1"}}}
|
||||
, {kafka_protocol, {git, "https://github.com/kafka4beam/kafka_protocol.git", {tag, "4.1.3"}}}
|
||||
, {brod_gssapi, {git, "https://github.com/kafka4beam/brod_gssapi.git", {tag, "v0.1.1"}}}
|
||||
, {brod, {git, "https://github.com/kafka4beam/brod.git", {tag, "3.16.8"}}}
|
||||
, {snappyer, "1.2.9"}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{wolff, {git, "https://github.com/kafka4beam/wolff.git", {tag, "1.9.1"}}},
|
||||
{kafka_protocol, {git, "https://github.com/kafka4beam/kafka_protocol.git", {tag, "4.1.3"}}},
|
||||
{brod_gssapi, {git, "https://github.com/kafka4beam/brod_gssapi.git", {tag, "v0.1.1"}}},
|
||||
{brod, {git, "https://github.com/kafka4beam/brod.git", {tag, "3.16.8"}}},
|
||||
{snappyer, "1.2.9"},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_kafka]}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {erlcloud, {git, "https://github.com/emqx/erlcloud", {tag, "3.7.0.3"}}}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{erlcloud, {git, "https://github.com/emqx/erlcloud", {tag, "3.7.0.3"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_kinesis]}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
, {emqx_mongodb, {path, "../../apps/emqx_mongodb"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}},
|
||||
{emqx_mongodb, {path, "../../apps/emqx_mongodb"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_mongodb]}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}}
|
||||
]}.
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
, {emqx_mysql, {path, "../../apps/emqx_mysql"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}},
|
||||
{emqx_mysql, {path, "../../apps/emqx_mysql"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_mysql]}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx_oracle, {path, "../../apps/emqx_oracle"}}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx_oracle, {path, "../../apps/emqx_oracle"}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
% {config, "config/sys.config"},
|
||||
% {config, "config/sys.config"},
|
||||
{apps, [emqx_bridge_oracle]}
|
||||
]}.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
%% The following two are dependencies of rabbit_common
|
||||
{thoas, {git, "https://github.com/emqx/thoas.git", {tag, "v1.0.0"}}}
|
||||
, {credentials_obfuscation, {git, "https://github.com/emqx/credentials-obfuscation.git", {tag, "v3.2.0"}}}
|
||||
%% The v3.11.13.2 (v3.11.13_with_app_src branch), employed in the next two dependencies,
|
||||
%% represents a fork of the official RabbitMQ v3.11.13 tag. This fork diverges
|
||||
%% from the official version as it includes app and hrl files
|
||||
%% generated by make files in subdirectories deps/rabbit_common and
|
||||
%% deps/amqp_client (app files are also relocated from the ebin to the src
|
||||
%% directory). This modification ensures compatibility with rebar3, as
|
||||
%% rabbit_common and amqp_client utilize the erlang.mk build tool.
|
||||
%% Similar changes are probably needed when upgrading to newer versions
|
||||
%% of rabbit_common and amqp_client. There are hex packages for rabbit_common and
|
||||
%% amqp_client, but they are not used here as we don't want to depend on
|
||||
%% packages that we don't have control over.
|
||||
, {rabbit_common, {git_subdir,
|
||||
"https://github.com/emqx/rabbitmq-server.git",
|
||||
{tag, "v3.11.13.2"},
|
||||
"deps/rabbit_common"}}
|
||||
, {amqp_client, {git_subdir,
|
||||
"https://github.com/emqx/rabbitmq-server.git",
|
||||
{tag, "v3.11.13.2"},
|
||||
"deps/amqp_client"}}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
%% The following two are dependencies of rabbit_common
|
||||
{thoas, {git, "https://github.com/emqx/thoas.git", {tag, "v1.0.0"}}},
|
||||
{credentials_obfuscation,
|
||||
{git, "https://github.com/emqx/credentials-obfuscation.git", {tag, "v3.2.0"}}},
|
||||
%% The v3.11.13.2 (v3.11.13_with_app_src branch), employed in the next two dependencies,
|
||||
%% represents a fork of the official RabbitMQ v3.11.13 tag. This fork diverges
|
||||
%% from the official version as it includes app and hrl files
|
||||
%% generated by make files in subdirectories deps/rabbit_common and
|
||||
%% deps/amqp_client (app files are also relocated from the ebin to the src
|
||||
%% directory). This modification ensures compatibility with rebar3, as
|
||||
%% rabbit_common and amqp_client utilize the erlang.mk build tool.
|
||||
%% Similar changes are probably needed when upgrading to newer versions
|
||||
%% of rabbit_common and amqp_client. There are hex packages for rabbit_common and
|
||||
%% amqp_client, but they are not used here as we don't want to depend on
|
||||
%% packages that we don't have control over.
|
||||
{rabbit_common,
|
||||
{git_subdir, "https://github.com/emqx/rabbitmq-server.git", {tag, "v3.11.13.2"},
|
||||
"deps/rabbit_common"}},
|
||||
{amqp_client,
|
||||
{git_subdir, "https://github.com/emqx/rabbitmq-server.git", {tag, "v3.11.13.2"},
|
||||
"deps/amqp_client"}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_rabbitmq]}
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
, {emqx_redis, {path, "../../apps/emqx_redis"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}},
|
||||
{emqx_redis, {path, "../../apps/emqx_redis"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_redis]}
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
{apps, [emqx_bridge_sqlserver]}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{emqx_bridge, {path, "../../apps/emqx_bridge"}}
|
||||
]}.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, []}.
|
||||
|
|
|
@ -2,5 +2,5 @@
|
|||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
{emqx_dashboard, {path, "../../apps/emqx_dashboard"}}
|
||||
{emqx_dashboard, {path, "../../apps/emqx_dashboard"}}
|
||||
]}.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx_ldap, {path, "../../apps/emqx_ldap"}},
|
||||
{emqx_dashboard, {path, "../../apps/emqx_dashboard"}},
|
||||
{esaml, {git, "https://github.com/emqx/esaml", {tag, "v1.1.3"}}}
|
||||
{emqx_ldap, {path, "../../apps/emqx_ldap"}},
|
||||
{emqx_dashboard, {path, "../../apps/emqx_dashboard"}},
|
||||
{esaml, {git, "https://github.com/emqx/esaml", {tag, "v1.1.3"}}}
|
||||
]}.
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
%% -*- mode:erlang -*-
|
||||
{deps,
|
||||
[{emqx_utils, {path, "../emqx_utils"}}]}.
|
||||
|
||||
{deps, [{emqx_utils, {path, "../emqx_utils"}}]}.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, []}.
|
||||
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{deps, [{emqx, {path, "../../apps/emqx"}}]}.
|
||||
{project_plugins, [erlfmt]}.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%%-*- mode: erlang -*-
|
||||
|
||||
{plugins, [
|
||||
rebar3_proper,
|
||||
{grpc_plugin, {git, "https://github.com/HJianBo/grpc_plugin", {tag, "v0.10.2"}}}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
|
|
|
@ -509,7 +509,7 @@ codestr(400) -> 'BAD_REQUEST';
|
|||
codestr(404) -> 'RESOURCE_NOT_FOUND';
|
||||
codestr(405) -> 'METHOD_NOT_ALLOWED';
|
||||
codestr(409) -> 'NOT_SUPPORT';
|
||||
codestr(500) -> 'UNKNOW_ERROR';
|
||||
codestr(500) -> 'UNKNOWN_ERROR';
|
||||
codestr(501) -> 'NOT_IMPLEMENTED'.
|
||||
|
||||
fmtstr(Fmt, Args) ->
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_gateway, {path, "../../apps/emqx_gateway"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_gateway, {path, "../../apps/emqx_gateway"}}
|
||||
]}.
|
||||
|
|
|
@ -1,4 +1,7 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_gateway, {path, "../../apps/emqx_gateway"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_gateway, {path, "../../apps/emqx_gateway"}}
|
||||
]}.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{deps, [
|
||||
{jesse, "1.7.0"},
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
{emqx_gateway, {path, "../../apps/emqx_gateway"}}
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
{emqx_gateway, {path, "../../apps/emqx_gateway"}}
|
||||
]}.
|
||||
|
|
|
@ -797,7 +797,7 @@ test_frame_error(Frame, AssertFun) ->
|
|||
AssertFun(Sock)
|
||||
end).
|
||||
|
||||
t_rest_clienit_info(_) ->
|
||||
t_rest_clientid_info(_) ->
|
||||
with_connection(fun(Sock) ->
|
||||
send_connection_frame(Sock, <<"guest">>, <<"guest">>),
|
||||
?assertMatch({ok, #stomp_frame{command = <<"CONNECTED">>}}, recv_a_frame(Sock)),
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
]}.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}}
|
||||
|
|
|
@ -221,7 +221,7 @@ schema("/clients/kickout/bulk") ->
|
|||
tags => ?TAGS,
|
||||
'requestBody' => emqx_dashboard_swagger:schema_with_example(
|
||||
hoconsc:array(binary()),
|
||||
["emqx_clienid_985bb09d", "emqx_clientid_211cc01c"]
|
||||
["emqx_clientid_985bb09d", "emqx_clientid_211cc01c"]
|
||||
),
|
||||
responses => #{
|
||||
204 => <<"Kick out clients successfully">>
|
||||
|
@ -452,7 +452,7 @@ fields(client) ->
|
|||
{is_bridge,
|
||||
hoconsc:mk(boolean(), #{
|
||||
desc =>
|
||||
<<"Indicates whether the client is connectedvia bridge">>
|
||||
<<"Indicates whether the client is connected via bridge">>
|
||||
})},
|
||||
{keepalive,
|
||||
hoconsc:mk(integer(), #{
|
||||
|
@ -605,7 +605,7 @@ kickout_clients(post, #{body := ClientIDs}) ->
|
|||
{204};
|
||||
{error, Reason} ->
|
||||
Message = list_to_binary(io_lib:format("~p", [Reason])),
|
||||
{500, #{code => <<"UNKNOW_ERROR">>, message => Message}}
|
||||
{500, #{code => <<"UNKNOWN_ERROR">>, message => Message}}
|
||||
end.
|
||||
|
||||
client(get, #{bindings := Bindings}) ->
|
||||
|
@ -660,7 +660,7 @@ set_keepalive(put, #{bindings := #{clientid := ClientID}, body := Body}) ->
|
|||
case emqx_mgmt:set_keepalive(ClientID, Interval) of
|
||||
ok -> lookup(#{clientid => ClientID});
|
||||
{error, not_found} -> {404, ?CLIENTID_NOT_FOUND};
|
||||
{error, Reason} -> {400, #{code => 'PARAMS_ERROR', message => Reason}}
|
||||
{error, Reason} -> {400, #{code => 'PARAM_ERROR', message => Reason}}
|
||||
end
|
||||
end.
|
||||
|
||||
|
@ -728,7 +728,7 @@ get_authz_cache(#{clientid := ClientID}) ->
|
|||
{404, ?CLIENTID_NOT_FOUND};
|
||||
{error, Reason} ->
|
||||
Message = list_to_binary(io_lib:format("~p", [Reason])),
|
||||
{500, #{code => <<"UNKNOW_ERROR">>, message => Message}};
|
||||
{500, #{code => <<"UNKNOWN_ERROR">>, message => Message}};
|
||||
Caches ->
|
||||
Response = [format_authz_cache(Cache) || Cache <- Caches],
|
||||
{200, Response}
|
||||
|
@ -742,7 +742,7 @@ clean_authz_cache(#{clientid := ClientID}) ->
|
|||
{404, ?CLIENTID_NOT_FOUND};
|
||||
{error, Reason} ->
|
||||
Message = list_to_binary(io_lib:format("~p", [Reason])),
|
||||
{500, #{code => <<"UNKNOW_ERROR">>, message => Message}}
|
||||
{500, #{code => <<"UNKNOWN_ERROR">>, message => Message}}
|
||||
end.
|
||||
|
||||
subscribe(#{clientid := ClientID, topic := Topic} = Sub) ->
|
||||
|
@ -752,7 +752,7 @@ subscribe(#{clientid := ClientID, topic := Topic} = Sub) ->
|
|||
{404, ?CLIENTID_NOT_FOUND};
|
||||
{error, Reason} ->
|
||||
Message = list_to_binary(io_lib:format("~p", [Reason])),
|
||||
{500, #{code => <<"UNKNOW_ERROR">>, message => Message}};
|
||||
{500, #{code => <<"UNKNOWN_ERROR">>, message => Message}};
|
||||
{ok, SubInfo} ->
|
||||
{200, SubInfo}
|
||||
end.
|
||||
|
|
|
@ -419,7 +419,7 @@ do_publish(Key = {Ts, _Id}, Now, Acc) when Ts =< Now ->
|
|||
ignore_delayed_message_publish,
|
||||
#{
|
||||
reason => "client is banned",
|
||||
clienid => Msg#message.from
|
||||
clientid => Msg#message.from
|
||||
}
|
||||
),
|
||||
ok
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
%% -*- mode: erlang -*-
|
||||
{application, emqx_modules, [
|
||||
{description, "EMQX Modules"},
|
||||
{vsn, "5.0.24"},
|
||||
{vsn, "5.0.25"},
|
||||
{modules, []},
|
||||
{applications, [kernel, stdlib, emqx, emqx_ctl, observer_cli]},
|
||||
{mod, {emqx_modules_app, []}},
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
, {mongodb, {git, "https://github.com/emqx/mongodb-erlang", {tag, "v3.0.22"}}}
|
||||
]}.
|
||||
{deps, [
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}},
|
||||
{mongodb, {git, "https://github.com/emqx/mongodb-erlang", {tag, "v3.0.22"}}}
|
||||
]}.
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
%% NOTE: mind ecpool version when updating eredis_cluster version
|
||||
{mysql, {git, "https://github.com/emqx/mysql-otp", {tag, "1.7.4.1"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
%% NOTE: mind ecpool version when updating eredis_cluster version
|
||||
{mysql, {git, "https://github.com/emqx/mysql-otp", {tag, "1.7.4.1"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
]}.
|
||||
|
|
|
@ -1,2 +1,4 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{deps, [{emqx, {path, "../../apps/emqx"}}]}.
|
||||
{project_plugins, [erlfmt]}.
|
||||
|
|
|
@ -1,16 +1,26 @@
|
|||
%% -*- mode: erlang -*-
|
||||
|
||||
{deps,
|
||||
[{emqx, {path, "../emqx"}}
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
%% trace
|
||||
, {opentelemetry_api, {git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"}, "apps/opentelemetry_api"}}
|
||||
, {opentelemetry, {git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"}, "apps/opentelemetry"}}
|
||||
{opentelemetry_api,
|
||||
{git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"},
|
||||
"apps/opentelemetry_api"}},
|
||||
{opentelemetry,
|
||||
{git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"},
|
||||
"apps/opentelemetry"}},
|
||||
%% logs, metrics
|
||||
, {opentelemetry_experimental, {git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"}, "apps/opentelemetry_experimental"}}
|
||||
, {opentelemetry_api_experimental, {git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"}, "apps/opentelemetry_api_experimental"}}
|
||||
{opentelemetry_experimental,
|
||||
{git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"},
|
||||
"apps/opentelemetry_experimental"}},
|
||||
{opentelemetry_api_experimental,
|
||||
{git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"},
|
||||
"apps/opentelemetry_api_experimental"}},
|
||||
%% export
|
||||
, {opentelemetry_exporter, {git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"}, "apps/opentelemetry_exporter"}}
|
||||
]}.
|
||||
{opentelemetry_exporter,
|
||||
{git_subdir, "https://github.com/emqx/opentelemetry-erlang", {tag, "v1.4.7-emqx"},
|
||||
"apps/opentelemetry_exporter"}}
|
||||
]}.
|
||||
|
||||
{edoc_opts, [{preprocess, true}]}.
|
||||
{erl_opts, [
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [ {jamdb_oracle, {git, "https://github.com/emqx/jamdb_oracle", {tag, "0.4.9.5"}}}
|
||||
, {emqx_connector, {path, "../../apps/emqx_connector"}}
|
||||
, {emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
]}.
|
||||
{deps, [
|
||||
{jamdb_oracle, {git, "https://github.com/emqx/jamdb_oracle", {tag, "0.4.9.5"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
]}.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{epgsql, {git, "https://github.com/emqx/epgsql", {tag, "4.7.1.1"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
{epgsql, {git, "https://github.com/emqx/epgsql", {tag, "4.7.1.1"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
]}.
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
%% NOTE: mind ecpool version when updating eredis_cluster version
|
||||
{eredis_cluster, {git, "https://github.com/emqx/eredis_cluster", {tag, "0.8.3"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
%% NOTE: mind ecpool version when updating eredis_cluster version
|
||||
{eredis_cluster, {git, "https://github.com/emqx/eredis_cluster", {tag, "0.8.3"}}},
|
||||
{emqx_connector, {path, "../../apps/emqx_connector"}},
|
||||
{emqx_resource, {path, "../../apps/emqx_resource"}}
|
||||
]}.
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
%% -*- mode: erlang; -*-
|
||||
|
||||
{deps, [
|
||||
{emqx, {path, "../../apps/emqx"}},
|
||||
{erlcloud, {git, "https://github.com/emqx/erlcloud", {tag, "3.7.0.3"}}},
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, [
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
{emqx_rule_engine, {path, "../emqx_rule_engine"}},
|
||||
{erlavro, {git, "https://github.com/klarna/erlavro.git", {tag, "2.9.8"}}},
|
||||
{gpb, "4.19.9"}
|
||||
{emqx, {path, "../emqx"}},
|
||||
{emqx_utils, {path, "../emqx_utils"}},
|
||||
{emqx_rule_engine, {path, "../emqx_rule_engine"}},
|
||||
{erlavro, {git, "https://github.com/klarna/erlavro.git", {tag, "2.9.8"}}},
|
||||
{gpb, "4.19.9"}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
% {config, "config/sys.config"},
|
||||
% {config, "config/sys.config"},
|
||||
{apps, [emqx_schema_registry]}
|
||||
]}.
|
||||
|
|
145
bin/nodetool
145
bin/nodetool
|
@ -12,7 +12,8 @@
|
|||
|
||||
main(Args) ->
|
||||
case os:type() of
|
||||
{win32, nt} -> ok;
|
||||
{win32, nt} ->
|
||||
ok;
|
||||
_nix ->
|
||||
case init:get_argument(start_epmd) of
|
||||
{ok, [["true"]]} ->
|
||||
|
@ -44,22 +45,31 @@ do(Args) ->
|
|||
ok = do_with_halt(Args, "mnesia_dir", fun create_mnesia_dir/2),
|
||||
ok = do_with_halt(Args, "chkconfig", fun("-config", X) -> chkconfig(X) end),
|
||||
ok = do_with_halt(Args, "chkconfig", fun chkconfig/1),
|
||||
Args1 = do_with_ret(Args, "-name",
|
||||
fun(TargetName) ->
|
||||
ThisNode = this_node_name(longnames, TargetName),
|
||||
{ok, _} = net_kernel:start([ThisNode, longnames]),
|
||||
put(target_node, nodename(TargetName))
|
||||
end),
|
||||
Args2 = do_with_ret(Args1, "-sname",
|
||||
fun(TargetName) ->
|
||||
ThisNode = this_node_name(shortnames, TargetName),
|
||||
{ok, _} = net_kernel:start([ThisNode, shortnames]),
|
||||
put(target_node, nodename(TargetName))
|
||||
end),
|
||||
RestArgs = do_with_ret(Args2, "-setcookie",
|
||||
fun(Cookie) ->
|
||||
erlang:set_cookie(node(), list_to_atom(Cookie))
|
||||
end),
|
||||
Args1 = do_with_ret(
|
||||
Args,
|
||||
"-name",
|
||||
fun(TargetName) ->
|
||||
ThisNode = this_node_name(longnames, TargetName),
|
||||
{ok, _} = net_kernel:start([ThisNode, longnames]),
|
||||
put(target_node, nodename(TargetName))
|
||||
end
|
||||
),
|
||||
Args2 = do_with_ret(
|
||||
Args1,
|
||||
"-sname",
|
||||
fun(TargetName) ->
|
||||
ThisNode = this_node_name(shortnames, TargetName),
|
||||
{ok, _} = net_kernel:start([ThisNode, shortnames]),
|
||||
put(target_node, nodename(TargetName))
|
||||
end
|
||||
),
|
||||
RestArgs = do_with_ret(
|
||||
Args2,
|
||||
"-setcookie",
|
||||
fun(Cookie) ->
|
||||
erlang:set_cookie(node(), list_to_atom(Cookie))
|
||||
end
|
||||
),
|
||||
|
||||
[application:start(App) || App <- [crypto, public_key, ssl]],
|
||||
TargetNode = get(target_node),
|
||||
|
@ -95,9 +105,11 @@ do(Args) ->
|
|||
ok ->
|
||||
ok;
|
||||
{badrpc, timeout} ->
|
||||
io:format("EMQX is still shutting down, it failed to stop gracefully "
|
||||
"within the configured timeout of: ~ps\n",
|
||||
[erlang:convert_time_unit(?SHUTDOWN_TIMEOUT_MS, millisecond, second)]),
|
||||
io:format(
|
||||
"EMQX is still shutting down, it failed to stop gracefully "
|
||||
"within the configured timeout of: ~ps\n",
|
||||
[erlang:convert_time_unit(?SHUTDOWN_TIMEOUT_MS, millisecond, second)]
|
||||
),
|
||||
halt(1);
|
||||
{badrpc, nodedown} ->
|
||||
%% nodetool commands are always executed after a ping
|
||||
|
@ -106,8 +118,15 @@ do(Args) ->
|
|||
ok
|
||||
end;
|
||||
["rpc", Module, Function | RpcArgs] ->
|
||||
case rpc:call(TargetNode, list_to_atom(Module), list_to_atom(Function),
|
||||
[RpcArgs], 60000) of
|
||||
case
|
||||
rpc:call(
|
||||
TargetNode,
|
||||
list_to_atom(Module),
|
||||
list_to_atom(Function),
|
||||
[RpcArgs],
|
||||
60000
|
||||
)
|
||||
of
|
||||
ok ->
|
||||
ok;
|
||||
{error, cmd_not_found} ->
|
||||
|
@ -122,7 +141,11 @@ do(Args) ->
|
|||
halt(1)
|
||||
end;
|
||||
["rpc_infinity", Module, Function | RpcArgs] ->
|
||||
case rpc:call(TargetNode, list_to_atom(Module), list_to_atom(Function), [RpcArgs], infinity) of
|
||||
case
|
||||
rpc:call(
|
||||
TargetNode, list_to_atom(Module), list_to_atom(Function), [RpcArgs], infinity
|
||||
)
|
||||
of
|
||||
ok ->
|
||||
ok;
|
||||
{badrpc, Reason} ->
|
||||
|
@ -132,8 +155,15 @@ do(Args) ->
|
|||
halt(1)
|
||||
end;
|
||||
["rpcterms", Module, Function | ArgsAsString] ->
|
||||
case rpc:call(TargetNode, list_to_atom(Module), list_to_atom(Function),
|
||||
consult(lists:flatten(ArgsAsString)), 60000) of
|
||||
case
|
||||
rpc:call(
|
||||
TargetNode,
|
||||
list_to_atom(Module),
|
||||
list_to_atom(Function),
|
||||
consult(lists:flatten(ArgsAsString)),
|
||||
60000
|
||||
)
|
||||
of
|
||||
{badrpc, Reason} ->
|
||||
io:format("RPC to ~p failed: ~p\n", [TargetNode, Reason]),
|
||||
halt(1);
|
||||
|
@ -153,7 +183,9 @@ do(Args) ->
|
|||
end;
|
||||
Other ->
|
||||
io:format("Other: ~p~n", [Other]),
|
||||
io:format("Usage: nodetool chkconfig|getpid|ping|stop|rpc|rpc_infinity|rpcterms|eval|cold_eval [Terms] [RPC]\n")
|
||||
io:format(
|
||||
"Usage: nodetool chkconfig|getpid|ping|stop|rpc|rpc_infinity|rpcterms|eval|cold_eval [Terms] [RPC]\n"
|
||||
)
|
||||
end,
|
||||
net_kernel:stop().
|
||||
|
||||
|
@ -173,22 +205,22 @@ parse_eval_args(Args) ->
|
|||
% shells may process args into more than one, and end up stripping
|
||||
% spaces, so this converts all of that to a single string to parse
|
||||
String = binary_to_list(
|
||||
list_to_binary(
|
||||
join(Args," ")
|
||||
)
|
||||
),
|
||||
list_to_binary(
|
||||
join(Args, " ")
|
||||
)
|
||||
),
|
||||
|
||||
% then just as a convenience to users, if they forgot a trailing
|
||||
% '.' add it for them.
|
||||
Normalized =
|
||||
case lists:reverse(String) of
|
||||
[$. | _] -> String;
|
||||
R -> lists:reverse([$. | R])
|
||||
[$. | _] -> String;
|
||||
R -> lists:reverse([$. | R])
|
||||
end,
|
||||
|
||||
% then scan and parse the string
|
||||
{ok, Scanned, _} = erl_scan:string(Normalized),
|
||||
{ok, Parsed } = erl_parse:parse_exprs(Scanned),
|
||||
{ok, Parsed} = erl_parse:parse_exprs(Scanned),
|
||||
Parsed.
|
||||
|
||||
do_with_ret(Args, Name, Handler) ->
|
||||
|
@ -207,7 +239,8 @@ do_with_halt(Args, Name, Handler) ->
|
|||
false ->
|
||||
ok;
|
||||
{Args1, _Rest} ->
|
||||
erlang:apply(Handler, Args1), %% should halt
|
||||
%% should halt
|
||||
erlang:apply(Handler, Args1),
|
||||
io:format(standard_error, "~s handler did not halt", [Name]),
|
||||
halt(?LINE)
|
||||
end.
|
||||
|
@ -218,7 +251,9 @@ take_args(Args, OptName, 0) ->
|
|||
take_args(Args, OptName, OptArity) ->
|
||||
take_args(Args, OptName, OptArity, _Scanned = []).
|
||||
|
||||
take_args([], _, _, _) -> false; %% no such option
|
||||
%% no such option
|
||||
take_args([], _, _, _) ->
|
||||
false;
|
||||
take_args([Name | Rest], Name, Arity, Scanned) ->
|
||||
length(Rest) >= Arity orelse error({not_enough_args_for, Name}),
|
||||
{Result, Tail} = lists:split(Arity, Rest),
|
||||
|
@ -282,16 +317,24 @@ chkconfig(File) ->
|
|||
{error, Problems} ->
|
||||
lists:foreach(fun print_issue/1, Problems),
|
||||
%% halt(1) if any problems were errors
|
||||
halt(case [x || {error, _} <- Problems] of
|
||||
[] -> 0;
|
||||
_ -> 1
|
||||
end)
|
||||
halt(
|
||||
case [x || {error, _} <- Problems] of
|
||||
[] -> 0;
|
||||
_ -> 1
|
||||
end
|
||||
)
|
||||
end;
|
||||
{error, {Line, Mod, Term}} ->
|
||||
io:format(standard_error, ["Error on line ", file:format_error({Line, Mod, Term}), "\n"], []),
|
||||
io:format(
|
||||
standard_error, ["Error on line ", file:format_error({Line, Mod, Term}), "\n"], []
|
||||
),
|
||||
halt(1);
|
||||
{error, Error} ->
|
||||
io:format(standard_error, ["Error reading config file: ", File, " ", file:format_error(Error), "\n"], []),
|
||||
io:format(
|
||||
standard_error,
|
||||
["Error reading config file: ", File, " ", file:format_error(Error), "\n"],
|
||||
[]
|
||||
),
|
||||
halt(1)
|
||||
end.
|
||||
|
||||
|
@ -304,7 +347,8 @@ check_license(Config) ->
|
|||
%% start but will not be able to receive connections due to connection limits.
|
||||
%% It may receive license updates from the cluster further.
|
||||
case emqx_license:read_license(Config) of
|
||||
{ok, _} -> ok;
|
||||
{ok, _} ->
|
||||
ok;
|
||||
{error, Error} ->
|
||||
io:format(standard_error, "Error reading license: ~p~n", [Error]),
|
||||
halt(1)
|
||||
|
@ -315,7 +359,7 @@ check_license(Config) ->
|
|||
%%
|
||||
consult(Str) when is_list(Str) ->
|
||||
consult([], Str, []);
|
||||
consult(Bin) when is_binary(Bin)->
|
||||
consult(Bin) when is_binary(Bin) ->
|
||||
consult([], binary_to_list(Bin), []).
|
||||
|
||||
consult(Cont, Str, Acc) ->
|
||||
|
@ -349,7 +393,7 @@ validate([Terms]) ->
|
|||
|
||||
%% Some initial and basic checks for the app.config file
|
||||
get_validation_funs() ->
|
||||
[ ].
|
||||
[].
|
||||
|
||||
print_issue({warning, Warning}) ->
|
||||
io:format(standard_error, "Warning in app.config: ~s~n", [Warning]);
|
||||
|
@ -363,7 +407,7 @@ print_issue({error, Error}) ->
|
|||
%% for most unicode use cases anyway.
|
||||
join([], Sep) when is_list(Sep) ->
|
||||
[];
|
||||
join([H|T], Sep) ->
|
||||
join([H | T], Sep) ->
|
||||
H ++ lists:append([Sep ++ X || X <- T]).
|
||||
|
||||
add_libs_dir() ->
|
||||
|
@ -375,9 +419,11 @@ add_libs_dir() ->
|
|||
Release = lists:keyfind(CurrentVsn, 3, Releases),
|
||||
{release, _Name, _AppVsn, _ErtsVsn, Libs, _State} = Release,
|
||||
lists:foreach(
|
||||
fun({Name, Vsn, _}) ->
|
||||
add_lib_dir(RootDir, Name, Vsn)
|
||||
end, Libs);
|
||||
fun({Name, Vsn, _}) ->
|
||||
add_lib_dir(RootDir, Name, Vsn)
|
||||
end,
|
||||
Libs
|
||||
);
|
||||
{error, Reason} ->
|
||||
%% rel file was been deleted by release handler
|
||||
error({failed_to_read_RELEASES_file, RelFile, Reason})
|
||||
|
@ -405,7 +451,8 @@ add_lib_dir(RootDir, Name, Vsn) ->
|
|||
%% See `emqx_gateway_schema:fields(gateway)`
|
||||
is_emqx_application(Name) andalso ensure_application_load(Name),
|
||||
ok;
|
||||
{error, _} -> error(LibDir)
|
||||
{error, _} ->
|
||||
error(LibDir)
|
||||
end.
|
||||
|
||||
is_emqx_application(Name) when is_atom(Name) ->
|
||||
|
|
|
@ -11,14 +11,14 @@ This chart bootstraps an emqx deployment on a Kubernetes cluster using the Helm
|
|||
|
||||
To install the chart with the release name `my-emqx`:
|
||||
|
||||
+ From github
|
||||
+ From Github
|
||||
```
|
||||
$ git clone https://github.com/emqx/emqx.git
|
||||
$ cd emqx/deploy/charts/emqx-enterprise
|
||||
$ helm install my-emqx .
|
||||
```
|
||||
|
||||
+ From chart repos
|
||||
+ From chart Repos
|
||||
```
|
||||
helm repo add emqx https://repos.emqx.io/charts
|
||||
helm install my-emqx emqx/emqx-enterprise
|
||||
|
@ -37,85 +37,85 @@ $ helm del my-emqx
|
|||
|
||||
The following table lists the configurable parameters of the emqx chart and their default values.
|
||||
|
||||
| Parameter | Description | Default Value |
|
||||
| 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.repository` | EMQX Image name | emqx/emqx-enterprise |
|
||||
| `image.pullPolicy` | The image pull policy | IfNotPresent |
|
||||
| `image.pullSecrets ` | The image pull secrets | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `serviceAccount.create` | If `true`, create a new service account | `true` |
|
||||
| `serviceAccount.name` | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the fullname template | |
|
||||
| `serviceAccount.annotations` | Annotations to add to the service account | |
|
||||
| `envFromSecret` | The name pull a secret in the same kubernetes namespace which contains values that will be added to the environment | nil |
|
||||
| `recreatePods` | Forces the recreation of pods during upgrades, which can be useful to always apply the most recent configuration. | false |
|
||||
| `podAnnotations ` | Annotations for pod | `{}` |
|
||||
| `podManagementPolicy` | To redeploy a chart with existing PVC(s), the value must be set to Parallel to avoid deadlock | `Parallel` |
|
||||
| `persistence.enabled` | Enable EMQX persistence using PVC | false |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `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 | {} |
|
||||
| `extraVolumeMounts` | Additional volumeMounts to the default backend container. | [] |
|
||||
| `extraVolumes` | Additional volumes to the default backend pod.| [] |
|
||||
| `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.ws` | Port for WebSocket/HTTP. | 8083 |
|
||||
| `service.wss` | Port for WSS/HTTPS. | 8084 |
|
||||
| `service.dashboard` | Port for dashboard and API. | 18083 |
|
||||
| `service.nodePorts.mqtt` | Kubernetes node port for MQTT. | nil |
|
||||
| `service.nodePorts.mqttssl` | Kubernetes node port for MQTT(SSL). | 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.loadBalancerClass` | The load balancer implementation this Service belongs to | |
|
||||
| `service.loadBalancerIP` | loadBalancerIP for Service | nil |
|
||||
| `service.loadBalancerSourceRanges` | Address(es) that are allowed when service is LoadBalancer | [] |
|
||||
| `service.externalIPs` | ExternalIPs for the service | [] |
|
||||
| `service.externalTrafficPolicy` | External Traffic Policy for the service | `Cluster`
|
||||
| `service.annotations` | Service/ServiceMonitor annotations | {}(evaluated as a template) |
|
||||
| `service.labels` | Service/ServiceMontior labels | {}(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.pathType` | Ingress pathType for EMQX Dashboard | `ImplementationSpecific` |
|
||||
| `ingress.dashboard.hosts` | Ingress hosts for EMQX Dashboard | dashboard.emqx.local |
|
||||
| `ingress.dashboard.tls` | Ingress tls for EMQX Dashboard | [] |
|
||||
| `ingress.dashboard.annotations` | Ingress annotations for EMQX Dashboard | {} |
|
||||
| `ingress.dashboard.ingressClassName` | Set the ingress class for EMQX Dashboard | |
|
||||
| `ingress.mqtt.enabled` | Enable ingress for MQTT | false |
|
||||
| `ingress.mqtt.ingressClassName` | Set the ingress class for MQTT | |
|
||||
| `ingress.mqtt.path` | Ingress path for MQTT | / |
|
||||
| `ingress.mqtt.pathType` | Ingress pathType for MQTT | `ImplementationSpecific` |
|
||||
| `ingress.mqtt.hosts` | Ingress hosts for MQTT | mqtt.emqx.local |
|
||||
| `ingress.mqtt.tls` | Ingress tls for MQTT | [] |
|
||||
| `ingress.mqtt.annotations` | Ingress annotations for MQTT | {} |
|
||||
| `ingress.mqtt.ingressClassName` | Set the ingress class for MQTT | |
|
||||
| `metrics.enable` | If set to true, [prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) needs to be installed, and emqx_prometheus needs to enable | false |
|
||||
| `metrics.type` | Now we only supported "prometheus" | "prometheus" |
|
||||
| `ssl.enabled` | Enable SSL support | false |
|
||||
| `ssl.useExisting` | Use existing certificate or let cert-manager generate one | false |
|
||||
| `ssl.existingName` | Name of existing certificate | emqx-tls |
|
||||
| `ssl.dnsnames` | DNS name(s) for certificate to be generated | {} |
|
||||
| `ssl.commonName` | Common name for or certificate to be generated | |
|
||||
| `ssl.issuer.name` | Issuer name for certificate generation | letsencrypt-dns |
|
||||
| `ssl.issuer.kind` | Issuer kind for certificate generation | ClusterIssuer |
|
||||
| `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.repository` | EMQX Image name | emqx/emqx-enterprise |
|
||||
| `image.pullPolicy` | The image pull policy | IfNotPresent |
|
||||
| `image.pullSecrets ` | The image pull secrets | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `serviceAccount.create` | If `true`, create a new service account | `true` |
|
||||
| `serviceAccount.name` | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the full-name template | |
|
||||
| `serviceAccount.annotations` | Annotations to add to the service account | |
|
||||
| `envFromSecret` | The name pull a secret in the same Kubernetes namespace which contains values that will be added to the environment | nil |
|
||||
| `recreatePods` | Forces the recreation of pods during upgrades, which can be useful to always apply the most recent configuration. | false |
|
||||
| `podAnnotations ` | Annotations for pod | `{}` |
|
||||
| `podManagementPolicy` | To redeploy a chart with existing PVC(s), the value must be set to Parallel to avoid deadlock | `Parallel` |
|
||||
| `persistence.enabled` | Enable EMQX persistence using PVC | false |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `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 | {} |
|
||||
| `extraVolumeMounts` | Additional volumeMounts to the default backend container. | [] |
|
||||
| `extraVolumes` | Additional volumes to the default backend pod. | [] |
|
||||
| `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.ws` | Port for WebSocket/HTTP. | 8083 |
|
||||
| `service.wss` | Port for WSS/HTTPS. | 8084 |
|
||||
| `service.dashboard` | Port for dashboard and API. | 18083 |
|
||||
| `service.nodePorts.mqtt` | Kubernetes node port for MQTT. | nil |
|
||||
| `service.nodePorts.mqttssl` | Kubernetes node port for MQTT(SSL). | 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.loadBalancerClass` | The load balancer implementation this Service belongs to | |
|
||||
| `service.loadBalancerIP` | loadBalancerIP for Service | nil |
|
||||
| `service.loadBalancerSourceRanges` | Address(es) that are allowed when service is LoadBalancer | [] |
|
||||
| `service.externalIPs` | ExternalIPs for the service | [] |
|
||||
| `service.externalTrafficPolicy` | External Traffic Policy for the service | `Cluster` |
|
||||
| `service.annotations` | Service/ServiceMonitor annotations | {}(evaluated as a template) |
|
||||
| `service.labels` | Service/ServiceMonitor labels | {}(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.pathType` | Ingress pathType for EMQX Dashboard | `ImplementationSpecific` |
|
||||
| `ingress.dashboard.hosts` | Ingress hosts for EMQX Dashboard | dashboard.emqx.local |
|
||||
| `ingress.dashboard.tls` | Ingress tls for EMQX Dashboard | [] |
|
||||
| `ingress.dashboard.annotations` | Ingress annotations for EMQX Dashboard | {} |
|
||||
| `ingress.dashboard.ingressClassName` | Set the ingress class for EMQX Dashboard | |
|
||||
| `ingress.mqtt.enabled` | Enable ingress for MQTT | false |
|
||||
| `ingress.mqtt.ingressClassName` | Set the ingress class for MQTT | |
|
||||
| `ingress.mqtt.path` | Ingress path for MQTT | / |
|
||||
| `ingress.mqtt.pathType` | Ingress pathType for MQTT | `ImplementationSpecific` |
|
||||
| `ingress.mqtt.hosts` | Ingress hosts for MQTT | mqtt.emqx.local |
|
||||
| `ingress.mqtt.tls` | Ingress tls for MQTT | [] |
|
||||
| `ingress.mqtt.annotations` | Ingress annotations for MQTT | {} |
|
||||
| `ingress.mqtt.ingressClassName` | Set the ingress class for MQTT | |
|
||||
| `metrics.enable` | If set to true, [prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) needs to be installed, and emqx_prometheus needs to enable | false |
|
||||
| `metrics.type` | Now we only supported "prometheus" | "prometheus" |
|
||||
| `ssl.enabled` | Enable SSL support | false |
|
||||
| `ssl.useExisting` | Use existing certificate or let cert-manager generate one | false |
|
||||
| `ssl.existingName` | Name of existing certificate | emqx-tls |
|
||||
| `ssl.dnsnames` | DNS name(s) for certificate to be generated | {} |
|
||||
| `ssl.commonName` | Common name for or certificate to be generated | |
|
||||
| `ssl.issuer.name` | Issuer name for certificate generation | letsencrypt-dns |
|
||||
| `ssl.issuer.kind` | Issuer kind for certificate generation | ClusterIssuer |
|
||||
|
||||
## EMQX specific settings
|
||||
|
||||
The following table lists the configurable [EMQX](https://www.emqx.io/)-specific parameters of the chart and their
|
||||
default values.
|
||||
Parameter | Description | Default Value
|
||||
--- | --- | ---
|
||||
`emqxConfig` | Map of [configuration](https://www.emqx.io/docs/en/v5.0/admin/cfg.html) items
|
||||
expressed as [environment variables](https://www.emqx.io/docs/en/v5.0/admin/cfg.html#environment-variables) (prefix `EMQX_` can be omitted) or using the configuration
|
||||
files [namespaced dotted notation](https://www.emqx.io/docs/en/v5.0/admin/cfg.html#syntax) | `nil`
|
||||
`emqxLicenseSecretName` | Name of the secret that holds the license information | `nil`
|
||||
| Parameter | Description | Default Value |
|
||||
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|---------------|
|
||||
| `emqxConfig` | Map of [configuration](https://www.emqx.io/docs/en/v5.0/admin/cfg.html) items | |
|
||||
| expressed as [environment variables](https://www.emqx.io/docs/en/v5.0/admin/cfg.html#environment-variables) (prefix `EMQX_` can be omitted) or using the configuration | | |
|
||||
| files [namespaced dotted notation](https://www.emqx.io/docs/en/v5.0/admin/cfg.html#syntax) | `nil` | |
|
||||
| `emqxLicenseSecretName` | Name of the secret that holds the license information | `nil` |
|
||||
|
||||
## SSL settings
|
||||
`cert-manager` generates secrets with certificate data using the keys `tls.crt` and `tls.key`. The helm chart always mounts those keys as files to `/tmp/ssl/`
|
||||
|
@ -136,9 +136,8 @@ In order to preserve the original client's IP address, you could change the emqx
|
|||
EMQX_LISTENERS__TCP__DEFAULT__PROXY_PROTOCOL: "true"
|
||||
```
|
||||
|
||||
With haproxy you'd also need the following ingress annotation:
|
||||
With HAProxy you'd also need the following ingress annotation:
|
||||
|
||||
```
|
||||
haproxy-ingress.github.io/proxy-protocol: "v2"
|
||||
```
|
||||
|
||||
|
|
|
@ -110,14 +110,14 @@ spec:
|
|||
- name: wss
|
||||
containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__WSS__DEFAULT__BIND | default 8084 }}
|
||||
- name: dashboard
|
||||
containerPort: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTP__BIND | default 18083 }}
|
||||
containerPort: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENERS__HTTP__BIND | default 18083 }}
|
||||
{{- if not (empty .Values.emqxConfig.EMQX_LISTENERS__TCP__INTERNAL__BIND) }}
|
||||
- name: internalmqtt
|
||||
containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__TCP__INTERNAL__BIND }}
|
||||
{{- end }}
|
||||
{{- if not (empty .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTPS__BIND) }}
|
||||
{{- if not (empty .Values.emqxConfig.EMQX_DASHBOARD__LISTENERS__HTTPS__BIND) }}
|
||||
- name: dashboardtls
|
||||
containerPort: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTPS__BIND }}
|
||||
containerPort: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENERS__HTTPS__BIND }}
|
||||
{{- end }}
|
||||
- name: ekka
|
||||
containerPort: 4370
|
||||
|
@ -152,14 +152,14 @@ spec:
|
|||
readinessProbe:
|
||||
httpGet:
|
||||
path: /status
|
||||
port: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTP__BIND | default 18083 }}
|
||||
port: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENERS__HTTP__BIND | default 18083 }}
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 5
|
||||
failureThreshold: 30
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /status
|
||||
port: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTP__BIND | default 18083 }}
|
||||
port: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENERS__HTTP__BIND | default 18083 }}
|
||||
initialDelaySeconds: 60
|
||||
periodSeconds: 30
|
||||
failureThreshold: 10
|
||||
|
|
|
@ -11,14 +11,14 @@ This chart bootstraps an emqx deployment on a Kubernetes cluster using the Helm
|
|||
|
||||
To install the chart with the release name `my-emqx`:
|
||||
|
||||
+ From github
|
||||
+ From Github
|
||||
```
|
||||
$ git clone https://github.com/emqx/emqx.git
|
||||
$ cd emqx/deploy/charts/emqx
|
||||
$ helm install my-emqx .
|
||||
```
|
||||
|
||||
+ From chart repos
|
||||
+ From chart Repos
|
||||
```
|
||||
helm repo add emqx https://repos.emqx.io/charts
|
||||
helm install my-emqx emqx/emqx
|
||||
|
@ -37,86 +37,86 @@ $ helm del my-emqx
|
|||
|
||||
The following table lists the configurable parameters of the emqx chart and their default values.
|
||||
|
||||
| Parameter | Description | Default Value |
|
||||
| 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.repository` | EMQX Image name | emqx/emqx |
|
||||
| `image.pullPolicy` | The image pull policy | IfNotPresent |
|
||||
| `image.pullSecrets ` | The image pull secrets | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `serviceAccount.create` | If `true`, create a new service account | `true` |
|
||||
| `serviceAccount.name` | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the fullname template | |
|
||||
| `serviceAccount.annotations` | Annotations to add to the service account | |
|
||||
| `envFromSecret` | The name pull a secret in the same kubernetes namespace which contains values that will be added to the environment | nil |
|
||||
| `recreatePods` | Forces the recreation of pods during upgrades, which can be useful to always apply the most recent configuration. | false |
|
||||
| `podAnnotations ` | Annotations for pod | `{}` |
|
||||
| `podManagementPolicy` | To redeploy a chart with existing PVC(s), the value must be set to Parallel to avoid deadlock | `Parallel` |
|
||||
| `persistence.enabled` | Enable EMQX persistence using PVC | false |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `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 | {} |
|
||||
| `extraVolumeMounts` | Additional volumeMounts to the default backend container. | [] |
|
||||
| `extraVolumes` | Additional volumes to the default backend pod.| [] |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `tolerations` | Toleration labels for pod assignment | `[]` |
|
||||
| `affinity` | Map of node/pod affinities | `{}` |
|
||||
| `topologySpreadConstraints` | List of topology spread constraints without labelSelector | `[]` |
|
||||
| `service.type` | Kubernetes Service type. | ClusterIP |
|
||||
| `service.mqtt` | Port for MQTT. | 1883 |
|
||||
| `service.mqttssl` | Port for MQTT(SSL). | 8883 |
|
||||
| `service.ws` | Port for WebSocket/HTTP. | 8083 |
|
||||
| `service.wss` | Port for WSS/HTTPS. | 8084 |
|
||||
| `service.dashboard` | Port for dashboard and API. | 18083 |
|
||||
| `service.nodePorts.mqtt` | Kubernetes node port for MQTT. | nil |
|
||||
| `service.nodePorts.mqttssl` | Kubernetes node port for MQTT(SSL). | 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.loadBalancerClass` | The load balancer implementation this Service belongs to | |
|
||||
| `service.loadBalancerIP` | loadBalancerIP for Service | nil |
|
||||
| `service.loadBalancerSourceRanges` | Address(es) that are allowed when service is LoadBalancer | [] |
|
||||
| `service.externalIPs` | ExternalIPs for the service | [] |
|
||||
| `service.externalTrafficPolicy` | External Traffic Policy for the service | `Cluster`
|
||||
| `service.annotations` | Service/ServiceMonitor annotations | {}(evaluated as a template) |
|
||||
| `service.labels` | Service/ServiceMontior labels | {}(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.pathType` | Ingress pathType for EMQX Dashboard | `ImplementationSpecific` |
|
||||
| `ingress.dashboard.hosts` | Ingress hosts for EMQX Dashboard | dashboard.emqx.local |
|
||||
| `ingress.dashboard.tls` | Ingress tls for EMQX Dashboard | [] |
|
||||
| `ingress.dashboard.annotations` | Ingress annotations for EMQX Dashboard | {} |
|
||||
| `ingress.dashboard.ingressClassName` | Set the ingress class for EMQX Dashboard | |
|
||||
| `ingress.mqtt.enabled` | Enable ingress for MQTT | false |
|
||||
| `ingress.mqtt.ingressClassName` | Set the ingress class for MQTT | |
|
||||
| `ingress.mqtt.path` | Ingress path for MQTT | / |
|
||||
| `ingress.mqtt.pathType` | Ingress pathType for MQTT | `ImplementationSpecific` |
|
||||
| `ingress.mqtt.hosts` | Ingress hosts for MQTT | mqtt.emqx.local |
|
||||
| `ingress.mqtt.tls` | Ingress tls for MQTT | [] |
|
||||
| `ingress.mqtt.annotations` | Ingress annotations for MQTT | {} |
|
||||
| `ingress.mqtt.ingressClassName` | Set the ingress class for MQTT | |
|
||||
| `metrics.enable` | If set to true, [prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) needs to be installed, and emqx_prometheus needs to enable | false |
|
||||
| `metrics.type` | Now we only supported "prometheus" | "prometheus" |
|
||||
| `ssl.enabled` | Enable SSL support | false |
|
||||
| `ssl.useExisting` | Use existing certificate or let cert-manager generate one | false |
|
||||
| `ssl.existingName` | Name of existing certificate | emqx-tls |
|
||||
| `ssl.commonName` | Common name for or certificate to be generated | |
|
||||
| `ssl.dnsnames` | DNS name(s) for certificate to be generated | {} |
|
||||
| `ssl.issuer.name` | Issuer name for certificate generation | letsencrypt-dns |
|
||||
| `ssl.issuer.kind` | Issuer kind for certificate generation | ClusterIssuer |
|
||||
| `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.repository` | EMQX Image name | emqx/emqx |
|
||||
| `image.pullPolicy` | The image pull policy | IfNotPresent |
|
||||
| `image.pullSecrets ` | The image pull secrets | `[]` (does not add image pull secrets to deployed pods) |
|
||||
| `serviceAccount.create` | If `true`, create a new service account | `true` |
|
||||
| `serviceAccount.name` | Service account to be used. If not set and `serviceAccount.create` is `true`, a name is generated using the full-name template | |
|
||||
| `serviceAccount.annotations` | Annotations to add to the service account | |
|
||||
| `envFromSecret` | The name pull a secret in the same Kubernetes namespace which contains values that will be added to the environment | nil |
|
||||
| `recreatePods` | Forces the recreation of pods during upgrades, which can be useful to always apply the most recent configuration. | false |
|
||||
| `podAnnotations ` | Annotations for pod | `{}` |
|
||||
| `podManagementPolicy` | To redeploy a chart with existing PVC(s), the value must be set to Parallel to avoid deadlock | `Parallel` |
|
||||
| `persistence.enabled` | Enable EMQX persistence using PVC | false |
|
||||
| `persistence.storageClass` | Storage class of backing PVC | `nil` (uses alpha storage class annotation) |
|
||||
| `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 | {} |
|
||||
| `extraVolumeMounts` | Additional volumeMounts to the default backend container. | [] |
|
||||
| `extraVolumes` | Additional volumes to the default backend pod. | [] |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `tolerations` | Toleration labels for pod assignment | `[]` |
|
||||
| `affinity` | Map of node/pod affinities | `{}` |
|
||||
| `topologySpreadConstraints` | List of topology spread constraints without labelSelector | `[]` |
|
||||
| `service.type` | Kubernetes Service type. | ClusterIP |
|
||||
| `service.mqtt` | Port for MQTT. | 1883 |
|
||||
| `service.mqttssl` | Port for MQTT(SSL). | 8883 |
|
||||
| `service.ws` | Port for WebSocket/HTTP. | 8083 |
|
||||
| `service.wss` | Port for WSS/HTTPS. | 8084 |
|
||||
| `service.dashboard` | Port for dashboard and API. | 18083 |
|
||||
| `service.nodePorts.mqtt` | Kubernetes node port for MQTT. | nil |
|
||||
| `service.nodePorts.mqttssl` | Kubernetes node port for MQTT(SSL). | 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.loadBalancerClass` | The load balancer implementation this Service belongs to | |
|
||||
| `service.loadBalancerIP` | loadBalancerIP for Service | nil |
|
||||
| `service.loadBalancerSourceRanges` | Address(es) that are allowed when service is LoadBalancer | [] |
|
||||
| `service.externalIPs` | ExternalIPs for the service | [] |
|
||||
| `service.externalTrafficPolicy` | External Traffic Policy for the service | `Cluster` |
|
||||
| `service.annotations` | Service/ServiceMonitor annotations | {}(evaluated as a template) |
|
||||
| `service.labels` | Service/ServiceMonitor labels | {}(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.pathType` | Ingress pathType for EMQX Dashboard | `ImplementationSpecific` |
|
||||
| `ingress.dashboard.hosts` | Ingress hosts for EMQX Dashboard | dashboard.emqx.local |
|
||||
| `ingress.dashboard.tls` | Ingress tls for EMQX Dashboard | [] |
|
||||
| `ingress.dashboard.annotations` | Ingress annotations for EMQX Dashboard | {} |
|
||||
| `ingress.dashboard.ingressClassName` | Set the ingress class for EMQX Dashboard | |
|
||||
| `ingress.mqtt.enabled` | Enable ingress for MQTT | false |
|
||||
| `ingress.mqtt.ingressClassName` | Set the ingress class for MQTT | |
|
||||
| `ingress.mqtt.path` | Ingress path for MQTT | / |
|
||||
| `ingress.mqtt.pathType` | Ingress pathType for MQTT | `ImplementationSpecific` |
|
||||
| `ingress.mqtt.hosts` | Ingress hosts for MQTT | mqtt.emqx.local |
|
||||
| `ingress.mqtt.tls` | Ingress tls for MQTT | [] |
|
||||
| `ingress.mqtt.annotations` | Ingress annotations for MQTT | {} |
|
||||
| `ingress.mqtt.ingressClassName` | Set the ingress class for MQTT | |
|
||||
| `metrics.enable` | If set to true, [prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) needs to be installed, and emqx_prometheus needs to enable | false |
|
||||
| `metrics.type` | Now we only supported "prometheus" | "prometheus" |
|
||||
| `ssl.enabled` | Enable SSL support | false |
|
||||
| `ssl.useExisting` | Use existing certificate or let cert-manager generate one | false |
|
||||
| `ssl.existingName` | Name of existing certificate | emqx-tls |
|
||||
| `ssl.commonName` | Common name for or certificate to be generated | |
|
||||
| `ssl.dnsnames` | DNS name(s) for certificate to be generated | {} |
|
||||
| `ssl.issuer.name` | Issuer name for certificate generation | letsencrypt-dns |
|
||||
| `ssl.issuer.kind` | Issuer kind for certificate generation | ClusterIssuer |
|
||||
|
||||
## EMQX specific settings
|
||||
|
||||
The following table lists the configurable [EMQX](https://www.emqx.io/)-specific parameters of the chart and their
|
||||
default values.
|
||||
Parameter | Description | Default Value
|
||||
--- | --- | ---
|
||||
`emqxConfig` | Map of [configuration](https://www.emqx.io/docs/en/v5.0/admin/cfg.html) items
|
||||
expressed as [environment variables](https://www.emqx.io/docs/en/v5.0/admin/cfg.html#environment-variables) (prefix `EMQX_` can be omitted) or using the configuration
|
||||
files [namespaced dotted notation](https://www.emqx.io/docs/en/v5.0/admin/cfg.html#syntax) | `nil`
|
||||
`emqxLicenseSecretName` | Name of the secret that holds the license information | `nil`
|
||||
| Parameter | Description | Default Value |
|
||||
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|---------------|
|
||||
| `emqxConfig` | Map of [configuration](https://www.emqx.io/docs/en/v5.0/admin/cfg.html) items | |
|
||||
| expressed as [environment variables](https://www.emqx.io/docs/en/v5.0/admin/cfg.html#environment-variables) (prefix `EMQX_` can be omitted) or using the configuration | | |
|
||||
| files [namespaced dotted notation](https://www.emqx.io/docs/en/v5.0/admin/cfg.html#syntax) | `nil` | |
|
||||
| `emqxLicenseSecretName` | Name of the secret that holds the license information | `nil` |
|
||||
|
||||
## SSL settings
|
||||
`cert-manager` generates secrets with certificate data using the keys `tls.crt` and `tls.key`. The helm chart always mounts those keys as files to `/tmp/ssl/`
|
||||
|
@ -137,9 +137,8 @@ In order to preserve the original client's IP address, you could change the emqx
|
|||
EMQX_LISTENERS__TCP__DEFAULT__PROXY_PROTOCOL: "true"
|
||||
```
|
||||
|
||||
With haproxy you'd also need the following ingress annotation:
|
||||
With HAProxy you'd also need the following ingress annotation:
|
||||
|
||||
```
|
||||
haproxy-ingress.github.io/proxy-protocol: "v2"
|
||||
```
|
||||
|
||||
|
|
|
@ -37,3 +37,5 @@ a4feb3e6e95c18cb531416112e57520c5ba00d40
|
|||
02c3f87b316e8370287d5cd46de4f103ffe48433
|
||||
# erlfmt all remaining escripts
|
||||
72eb34658d31fb38130421949cff262efab51139
|
||||
# erlfmt rebar.config files and bin/nodetool
|
||||
5e100f52b8a530f4a952a4b20125ec37b38e2906
|
||||
|
|
193
rebar.config
193
rebar.config
|
@ -7,119 +7,132 @@
|
|||
%% with rebar.config.erl module. Final result is written to
|
||||
%% rebar.config.rendered if environment DEBUG is set.
|
||||
|
||||
{edoc_opts, [{preprocess,true}]}.
|
||||
{erl_opts, [warn_unused_vars,warn_shadow_vars,warn_unused_import,
|
||||
warn_obsolete_guard,compressed, nowarn_unused_import,
|
||||
{d, snk_kind, msg}
|
||||
]}.
|
||||
{edoc_opts, [{preprocess, true}]}.
|
||||
{erl_opts, [
|
||||
warn_unused_vars,
|
||||
warn_shadow_vars,
|
||||
warn_unused_import,
|
||||
warn_obsolete_guard,
|
||||
compressed,
|
||||
nowarn_unused_import,
|
||||
{d, snk_kind, msg}
|
||||
]}.
|
||||
|
||||
{xref_checks,[undefined_function_calls,undefined_functions,locals_not_used,
|
||||
deprecated_function_calls,warnings_as_errors,deprecated_functions]}.
|
||||
{xref_checks, [
|
||||
undefined_function_calls,
|
||||
undefined_functions,
|
||||
locals_not_used,
|
||||
deprecated_function_calls,
|
||||
warnings_as_errors,
|
||||
deprecated_functions
|
||||
]}.
|
||||
|
||||
%% Check the forbidden mnesia calls:
|
||||
{xref_queries,
|
||||
[ {"E || \"mnesia\":\"dirty_delete.*\"/\".*\" : Fun", []}
|
||||
, {"E || \"mnesia\":\"transaction\"/\".*\" : Fun", []}
|
||||
, {"E || \"mnesia\":\"async_dirty\"/\".*\" : Fun", []}
|
||||
, {"E || \"mnesia\":\"clear_table\"/\".*\" : Fun", []}
|
||||
, {"E || \"mnesia\":\"create_table\"/\".*\" : Fun", []}
|
||||
, {"E || \"mnesia\":\"delete_table\"/\".*\" : Fun", []}
|
||||
]}.
|
||||
{xref_queries, [
|
||||
{"E || \"mnesia\":\"dirty_delete.*\"/\".*\" : Fun", []},
|
||||
{"E || \"mnesia\":\"transaction\"/\".*\" : Fun", []},
|
||||
{"E || \"mnesia\":\"async_dirty\"/\".*\" : Fun", []},
|
||||
{"E || \"mnesia\":\"clear_table\"/\".*\" : Fun", []},
|
||||
{"E || \"mnesia\":\"create_table\"/\".*\" : Fun", []},
|
||||
{"E || \"mnesia\":\"delete_table\"/\".*\" : Fun", []}
|
||||
]}.
|
||||
|
||||
{dialyzer, [
|
||||
{warnings, [unmatched_returns, error_handling]},
|
||||
{exclude_mods, [emqx_exproto_v_1_connection_unary_handler_bhvr,
|
||||
emqx_exproto_v_1_connection_handler_client,
|
||||
emqx_exproto_v_1_connection_handler_bhvr,
|
||||
emqx_exproto_v_1_connection_adapter_client,
|
||||
emqx_exproto_v_1_connection_adapter_bhvr,
|
||||
emqx_exproto_v_1_connection_unary_handler_client,
|
||||
emqx_exhook_v_2_hook_provider_client,
|
||||
emqx_exhook_v_2_hook_provider_bhvr
|
||||
]},
|
||||
{exclude_mods, [
|
||||
emqx_exproto_v_1_connection_unary_handler_bhvr,
|
||||
emqx_exproto_v_1_connection_handler_client,
|
||||
emqx_exproto_v_1_connection_handler_bhvr,
|
||||
emqx_exproto_v_1_connection_adapter_client,
|
||||
emqx_exproto_v_1_connection_adapter_bhvr,
|
||||
emqx_exproto_v_1_connection_unary_handler_client,
|
||||
emqx_exhook_v_2_hook_provider_client,
|
||||
emqx_exhook_v_2_hook_provider_bhvr
|
||||
]},
|
||||
{plt_location, "."},
|
||||
{plt_prefix, "emqx_dialyzer"},
|
||||
{plt_apps, all_apps},
|
||||
{statistics, true}
|
||||
]
|
||||
}.
|
||||
]}.
|
||||
|
||||
{cover_opts, [verbose]}.
|
||||
{cover_export_enabled, true}.
|
||||
{cover_excl_mods,
|
||||
[ %% generated protobuf modules
|
||||
emqx_exproto_pb,
|
||||
emqx_exhook_pb,
|
||||
%% taken almost as-is from OTP
|
||||
emqx_ssl_crl_cache
|
||||
]}.
|
||||
%% generated protobuf modules
|
||||
[
|
||||
emqx_exproto_pb,
|
||||
emqx_exhook_pb,
|
||||
%% taken almost as-is from OTP
|
||||
emqx_ssl_crl_cache
|
||||
]}.
|
||||
|
||||
%{provider_hooks, [{pre, [{release, {relup_helper, gen_appups}}]}]}.
|
||||
|
||||
{post_hooks,[]}.
|
||||
{post_hooks, []}.
|
||||
|
||||
{deps,
|
||||
[ {lc, {git, "https://github.com/emqx/lc.git", {tag, "0.3.2"}}}
|
||||
, {redbug, {git, "https://github.com/emqx/redbug", {tag, "2.0.10"}}}
|
||||
, {covertool, {git, "https://github.com/zmstone/covertool", {tag, "2.0.4.1"}}}
|
||||
, {gpb, "4.19.9"}
|
||||
, {typerefl, {git, "https://github.com/ieQu1/typerefl", {tag, "0.9.1"}}}
|
||||
, {gun, {git, "https://github.com/emqx/gun", {tag, "1.3.10"}}}
|
||||
, {ehttpc, {git, "https://github.com/emqx/ehttpc", {tag, "0.4.12"}}}
|
||||
, {gproc, {git, "https://github.com/emqx/gproc", {tag, "0.9.0.1"}}}
|
||||
, {jiffy, {git, "https://github.com/emqx/jiffy", {tag, "1.0.6"}}}
|
||||
, {cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.9.2"}}}
|
||||
, {esockd, {git, "https://github.com/emqx/esockd", {tag, "5.11.1"}}}
|
||||
, {rocksdb, {git, "https://github.com/emqx/erlang-rocksdb", {tag, "1.8.0-emqx-2"}}}
|
||||
, {ekka, {git, "https://github.com/emqx/ekka", {tag, "0.17.0"}}}
|
||||
, {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "3.3.1"}}}
|
||||
, {grpc, {git, "https://github.com/emqx/grpc-erl", {tag, "0.6.12"}}}
|
||||
, {minirest, {git, "https://github.com/emqx/minirest", {tag, "1.3.15"}}}
|
||||
, {ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.7"}}}
|
||||
, {replayq, {git, "https://github.com/emqx/replayq.git", {tag, "0.3.7"}}}
|
||||
, {pbkdf2, {git, "https://github.com/emqx/erlang-pbkdf2.git", {tag, "2.0.4"}}}
|
||||
, {emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.10.1"}}}
|
||||
, {rulesql, {git, "https://github.com/emqx/rulesql", {tag, "0.1.7"}}}
|
||||
, {observer_cli, "1.7.1"} % NOTE: depends on recon 2.5.x
|
||||
, {system_monitor, {git, "https://github.com/ieQu1/system_monitor", {tag, "3.0.3"}}}
|
||||
, {getopt, "1.0.2"}
|
||||
, {snabbkaffe, {git, "https://github.com/kafka4beam/snabbkaffe.git", {tag, "1.0.8"}}}
|
||||
, {hocon, {git, "https://github.com/emqx/hocon.git", {tag, "0.40.3"}}}
|
||||
, {emqx_http_lib, {git, "https://github.com/emqx/emqx_http_lib.git", {tag, "0.5.3"}}}
|
||||
, {esasl, {git, "https://github.com/emqx/esasl", {tag, "0.2.0"}}}
|
||||
, {jose, {git, "https://github.com/potatosalad/erlang-jose", {tag, "1.11.2"}}}
|
||||
, {telemetry, "1.1.0"}
|
||||
, {hackney, {git, "https://github.com/emqx/hackney.git", {tag, "1.18.1-1"}}}
|
||||
{deps, [
|
||||
{lc, {git, "https://github.com/emqx/lc.git", {tag, "0.3.2"}}},
|
||||
{redbug, {git, "https://github.com/emqx/redbug", {tag, "2.0.10"}}},
|
||||
{covertool, {git, "https://github.com/zmstone/covertool", {tag, "2.0.4.1"}}},
|
||||
{gpb, "4.19.9"},
|
||||
{typerefl, {git, "https://github.com/ieQu1/typerefl", {tag, "0.9.1"}}},
|
||||
{gun, {git, "https://github.com/emqx/gun", {tag, "1.3.10"}}},
|
||||
{ehttpc, {git, "https://github.com/emqx/ehttpc", {tag, "0.4.12"}}},
|
||||
{gproc, {git, "https://github.com/emqx/gproc", {tag, "0.9.0.1"}}},
|
||||
{jiffy, {git, "https://github.com/emqx/jiffy", {tag, "1.0.6"}}},
|
||||
{cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.9.2"}}},
|
||||
{esockd, {git, "https://github.com/emqx/esockd", {tag, "5.11.1"}}},
|
||||
{rocksdb, {git, "https://github.com/emqx/erlang-rocksdb", {tag, "1.8.0-emqx-2"}}},
|
||||
{ekka, {git, "https://github.com/emqx/ekka", {tag, "0.17.0"}}},
|
||||
{gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "3.3.1"}}},
|
||||
{grpc, {git, "https://github.com/emqx/grpc-erl", {tag, "0.6.12"}}},
|
||||
{minirest, {git, "https://github.com/emqx/minirest", {tag, "1.3.15"}}},
|
||||
{ecpool, {git, "https://github.com/emqx/ecpool", {tag, "0.5.7"}}},
|
||||
{replayq, {git, "https://github.com/emqx/replayq.git", {tag, "0.3.7"}}},
|
||||
{pbkdf2, {git, "https://github.com/emqx/erlang-pbkdf2.git", {tag, "2.0.4"}}},
|
||||
{emqtt, {git, "https://github.com/emqx/emqtt", {tag, "1.10.1"}}},
|
||||
{rulesql, {git, "https://github.com/emqx/rulesql", {tag, "0.1.7"}}},
|
||||
% NOTE: depends on recon 2.5.x
|
||||
{observer_cli, "1.7.1"},
|
||||
{system_monitor, {git, "https://github.com/ieQu1/system_monitor", {tag, "3.0.3"}}},
|
||||
{getopt, "1.0.2"},
|
||||
{snabbkaffe, {git, "https://github.com/kafka4beam/snabbkaffe.git", {tag, "1.0.8"}}},
|
||||
{hocon, {git, "https://github.com/emqx/hocon.git", {tag, "0.40.3"}}},
|
||||
{emqx_http_lib, {git, "https://github.com/emqx/emqx_http_lib.git", {tag, "0.5.3"}}},
|
||||
{esasl, {git, "https://github.com/emqx/esasl", {tag, "0.2.0"}}},
|
||||
{jose, {git, "https://github.com/potatosalad/erlang-jose", {tag, "1.11.2"}}},
|
||||
{telemetry, "1.1.0"},
|
||||
{hackney, {git, "https://github.com/emqx/hackney.git", {tag, "1.18.1-1"}}},
|
||||
%% to keep in sync with mix.exs
|
||||
, {ssl_verify_fun, "1.1.7"}
|
||||
{ssl_verify_fun, "1.1.7"},
|
||||
%% in conflict by erlavro and rocketmq
|
||||
, {jsone, {git, "https://github.com/emqx/jsone.git", {tag, "1.7.1"}}}
|
||||
, {uuid, {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.6"}}}
|
||||
, {ssl_verify_fun, "1.1.7"}
|
||||
, {rfc3339, {git, "https://github.com/emqx/rfc3339.git", {tag, "0.2.3"}}}
|
||||
, {bcrypt, {git, "https://github.com/emqx/erlang-bcrypt.git", {tag, "0.6.1"}}}
|
||||
]}.
|
||||
{jsone, {git, "https://github.com/emqx/jsone.git", {tag, "1.7.1"}}},
|
||||
{uuid, {git, "https://github.com/okeuday/uuid.git", {tag, "v2.0.6"}}},
|
||||
{ssl_verify_fun, "1.1.7"},
|
||||
{rfc3339, {git, "https://github.com/emqx/rfc3339.git", {tag, "0.2.3"}}},
|
||||
{bcrypt, {git, "https://github.com/emqx/erlang-bcrypt.git", {tag, "0.6.1"}}}
|
||||
]}.
|
||||
|
||||
{xref_ignores,
|
||||
[ %% schema registry is for enterprise
|
||||
{emqx_schema_registry,get_all_schemas,0},
|
||||
{emqx_schema_api,format_schema,1},
|
||||
{emqx_schema_api,make_schema_params,1},
|
||||
{emqx_schema_parser,decode,3},
|
||||
{emqx_schema_parser,encode,3},
|
||||
{emqx_schema_registry,add_schema,1},
|
||||
{emqx_audit, log, 2},
|
||||
emqx_exhook_pb, % generated code for protobuf
|
||||
emqx_exproto_pb % generated code for protobuf
|
||||
]}.
|
||||
%% schema registry is for enterprise
|
||||
[
|
||||
{emqx_schema_registry, get_all_schemas, 0},
|
||||
{emqx_schema_api, format_schema, 1},
|
||||
{emqx_schema_api, make_schema_params, 1},
|
||||
{emqx_schema_parser, decode, 3},
|
||||
{emqx_schema_parser, encode, 3},
|
||||
{emqx_schema_registry, add_schema, 1},
|
||||
{emqx_audit, log, 2},
|
||||
% generated code for protobuf
|
||||
emqx_exhook_pb,
|
||||
% generated code for protobuf
|
||||
emqx_exproto_pb
|
||||
]}.
|
||||
|
||||
{eunit_opts,
|
||||
[ verbose
|
||||
]}.
|
||||
{eunit_opts, [verbose]}.
|
||||
|
||||
{project_plugins,
|
||||
[ erlfmt,
|
||||
{project_plugins, [
|
||||
erlfmt,
|
||||
{rebar3_hex, "7.0.2"},
|
||||
{rebar3_sbom,
|
||||
{git, "https://github.com/emqx/rebar3_sbom.git", {tag, "v0.6.1-1"}}}
|
||||
{rebar3_sbom, {git, "https://github.com/emqx/rebar3_sbom.git", {tag, "v0.6.1-1"}}}
|
||||
]}.
|
||||
|
|
Loading…
Reference in New Issue