Kubernetes 入口资源中具有不同服务名称的相同路径

Kubernetes 入口资源中具有不同服务名称的相同路径,kubernetes,kubernetes-ingress,nginx-ingress,Kubernetes,Kubernetes Ingress,Nginx Ingress,我在使用路径指向不同的服务名称时遇到一些问题,我的入口资源如下所示 nginx静态服务是一个具有静态内容的nginx容器。。。我必须在调用service-1时加载此静态内容,因为nginx static和service-1都是静态的,但我无法保持相同的主机路径。。。。请建议如何更正以下入口资源 请注意,静态内容有很多文件(csv、js、html、目录、文件等) 感谢任何专家的帮助 不能有指向不同后端资源的相同路径。您必须将静态文件或服务放入不同的路径,然后重写URL,例如: 重写注释: meta

我在使用路径指向不同的服务名称时遇到一些问题,我的入口资源如下所示

nginx静态服务是一个具有静态内容的nginx容器。。。我必须在调用service-1时加载此静态内容,因为nginx static和service-1都是静态的,但我无法保持相同的主机路径。。。。请建议如何更正以下入口资源

请注意,静态内容有很多文件(csv、js、html、目录、文件等)


感谢任何专家的帮助

不能有指向不同后端资源的相同路径。您必须将静态文件或服务放入不同的路径,然后重写URL,例如:

重写注释:

metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: rewrite
  namespace: default
路径:

- backend:
     serviceName: nginx-statix
     servicePort: 80
  path: /static(/|$)(.*)
- backend:
  path: /
     serviceName: service1
这样,您的静态内容将在
/static/
下公开,所有
/static/name
将被入口重写为
/name


此处的更多信息:

不幸的是,最初问题的要求并不明确,也没有给出额外的澄清。但是,我想详细说明一下答案和补充,Kubernetes Ingress允许您在为不同主机列出相同路径ad端口的情况下,为多个服务列出相同路径ad端口


foo.bar.com --|                 |-> foo.bar.com nginx-static:80
              | 178.91.123.132  |
bar.foo.com --|                 |-> bar.foo.com service1:8989
您可以通过以下配置实现该场景:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: name-virtual-host-ingress
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: nginx-static
          servicePort: 80
  - host: bar.foo.com
    http:
      paths:
      - backend:
          serviceName: service2
          servicePort: 8989
但是,只有当您可以在两台主机之间拆分web站点时,这才有效

希望有帮助。
您可以查看K8s文档的更多信息。

谢谢您的建议,但我的域名永远不会将此路径称为/static。。。如何处理这种情况。。。。有没有办法始终执行我的入口路径和后端资源?您必须以某种方式将静态内容从服务调用中分离出来。>因为nginx static和service-1都存在,但我无法保持相同的主机路径。。。。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: name-virtual-host-ingress
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: nginx-static
          servicePort: 80
  - host: bar.foo.com
    http:
      paths:
      - backend:
          serviceName: service2
          servicePort: 8989