# 配置 EMQX 企业版 License

# 任务目标

  • 如何使用 secretName 字段配置 EMQX 企业版 License。
  • 如何更新 EMQX 企业版 License。

# 使用 secretName 字段配置 License

  • 基于 License 文件创建 Secret

Secret 是一种包含少量敏感信息例如密码、令牌或密钥的对象。关于 Secret 更加详尽的文档可以参考:Secret (opens new window)。EMQX Operator 支持使用 Secret 挂载 License 信息,因此在创建 EMQX 集群之前我们需要基于 License 创建好 Secret。

EMQX 企业版 License 可以在 EMQ 官网免费申请:申请 EMQX 企业版 License (opens new window)

kubectl create secret generic test --from-file=emqx.lic=/path/to/license/file
1

说明/path/to/license/file 表示 EMQX 企业版 License 文件路径,可以是绝对路径,也可以是相对路径。更多使用 kubectl 创建 Secret 的细节可以参考文档:使用 kubectl 创建 secret (opens new window)

输出类似于:

secret/test created
1
  • 配置 EMQX 集群

EMQX 企业版在 EMQX Operator 里面对应的 CRD 为 EmqxEnterprise,EmqxEnterprise 支持通过 .spec.emqxTemplate.license.secretName 字段来配置 EMQX 企业版 License,secretName 字段的具体描述可以参考:secretName (opens new window)

apiVersion: apps.emqx.io/v1beta3
kind: EmqxEnterprise
metadata:
  name: emqx-ee
spec:
  emqxTemplate:
    image: emqx/emqx-ee:4.4.8
    license:
      secretName: test
1
2
3
4
5
6
7
8
9

说明secretName 表示上一步中创建的 Secret 名称。

将上述内容保存为:emqx-license.yaml,执行如下命令部署 EMQX 企业版集群。

kubectl apply -f emqx-license.yaml
1

输出类似于:

emqxenterprise.apps.emqx.io/emqx-ee created
1
  • 检查 EMQX 企业版集群是否就绪
kubectl get emqxenterprise emqx-ee -o json | jq ".status.emqxNodes"
1

输出类似于:

[
  {
    "node": "emqx-ee@emqx-ee-1.emqx-ee-headless.default.svc.cluster.local",
    "node_status": "Running",
    "otp_release": "24.1.5/12.1.5",
    "version": "4.4.8"
  },
  {
    "node": "emqx-ee@emqx-ee-0.emqx-ee-headless.default.svc.cluster.local",
    "node_status": "Running",
    "otp_release": "24.1.5/12.1.5",
    "version": "4.4.8"
  },
  {
    "node": "emqx-ee@emqx-ee-2.emqx-ee-headless.default.svc.cluster.local",
    "node_status": "Running",
    "otp_release": "24.1.5/12.1.5",
    "version": "4.4.8"
  }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

说明node 表示 EMQX 节点在集群的唯一标识。node_status 表示 EMQX 节点的状态。otp_release 表示 EMQX 使用的 Erlang 的版本。version 表示 EMQX 版本。EMQX Operator 默认会拉起三个节点的 EMQX 集群,所以当集群运行正常时,可以看到三个运行的节点信息。如果你配置了 .spec.replicas 字段,当集群运行正常时,输出结果中显示的运行节点数量应和 replicas 的值相等。

  • 检查 EMQX 企业版 License 信息
kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl license info 
1

输出类似于:

customer                 : EMQ X Evaluation
email                    : contact@emqx.io
max_connections          : 10
original_max_connections : 10
issued_at                : 2020-06-20 03:02:52
expiry_at                : 2049-01-01 03:02:52
vendor                   : EMQ Technologies Co., Ltd.
version                  : 4.4.8
type                     : official
customer_type            : 10
expiry                   : false
1
2
3
4
5
6
7
8
9
10
11

说明:从输出结果可以看到我们申请的 License 的基本信息,包括申请人的信息和 License 支持最大连接数以及 License 过期时间等。

# 更新 EMQX 企业版 License

  • 更新 EMQX 企业版 License Secret
kubectl create secret generic test --from-file=emqx.lic=/path/to/license/file --dry-run -o yaml | kubectl apply -f -
1

输出类似于:

secret/test configured
1
  • 查看 EMQX 集群 License 是否被更新
kubectl exec -it emqx-ee-0 -c emqx -- emqx_ctl license info 
1

输出类似于:

customer                 : cloudnative
email                    : cloudnative@emqx.io
max_connections          : 100000
original_max_connections : 100000
issued_at                : 2022-11-21 02:49:35
expiry_at                : 2022-12-01 02:49:35
vendor                   : EMQ Technologies Co., Ltd.
version                  : 4.4.8
type                     : official
customer_type            : 2
expiry                   : false
1
2
3
4
5
6
7
8
9
10
11

说明:若证书信息没有更新,可以等待一会,License 的更新会有些时延。从上面输出的结果可以看出,License 的内容已经更新,则说明 EMQX 企业版 License 更新成功。