kubernetes - 入口路径重定向,掌舵图
问题描述
我有一个在 kubernetes 中运行的服务,并且有一个路径前缀/api
。现在我想使用 Ingress 通过主机地址访问它,example.com/service1/
因为我有多个服务。但问题是 ingressservice1/
使用该前缀重定向来自 path 的所有请求service1/
,但我希望它example.com/service1/
使用 just 重定向到我的服务/
(所以如果我请求example.com/service1/api
它将重定向到使用 just 的服务/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: []
...
ingress.yaml
内部文件夹是我为服务创建图表时templates/
生成的默认文件。helm
它只是使用 from 的值values.yaml
来配置入口。我没有找到任何东西,只有这个问题基本上是说我需要在service1/
我的服务中添加前缀或者只是/api
在 Ingress 配置中使用。但是有适合我需求的解决方案吗?
解决方案
这是为更好的可见性而发布的社区 wiki 答案。随意扩展它。
根据评论中提供的解决方案(Medium帖子中的方法 1 示例 2 ),values.yaml
Ingress 的可能文件可能如下所示。
...
ingress:
enabled: true
className: ""
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: http://example.com/$2
hosts:
- host: example.com
paths:
- path: /service1(/|$)(.*)
backend:
serviceName: $name
servicePort: http
tls: []
...