You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用副本数>1的Artemis Operator时暴露WebConsole的问题

解决Artemis Broker实例WebConsole带前缀Ingress重写问题

你遇到的问题本质是Artemis WebConsole的前端资源默认使用根路径引用,单纯通过Ingress的rewrite-target只能重写请求路径,但页面里的静态资源(比如CSS、JS)还是会请求根路径下的资源,导致404,所以直接前缀重写不生效。

给你两个可行的解决办法:

方法一:用Nginx配置注入Base标签修正路径

针对每个Broker实例的Ingress,添加configuration-snippet注解,在返回的HTML中插入<base>标签,让所有相对路径资源自动带上前缀。

实例0的Ingress配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: artemis-instance0-ingress
  annotations:
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/configuration-snippet: |
      sub_filter '<head>' '<head><base href="/instance0/">';
      sub_filter_once on;
spec:
  rules:
  - host: your-domain.com
    http:
      paths:
      - path: /instance0/(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: broker-webconsole-svc-0
            port:
              number: 8080

对instance1的Ingress做同样配置,把/instance0/换成/instance1/,对应到broker-webconsole-svc-1即可。

方法二:使用子域名映射(更简单)

不需要前缀,给每个实例分配独立子域名,直接映射到对应Service,避免路径重写的问题。

实例0的Ingress配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: artemis-instance0-ingress
spec:
  rules:
  - host: instance0.your-domain.com
    http:
      paths:
      - path: /(.*)
        pathType: ImplementationSpecific
        backend:
          service:
            name: broker-webconsole-svc-0
            port:
              number: 8080

同理配置instance1的子域名instance1.your-domain.com对应到它的Service。

这两种方法都能解决你现在的问题,子域名方案更省心,不需要处理路径重写的兼容性问题。

内容的提问来源于stack exchange,提问作者AndreaG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:18:22