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可能会出错。

参考

⚠️ **GitHub.com Fallback** ⚠️