Kubernetes k8s入口nginx设置每个域的重写目标

Kubernetes k8s入口nginx设置每个域的重写目标,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,是否有可能在入口中为每个域添加不同的重写目标 我有一个入口,看起来像这样: 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

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

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

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
如果我可以像这样添加多个具有不同重定向的路径,那就太好了:

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
还是我必须为每个域创建一个新入口? 此外,如果我在这里违反了任何最佳实践,我很乐意听到:-)


谢谢

这是关于入口抽象的令人沮丧的事情之一。它是一个最低限度的系统,因此可以由多个控制器轻松实现(这是可行的),但这意味着许多功能都被注释实现,而注释通常与抽象不匹配,因为它们是一个通用的键/值对系统

仅包括
serviceName
servicePort
,因此您需要依赖单独入口配置中的注释

ingress nginx详细信息 kubernetes
ingress nginx
根据ingress定义在其配置中设置一个。这类似于ApacheVirtualHost。注释通常应用于此服务器级别。因此,除非特定的域可能包含一个域,否则您将需要单独的入口定义

您可以在一个入口上使用一个提供自定义nginx配置的注释,但我会避免这样做,因为它引入了破坏配置的机会。这也增加了对入口控制器仅使用nginx的要求

多入口定义 要注意的主要问题是重复配置。如果您最终管理了100个域的入口定义,那么您可能希望从单个域列表构建配置,而不是在100个文件中维护相同的信息