我正在GKE集群上工作。我有一个运行的简单服务器。服务器上有3条路由。

route 1 - /
route 2 - /ping
route 3 - /health

这些路径返回200 strip 有通用但不同的“确定”消息的响应。

这就是我的入口Yaml的样子-
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: basic-ingress
spec:
  tls:
  - hosts:
    - www.simple.com
    secretName: simple-server-tls
  rules:
    - host: www.simple.com
      http:
        paths:
        - path: /ping
          backend:
            serviceName: simple-server
            servicePort: 8080

我将服务器暴露为负载平衡器。我可以使用loadbalancer作为https://<loadbalancer_ip>:8080/https://<loadbalancer_ip>:8080/pinghttps://<loadbalancer_ip>:8080/health访问所有三个路由

但是,当尝试使用Ingress时,我在https://www.simple.com/ping上仅收到200条响应
其他两条路线https://www.simple.com/healthhttps://www.simple.com/返回default backend - 404 error

我可以确认服务器正在运行并且可以完美地处理请求,并且我已经为入口分配了足够的时间(最多30分钟)以完成设置。 https://www.simple.com/healthz returns "OK"

我认为我在正确配置入口方面犯了一个错误。任何帮助/建议表示赞赏。

我无法提供入口日志,因为我注意到kubectl describe ingress/basic-ingress返回错误Error from server (NotFound): the server could not find the requested resource。但是,kubectl get ingress返回basic-ingress www.simple.com <ingress_ip> 80, 443 31m

最佳答案

找出问题。您需要在路径中添加通配符。我的路径中只有/,因此它拒绝了所有其他网址(读取抛出404错误)。我添加了/*并删除了the rewrite-target annotation,因为它正确建议了@bserdar,并且可以正常工作。链接到github上的问题很有帮助-https://github.com/kubernetes/ingress-nginx/issues/1120

关于kubernetes - 如何通过一个Ingress在同一服务上服务器多个路径?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58313480/

10-12 21:55