Kubernetes ingress rules: How to use wildcard and specific subdomain together

fyelci picture fyelci · Sep 14, 2018 · Viewed 10k times · Source

I want Ingress to redirect a specific subdomain to one backend and all others to other backend. Basically, I want to define a rule something like the following:

If subdomain is foo.bar.com then go to s1, for all other subdomains go to s2

When I define the rules as shown below in the Ingress spec, I get this exception at deployment:

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

When I change *.bar.com to demo.bar.com it works, however.

Here's my Ingress resource spec:

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

Anyone has an idea if it is possible or not?

Answer

Michael Hausenblas picture Michael Hausenblas · Sep 14, 2018

I'm pretty sure this is currently not possible when looking at Issue 41881, but I could be missing something in the most recent version of Kubernetes—we're about to release 1.12 as we speak.