不能卷曲/使用某些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。
“error-code”:“BAD_REQUEST”, “message”:“http://example.com/application/v2/tenant/”
执行到容器中并执行 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可能是问题吗?
答案 0 :(得分:2)
我认为不应该参与HostSuspensionResource。 restapi入口点是您正在进行的调用的ApplicationHandler类。
当您使用默认端口(即不是“内部”19071端口)卷入容器内部时会发生什么?