Kubernetes 入口路径重写

问题描述 投票:0回答:1

我正在使用 K3S 学习 Kubernetes。由于一些项目限制,我使用的是Traefik ingress。 (之前我使用的是 nginx ingress。)

我正在尝试使用“扇出”方法在入口后面部署一些 Pod。例如,我必须容器 CX 和 CY,每个容器都有自己的 http 端点,定义时没有前缀,例如/api、/data、/ 等。两个容器将在同一主机上运行。默认的 kubernetes 行为是将整个路径转发到容器,因此如果我在 /CX 处有 CX,那么当我 ping url/CX 时 - 容器会看到路径 /CX - 这意味着我必须重新定义容器中的所有路径为 /CX/api、/CX/data 等

当我使用nginx时,我可以访问:

ingress:
  enabled: true
  className: "nginx"
  #className: "traefik"
  annotations:
      nginx.ingress.kubernetes.io/use-regex: "true"
      nginx.ingress.kubernetes.io/rewrite-target: /$2
  hosts:
    - host:
      paths:
        - path: /postgres(/|$)(.*)
          pathType: ImplementationSpecific

这会重写路径。 Traefik 有这方面的中间件(但很难工作。)

我是否缺少为 Kubernetes 设计的 http 服务的基本设计原则?对我来说这似乎是一个基本问题,但对路径重写的支持相当有限。我应该以不同的方式设计我的容器、pod 或服务吗?

kubernetes nginx kubernetes-ingress traefik k3s
1个回答
0
投票

您有 2 个选择。

  1. 使用入口控制器功能重写您的路径。在本例中为 traefik 中间件。

  2. 为您拥有的每个应用程序(例如 CX.yourdomain.com)定义新的 DNS 记录,并直接使用这些地址作为入口主机,无需重写路径。

© www.soinside.com 2019 - 2024. All rights reserved.