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