【问题标题】:Kubenetes Ingress API RoutingKubernetes 入口 API 路由
【发布时间】:2019-11-23 19:17:00
【问题描述】:

我有一个在默认路径上侦听的 React Web 应用程序,我希望将我的 API 后端包含在同一个 URL 中。

我的入口的 sn-p 如下:

    http:
      paths:
      - backend:
          serviceName: atsweb
          servicePort: 80
        path: /(.*)
      - backend:
          serviceName: atsapi
          servicePort: 80
        path: /api(/|$)(.*)

我的 API 有一堆在 /api/ 之后路由的函数,我在 mydomain.io/api/values 有一个我无法访问的测试页面。我的前端服务工作正常。

只是路径不正确吗?

我已经部署了一个独立的 API,只是为了检查容器端口/服务端口是否正确。

【问题讨论】:

    标签: kubernetes kubernetes-ingress azure-aks


    【解决方案1】:

    看起来您从 复制了示例。你的入口注释是什么?检查重写,因为它看起来正在重定向。尽管如此,适用的入口看起来像这样:

    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: your-ingress
      namespace: default
      annotations:
        kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
    spec:
      rules:
      - http:
          paths:
          - path: /
            backend:
              serviceName: atsweb
              servicePort: 80
          - path: /api/
            backend:
              serviceName: atsapi
              servicePort: 80
    

    检查没有重写注释。这会使您的 uri 完全附加到下一个代理。因此,使mydomain.io/api/values 转到atsapi:80/api/values

    【讨论】:

    • 您好,感谢您的回答。道歉我没有把整个入口。不知道这有多重要!这和删除 'nginx.ingress.kubernetes.io/rewrite-target: /$1' 让它工作。感谢您对 URI 附加的解释。
    • @Koxzi ,与所有其他 Kubernetes 资源一样,Ingress 需要 apiVersion、种类和元数据字段;但是,Ingress 经常根据 Ingress 控制器使用注解来配置一些选项,其中一个示例是 rewrite-target 注解。不同的 Ingress 控制器支持不同的注解。如果有人需要关于重写目标的全面信息,可以找到here
    猜你喜欢
    • 1970-01-01
    • 2019-05-09
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2021-05-05
    相关资源
    最近更新 更多