01 利用ingress的rewrite功能实现一个dns转向多个service - xiaoxin01/Blog GitHub Wiki
在集群外使用ingress方式访问集群服务时,可以为每个服务都申请一个单独的dns,但较浪费。对于dns不敏感的服务,可以通过ingress的rewrite功能,让一个dns可以转向多个服务。
方式为为ingress资源创建annotations,标签如下:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: [service-name]
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: [dns-name]
http:
paths:
- path: /[service1.com](/|$)(.*)
backend:
serviceName: [service1]
servicePort: 80
- path: /[service2.com](/|$)(.*)
backend:
serviceName: [service2]
servicePort: 80
这里通过正则表达式,将(.*)捕捉到的任何内容,传递给rewrite-target。
PS. 这种方法,一些对url path敏感的client app可能会出错。