[英]rewrite URI with ingress for different k8s services
基本上我需要实现如下工作流程。 我已经部署了没有任何自定义值的官方nginx helm-chart 。
我试图实现的流程:
• https://test-api.foo.com/
>>> http://k8s-service-A/
• https://test-api.foo.com/bar
>>> http://k8s-service-B/bar
• https://test-api.foo.com/sos
>>> http://k8s-service-C/sos
这是我的service-A-ingress.yaml
配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-ssl-verify: "false"
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.org/client-max-body-size: 1024m
nginx.org/proxy-connect-timeout: 350s
nginx.org/proxy-read-timeout: 4260s
name: service-A-ingress
spec:
ingressClassName: nginx
rules:
- host: test-api.foo.com
http:
paths:
- backend:
service:
name: service-A
port:
number: 3001
path: /
pathType: ImplementationSpecific
- backend:
service:
name: Service-B
port:
number: 3002
path: /bar
pathType: ImplementationSpecific
- backend:
service:
name: Service-C
port:
number: 3003
path: /sos
pathType: ImplementationSpecific
假设所有 3 项服务及其各自的部署已经在那里正常工作。 对于所有 3 项服务,我收到的回复如下:
• https://test-api.foo.com/
>>> http://k8s-service-A/
(工作正常)
• https://test-api.foo.com/bar
>>> http://k8s-service-B/bar
(得到 404)
• https://test-api.foo.com/sos
>>> http://k8s-service-C/sos
(得到 404)
我不是 nginx 专家,但它看起来像是,入口中的“rewrite-target”注释不起作用。
如果我做错了什么或理解不同,也请告诉我。 任何帮助,将不胜感激。
正如@xirehat 提到的,可以删除重写注释。 因为请求将被重写以匹配关联服务预期的 URI。 因为偶尔后端服务暴露的URL和Ingress规则中指示的路径不一样。 除非重建请求,否则它将始终返回 404。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-ssl-verify: "false"
nginx.org/client-max-body-size: 1024m
nginx.org/proxy-connect-timeout: 350s
nginx.org/proxy-read-timeout: 4260s
name: service-A-ingress
spec:
ingressClassName: nginx
rules:
- host: test-api.foo.com
http:
paths:
- backend:
service:
name: service-A
port:
number: 3001
path: /
pathType: ImplementationSpecific
- backend:
service:
name: Service-B
port:
number: 3002
path: /bar
pathType: ImplementationSpecific
- backend:
service:
name: Service-C
port:
number: 3003
path: /sos
pathType: ImplementationSpecific
如果仍然不起作用,请尝试使用pathType: Prefix
。 您可以参考这些链接以了解有关Rewrite 注释和Ingress 注释的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.