4.8. 启用对 AMQ 管理控制台的访问
基于 Operator 的部署中的每个代理 pod 都会在端口 8161 中托管自己的 AMQ 管理控制台实例。您可以为代理部署在自定义资源(CR)实例中启用对控制台的访问。在启用对控制台的访问后,您可以使用控制台在网页浏览器中查看和管理代理。
流程
-
编辑代理部署的
ActiveMQArtemis
(CR)实例。 在 CR 的
spec
部分中,添加一个console
属性。在console
部分中,添加expose
属性,并将值设为true
。spec: .. console: expose: true
当您公开控制台时,Operator 会自动为部署中的每个代理 pod 上的控制台创建一个专用服务和 Openshift 路由。
如果要自定义控制台公开的路由的主机名,以匹配 Openshift 集群中的内部路由配置,您可以执行以下操作之一或两者:
-
使用
ingressHost
属性将默认主机名替换为控制台路由的自定义主机名。 -
使用
ingressDomain
属性将自定义域附加到主机名中。自定义域也应用于由 CR 配置公开的所有其他路由,如 acceptors 的路由。
要设置专用于控制台路由的自定义主机名,请添加
ingressHost
属性并指定主机字符串。例如:spec: .. console: expose: true ingressHost: my-console-production.my-subdomain.com ..
注意ingressHost
值在 Openshift 集群中必须是唯一的。如果您的代理集群有多个代理 pod,您可以通过在值中包含 $(BROKER_ORDINAL)变量来使ingressHost
值是唯一的。Operator 会将每个代理 pod 创建的路由中的此变量替换为分配给 pod 的 StatefulSet 编号。例如,在第一个 pod上,my-console-$(BROKER_ORDINAL)-production.my
-subdomain.com 的ingressHost
值将路由的主机名设置为my-console-0-production.my-subdomain.com
您可以在控制台路由的自定义主机名字符串中包含以下变量:
表 4.3. 控制台路由的自定义主机名字符串中的变量 Name 描述 $(CR_NAME)
CR 中的
metadata.name
属性的值。$(CR_NAMESPACE)
自定义资源的命名空间。
$(BROKER_ORDINAL)
StatefulSet 分配给代理 pod 的普通数量。
$(ITEM_NAME)
接受者的名称。
$(RES_TYPE)
资源类型。路由具有
rte
资源类型。入口的资源类型为ing
。$(INGRESS_DOMAIN)
如果在 CR 中配置,
spec.ingressDomain
属性的值。要将自定义域附加到路由中的主机名中,请添加
spec.ingressDomain
属性并指定自定义字符串。例如:spec: ... ingressDomain: my.domain.com
-
使用
如果机构的网络策略需要您使用 ingress 而不是路由公开控制台,请完成以下步骤:
添加
exposeMode
属性,并将值设为ingress
。spec: .. console: expose: true exposeMode: ingress ..
如果要自定义控制台公开的入口主机名,以匹配 Openshift 集群中的内部路由配置,您可以执行以下操作之一或两者:
-
使用
ingressHost
属性将默认主机名替换为自定义主机名。 使用
ingressDomain
属性将自定义域附加到主机名中。自定义域也应用于由 CR 配置公开的所有其他入口,如 acceptors 的 ingress。要为控制台创建的入口设置自定义主机名,请添加
ingressHost
属性并指定主机字符串。例如:spec: .. console: expose: true exposeMode: ingress expose: true exposeMode: ingress ingressHost: my-console-production.my-subdomain.com ...
您可以包括相同的变量来自定义入口主机作为路由主机,如此流程前面所述。
要将自定义域附加到 ingresses 中的主机名,请添加
spec.ingressDomain
属性并指定自定义字符串。spec: ... ingressDomain: my.domain.com
对于控制台,ingress 的默认主机名采用 <
cr-name>-wconsj-<ordinal>-svc-ing-<namespace>
; 格式。例如,如果您在amqbroker
命名空间中有一个名为production
的 CR,则ingressDomain
值mydomain.com
会为 Pod 0 上创建的 ingress 提供主机值production-wconsj-0-svc-ing-mynamespace.amqbroker.com
。有关
spec.ingressDomain
属性的更多信息,请参阅 第 8.1 节 “自定义资源配置参考”。
-
使用
如果要从 OpenShift 集群以外的客户端启用到控制台的安全连接,请完成以下步骤:
添加
sslEnabled
属性,并将值设为true
。spec: .. console: expose: true exposeMode: ingress sslEnabled: true ..
添加
sslSecret
属性,并指定包含证书的 secret 名称,以保护控制台。例如:spec: .. console: expose: true exposeMode: ingress sslEnabled: true sslSecret: console-tls-secret ..
使用
spec.env
属性添加一个环境变量,该变量将控制台配置为在每次证书续订时自动加载新证书。例如:spec: .. env: - name: JAVA_ARGS_APPEND value: -Dwebconfig.bindings.artemis.sslAutoReload=true ..
- 保存 CR。
其他资源
有关如何连接到 AMQ 管理控制台的详情,请参考 第 5 章 连接到基于 Operator 的代理部署的 AMQ 管理控制台