簡體   English   中英

如何使用 AWS ALB 作為入口 Controller 將多個服務 map 到單個入口?

[英]How to map multiple services to a single ingress using AWS ALB as Ingress Controller?

我有一個入口(例如www.a.com )。 我已將根映射到服務,如下所示:

- backend:
    serviceName: ui-svc
    servicePort: 80
  path: /

當 go 到www.a.com時,這將路由到正確的服務。 我想在 /api 上安裝另一個服務,如下所示:

- backend:
    serviceName: api-svc
    servicePort: 80
  path: /api

www.a.com/api的路由工作正常,但是任何尾隨端點都會得到 404(等等www.a.com/api/swagger ,即使這個端點安裝在應用程序本身(spring 應用程序)中)。 以前,使用 Traefik,我使用rewriteTarget: /注釋來解決這個問題,但是 ALB 不支持這個。 有沒有可以解決這個問題的 kubernetes 原生方式?

我使用 kubernetes 1.17 和 EKS 作為我的 kubernetes 平台。

您可以使用正則表達式來匹配路徑

- backend:
    serviceName: api-svc
    servicePort: 80
  path: /api/.*

這可以通過在入口部署中設置此注釋來啟用:

nginx.ingress.kubernetes.io/use-regex: "true"

更多信息https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/

這已通過添加

server.servlet.context-path=/*relvantPathName*

作為容器的環境變量。 這是一個 spring 特定的東西,它需要重寫根才能工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM