Ock*_*Ock 7 swagger kubernetes
我有一个 Spring Boot 应用程序,它有一些端点,例如:产品/版本
然后我将应用程序部署到 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
Run Code Online (Sandbox Code Playgroud)
我添加了一个入口路径,让我的应用程序在 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'
Run Code Online (Sandbox Code Playgroud)
所以现在我的应用程序正在运行my-host:8080/productApp/,当我尝试调用 API ex: 时my-host:8080/productApp/product/version,它运行良好。
当我与 Swagger 一起工作时,问题就出现了。我大摇大摆:my-host:8080/productApp/swagger-ui.html当我尝试调用product/versionAPI 时,它返回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": {
.....
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里期望的是主机 URL 应该是my-host:8080,而不是 only my-host,这就是 swagger 中的请求无法发送的原因。
有谁知道如何解决这个问题。先谢谢了!
小智 1
我在使用的时候也遇到了类似的问题Istio Ingress。我通过使用 Nginx 代理并在 Nginx 配置文件中设置X-Forwarded-Host和X-Forwarded-Port请求标头来解决这个问题,让 Swagger 知道正确的地址。
| 归档时间: |
|
| 查看次数: |
506 次 |
| 最近记录: |