kubernetes gce ingress path通配符不代理正确uri(在容器内工作)

问题描述 投票:2回答:1

什么原因是不能卷曲/使用其他一些slugs的休息API,例如example.com/application/v2/xxxx。我使用的docker图像来自http://vespa.ai/ https://github.com/vespa-engine/docker-image/blob/master/Dockerfile的应用程序

我已正确设置nodeport和入口

我尝试了各种各样的,例如主机上的默认后端:

- host: example.com
http:
  paths:
  - backend:
      serviceName: myservice
      servicePort: 19071

或显式使用通配符路由:

 - host: example.com
http:
  paths:
  - path: /*
    backend:
      serviceName: myservice
      servicePort: 19071

奇怪的是外部做卷曲(在集群外):curl -s --head http://example.com/ApplicationStatus返回statusCode 200 OK

做curl -s --head http://example.com/application/v2/tenant/从应用程序返回BAD_REQUEST。

“错误代码”:“BAD_REQUEST”,“消息”:“http://example.com/application/v2/tenant/

执行到容器和做curl -s - 头http://localhost:19071/application/v2/tenant/作品..

因此,要么应用程序以某种方式匹配主机名,这在来自入口时是不正确的,或者在完整的uri未被代理时存在一些其他问题。

该应用程序的源代码目前对我来说太大了,但在源代码中查找https://github.com/vespa-engine/vespa/blob/f76406b88df47f6bdbf9d24feda4c9ff55c63e06/orchestrator/src/main/java/com/yahoo/vespa/orchestrator/resources/HostSuspensionResource.java它可能解释了为什么它会返回错误消息。

其他一切似乎都有用,配置服务器和应用程序。

应用程序本身或kubernetes可能是这里的问题吗?

kubernetes google-kubernetes-engine vespa
1个回答
2
投票

我认为HostSuspensionResource不应该涉及到这里。 restapi入口点是您正在进行的调用的ApplicationHandler类。

当您使用默认端口(即不是“内部”19071端口)卷入容器内部时会发生什么?

© www.soinside.com 2019 - 2024. All rights reserved.