入口路径重定向,掌舵图

Ingress path redirection, helm chart

我在 kubernetes 中有一个 运行 的服务,它有一个路径前缀 /api。现在我想使用Ingress通过主机地址example.com/service1/访问它,因为我有多个服务。但问题是入口重定向来自路径 service1/ 的所有请求,前缀为 service1/,但我希望它仅使用 /example.com/service1/ 重定向到我的服务(所以如果我请求 example.com/service1/api 它将重定向到仅 /api 的服务)。我可以实现这样的目标吗?我正在服务的掌舵图中编写入口配置。 服务图表文件 values.yaml 中的入口配置如下所示:

...
ingress:
  enabled: true
  className: ""
  annotations: {}
  # kubernetes.io/ingress.class: nginx // this comment was created when generating helm chart
  hosts:
    - host: example.com
      paths:
        - path: /service1(/|$)(.*)
          pathType: ImplementationSpecific
          backend:
            serviceName: $name
            servicePort: http
  tls: []
  ...

templates/ 文件夹中的 ingress.yaml 是我为服务创建图表时由 helm 生成的默认文件。它只使用 values.yaml 中的值来配置入口。我没有找到任何东西,只有 这基本上是说我需要向我的服务添加前缀 service1/ 或仅在 Ingress 配置中使用 /api 。但是有适合我需求的解决方案吗?

这是为了提高可见度而发布的社区 Wiki 答案。随意展开。

根据评论中提供的解决方案(Medium post 中的方法 1 示例 2),Ingress 的可能 values.yaml 文件可能如下所示。

...
ingress:
  enabled: true
  className: ""
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: http://example.com/ 
  hosts:
    - host: example.com
      paths:
        - path: /service1(/|$)(.*)
          backend:
            serviceName: $name
            servicePort: http
  tls: []
  ...