Правила входа в Kubernetes: как использовать подстановочный знак и конкретный поддомен вместе

Я хочу, чтобы 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

У кого-нибудь есть идея, возможно ли это или нет?

4 ответа

Теперь это возможно в Kubernetes:

      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

Я почти уверен, что в настоящее время это невозможно, если рассматривать выпуск 41881, но я мог что-то упустить в самой последней версии Kubernetes - мы собираемся выпустить версию 1.12, как мы говорим.

Уже есть пиар для поддержки доменных имен в правилах входа. обратитесь по ссылке ниже

https://github.com/containous/traefik/issues/3884

Можете ли вы попробовать Traefik v1.7 и посмотреть, включена ли поддержка подстановочных знаков.

Вы можете использовать бэкэнд по умолчанию -

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
Другие вопросы по тегам