是否有可能在入口中为每个域添加不同的重写目标?
我有一个看起来像这样的入口:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: multiple-domains-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /entry1/$1
spec:
rules:
- host: domain1.com
http:
paths:
- path: /(.*)
backend:
serviceName: my-service
servicePort: 8080
如果我可以添加具有不同重定向的多个路径,将是很好的:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: multiple-domains-ingress
spec:
rules:
- host: domain1.com
http:
paths:
- path: /(.*)
backend:
serviceName: my-service
servicePort: 8080
redirect: /entry1/$1
- host: domain2.com
http:
paths:
- path: /(.*)
backend:
serviceName: my-service
servicePort: 8080
redirect: /entry2/$1
还是我必须为每个域创建一个新的入口?
另外,如果有任何我违反的最佳做法,我很乐意听到:-)
谢谢
请您参考如下方法:
IngressBackend API spec仅包含serviceName和servicePort,因此您需要在单独的入口配置中依赖注释。
入口nginx细节
kubernetes ingress-nginx在每个入口定义的配置中设置"server"。这类似于apache VirtualHost。注释通常在此服务器级别上应用。因此,除非特定的annotation可以包含一个域,否则您将需要单独的入口定义。
您可能不喜欢使用在一个入口上提供自定义nginx配置的 configuration-snippet 注释,但是我会避免这样做,因为它会引入破坏配置的机会。这也增加了仅对入口 Controller 使用nginx的要求。
多个入口定义
要注意的主要事情是重复的配置。如果最终要管理100个域的入口定义,则可能要从单个域列表构建配置,而不是在100个文件中维护相同的信息。




