【问题标题】:kubernetes gce ingress path wildcard not proxy correct uri (works inside container)kubernetes gce 入口路径通配符不代理正确的 uri(在容器内工作)
【发布时间】:2017-12-23 23:03:15
【问题描述】:

无法卷曲/使用带有一些 slug 的 rest API 的原因可能是什么,例如 example.com/application/v2/xxxx。我使用的 docker 图像是来自的应用程序 http://vespa.ai/ https://github.com/vespa-engine/docker-image/blob/master/Dockerfile

我已经正确设置了节点端口和入口

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

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

或显式使用通配符路由:

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

奇怪的是在外部(集群外)做 curl: 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/"

exec 进入容器并执行 curl -s --head 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】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多