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

时间:2019-02-21 13:16:45

标签: kubernetes swagger

我有一个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,这就是为什么摇摇欲坠的请求发送失败的原因。

有人知道如何解决此问题。谢谢你!

1 个答案:

答案 0 :(得分:0)

我在使用 Istio Ingress 时遇到了类似的问题。我通过使用 Nginx 代理并在 Nginx 配置文件中设置 X-Forwarded-HostX-Forwarded-Port 请求标头以让 Swagger 知道正确的地址来解决它。