用于匹配 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

了解更多信息