Kubernetes入口规则:如何同时使用通配符和特定子域

yjghlzjz  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(4)|浏览(107)

我想Ingress重定向到一个特定的子域后端和所有其他后端。基本上,我想定义一个规则,如下所示:
如果子域是foo.bar.com,则转到s1,对于所有其他子域,转到s2
当我在Ingress规范中定义如下所示的规则时,我在部署时得到了这个异常:

Error: UPGRADE FAILED: cannot re-use a name that is still in use

字符串
当我将*.bar.com更改为demo.bar.com时,它可以工作。
下面是我的Ingress资源规范:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: s1
          servicePort: 80
  - host: *.bar.com
    http:
      paths:
      - backend:
          serviceName: s2
          servicePort: 80


有没有人知道这是可能的还是不可能的?

ltqd579y

ltqd579y1#

现在可以在Kubernetes中使用nginx:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/ssl-redirect: "false"
    kubernetes.io/ingress.class: nginx
    kubernetes.io/ingress.global-static-ip-name: web-static-ip
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/server-alias: www.foo.bar
    nginx.ingress.kubernetes.io/use-regex: "true"
  name: foo-bar-ingress
  namespace: test
spec:
  rules:
  - host: 'foo.bar.com'
    http:
      paths:
      - backend:
          serviceName: specific-service
          servicePort: 8080
        path: /(.*)
        pathType: ImplementationSpecific
  - host: '*.bar.com'
    http:
      paths:
      - backend:
          serviceName: general-service
          servicePort: 80
        path: /(.*)
        pathType: ImplementationSpecific

字符串

ttp71kqs

ttp71kqs2#

我很确定在查看Issue 41881时这是不可能的,但我可能在最新版本的Kubernetes中遗漏了一些东西-我们正在谈论release 1.12

w41d8nur

w41d8nur3#

这里已经提出了一个PR,用于支持入口规则中的通配符域。参考下面的链接
https://github.com/containous/traefik/issues/3884
您可以尝试Traefik v1.7,看看是否启用了通配符支持。

du7egjpx

du7egjpx4#

您可以使用默认后端-

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
spec:
  - backend:
      serviceName: s2
      servicePort: 80
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: s1
          servicePort: 80

字符串

相关问题