是否有可能在入口中为每个域添加不同的重写目标?

我有一个看起来像这样的入口:

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仅包含serviceNameservicePort,因此您需要在单独的入口配置中依赖注释。

入口nginx细节

kubernetes ingress-nginx在每个入口定义的配置中设置"server"。这类似于apache VirtualHost。注释通常在此服务器级别上应用。因此,除非特定的annotation可以包含一个域,否则您将需要单独的入口定义。

您可能不喜欢使用在一个入口上提供自定义nginx配置的 configuration-snippet 注释,但是我会避免这样做,因为它会引入破坏配置的机会。这也增加了仅对入口 Controller 使用nginx的要求。

多个入口定义

要注意的主要事情是重复的配置。如果最终要管理100个域的入口定义,则可能要从单个域列表构建配置,而不是在100个文件中维护相同的信息。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!