我有一个Spring Boot应用程序,该应用程序具有一些端点,例如:product / version
然后将应用程序部署到K8s网络,并使用Ingress将其公开,如下所示:
image_buffer = np.frombuffer(b_data, dtype=np.uint8).reshape((height,width))
我向入口添加了一条路径,以使我的应用程序在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
添加到应用程序中,以映射入口所暴露的URL:
ConfigMap
因此,现在我的应用程序正在---
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'
下运行,当我尝试调用API my-host:8080/productApp/
时,它运行良好。
当我与Swagger合作时,问题就来了。我大惊小怪:my-host:8080/productApp/product/version
,当我尝试调用my-host:8080/productApp/swagger-ui.html
API时,它返回了product/version
。然后我意识到,摇摇欲坠发送请求的主机URL不再是TypeError: Failed to fetch
,而只是my-host:8080
:
卷曲-X GET“ http://my-host/productApp/product/version” -H “接受:application / json; charset = UTF-8”
这是示例json:
my-host
我在这里期望的主机URL应该是{
"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": {
.....
}
}
,而不是my-host:8080
,这就是为什么摇摇欲坠的请求发送失败的原因。
有人知道如何解决此问题。谢谢你!
答案 0 :(得分:0)
我在使用 Istio Ingress
时遇到了类似的问题。我通过使用 Nginx 代理并在 Nginx 配置文件中设置 X-Forwarded-Host
和 X-Forwarded-Port
请求标头以让 Swagger 知道正确的地址来解决它。