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

K8s环境下Quarkus Swagger UI请求异常问题排查

问题解决思路与方案

你遇到的问题核心是:Swagger UI依赖的OpenAPI文档里,接口的基础路径没有包含Ingress配置的/{{ namespace }}前缀,所以点击Swagger UI里的接口发送请求时,会直接调用不带前缀的地址,导致命名空间被移除。而curl能正常请求是因为你手动加上了前缀。

解决方法如下:

1. 给OpenAPI文档指定正确的服务器地址

在Quarkus的application.properties里添加配置,让生成的OpenAPI文档带上Ingress的前缀路径:

# 替换成你的实际外部访问域名和命名空间
quarkus.smallrye-openapi.server-url=https://your-domain/your-namespace

这样Swagger UI加载OpenAPI文档后,所有接口请求都会自动使用这个带前缀的地址,和Ingress的路径规则匹配。

2. 动态适配(避免硬编码)

如果不想固定域名和命名空间,也可以用Quarkus的环境变量或表达式来动态生成:

# 利用K8s注入的命名空间环境变量,结合外部访问地址
quarkus.smallrye-openapi.server-url=${QUARKUS_HTTP_EXTERNAL_URL:-https://default-domain}/${KUBERNETES_NAMESPACE:-default}

这里KUBERNETES_NAMESPACE是K8s自动注入到Pod的环境变量,QUARKUS_HTTP_EXTERNAL_URL可以通过Ingress的Host配置或外部服务发现来设置。

验证

修改配置后重启服务,打开Swagger UI,查看页面顶部的“Servers”选项,确认显示的地址包含/{{ namespace }}前缀。此时再发送请求,URL就会带上命名空间部分,不会再被移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:02:09