gpt4 book ai didi

kubernetes - 在 K8s Ingress 中添加额外的路径后,Swagger 中主机 URL 的端口似乎消失了

转载 作者:行者123 更新时间:2023-12-03 13:41:57 30 4
gpt4 key购买 nike

我有一个 Spring 启动应用程序,它有一些端点,例如:产品/版本

然后我将应用程序部署到 K8s 网络并使用 Ingress 将其公开,如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /productApp
backend:
serviceName: productappservice
servicePort: 80

我添加了一个入口路径,让我的应用程序在 my-host:8080/productApp/ 下运行

Deployment配置,我需要添加额外的 context-path使用 ConfigMap 到我的应用程序与入口公开的 URL 进行映射:
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: product-app
spec:
replicas: 1
template:
metadata:
labels:
app: product-app
spec:
containers:
- name: product-app
image: my-docer-registry/product-app:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
env:
- name: server.servlet.context-path
valueFrom:
configMapKeyRef:
name: product-app-values
key: server.servlet.context-path

---
apiVersion: v1
kind: ConfigMap
metadata:
name: product-app-values
data:
server.servlet.context-path: '/productApp'

所以现在我的应用程序在 my-host:8080/productApp/ 下运行当我尝试调用 API ex 时: my-host:8080/productApp/product/version ,它工作得很好。

当我与 Swagger 一起工作时,问题就来了。我在下面 Swagger : my-host:8080/productApp/swagger-ui.html当我尝试调用 product/version API,它返回 TypeError: Failed to fetch .然后我意识到swagger发送请求的主机URL不再是 my-host:8080。 , 只是 my-host :

curl -X GET "http://my-host/productApp/product/version" -H "accept: application/json;charset=UTF-8"



这是示例 json:
{
"swagger": "2.0",
"info": {
"version": "0.0.1-SNAPSHOT",
"title": "Product App REST API"
},
"host": "my-host",
"basePath": "/productApp",
"tags": [{
"name": "Product App API",
"description": "REST API of Product App"
},
{
"name": "version API",
"description": "Version information of application and REST API"
}],
"paths": {
.....
}
}

我在这里期望的是主机 URL 应该是 my-host:8080 , 而不仅仅是 my-host ,这就是swagger中的请求发送失败的原因。

有谁知道如何解决这个问题。提前谢谢你!

最佳答案

我在使用 Istio Ingress 时遇到了类似的问题.我通过使用 Nginx 代理并设置 X-Forwarded-Host 解决了这个问题和 X-Forwarded-Port Nginx 配置文件中的请求 header ,以让 Swagger 知道正确的地址。

关于kubernetes - 在 K8s Ingress 中添加额外的路径后,Swagger 中主机 URL 的端口似乎消失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54808046/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com