用于匹配 Kubernetes ingress 中的“path”和“serviceName”的通配符
Wildcard to match `path` and `serviceName` in Kubernetes ingress
我有一个 Kubernetes 集群,其中有一系列未定义的服务,我想做的是在端点上为每个服务提供服务,能够随时添加新服务,并且它们在端点上仍然可用.
我正在寻找一种方法来在我的入口中设置 serviceName
上的通配符,以便 /xx
将被路由到服务 xx
、/yy
服务 yy
,等等。
我也可以使用的另一个解决方案是将 http://xx.myurl.com
匹配到服务 xx
.
这对 Kubernetes 可行吗?
我想像的东西
- path: /(.*)
backend:
serviceName:
servicePort: 80
谢谢,
科林
这不是Ingress系统所支持的。一些其他工具可能,例如,您可以使用静态 Nginx 配置轻松地完成此操作。
是的,你可以用 ingress 来做,这里有两种解决方案:
对于my-domain.com/xxx
在 ingress 服务中,您可以执行以下操作:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
labels:
name: ingress-service
namespace: my-namespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: my-domain.com
http:
paths:
- path: /xx/(.*)
pathType: Prefix
backend:
service:
name: xx
port:
number: 80
- path: /yy/(.*)
pathType: Prefix
backend:
service:
name: yy
port:
number: 80
所以指向 my-domain.com/xx
的所有内容都将指向 xx
服务,并且它将从路径中删除 /xx/
,例如:
如果您向 my-domain.com/xx/values
发出请求,该请求将作为 my-domain.com/values
转发到 xx
服务。
在 https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout
了解更多信息
您还可以在这里看到路径是如何工作的:https://kubernetes.io/docs/concepts/services-networking/ingress/#examples
xx.my-domain.com
的另一个解决方案你可以这样做:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
labels:
name: ingress-service
namespace: my-namespace
spec:
rules:
- host: xx.my-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: xx
port:
number: 80
- host: yy.my-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: yy
port:
number: 80
您可以在 https://kubernetes.io/docs/concepts/services-networking/ingress/#hostname-wildcards
了解更多信息
我有一个 Kubernetes 集群,其中有一系列未定义的服务,我想做的是在端点上为每个服务提供服务,能够随时添加新服务,并且它们在端点上仍然可用.
我正在寻找一种方法来在我的入口中设置 serviceName
上的通配符,以便 /xx
将被路由到服务 xx
、/yy
服务 yy
,等等。
我也可以使用的另一个解决方案是将 http://xx.myurl.com
匹配到服务 xx
.
这对 Kubernetes 可行吗?
我想像的东西
- path: /(.*)
backend:
serviceName:
servicePort: 80
谢谢,
科林
这不是Ingress系统所支持的。一些其他工具可能,例如,您可以使用静态 Nginx 配置轻松地完成此操作。
是的,你可以用 ingress 来做,这里有两种解决方案:
对于my-domain.com/xxx
在 ingress 服务中,您可以执行以下操作:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
labels:
name: ingress-service
namespace: my-namespace
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: my-domain.com
http:
paths:
- path: /xx/(.*)
pathType: Prefix
backend:
service:
name: xx
port:
number: 80
- path: /yy/(.*)
pathType: Prefix
backend:
service:
name: yy
port:
number: 80
所以指向 my-domain.com/xx
的所有内容都将指向 xx
服务,并且它将从路径中删除 /xx/
,例如:
如果您向 my-domain.com/xx/values
发出请求,该请求将作为 my-domain.com/values
转发到 xx
服务。
在 https://kubernetes.io/docs/concepts/services-networking/ingress/#simple-fanout
了解更多信息您还可以在这里看到路径是如何工作的:https://kubernetes.io/docs/concepts/services-networking/ingress/#examples
xx.my-domain.com
的另一个解决方案你可以这样做:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-service
labels:
name: ingress-service
namespace: my-namespace
spec:
rules:
- host: xx.my-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: xx
port:
number: 80
- host: yy.my-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: yy
port:
number: 80
您可以在 https://kubernetes.io/docs/concepts/services-networking/ingress/#hostname-wildcards
了解更多信息