Kubernetes Ingress для одного и того же хоста в другом пространстве имен

У меня есть две услуги, tea а также coffee, каждый находится в своем собственном пространстве имен, я хотел бы domain.com идти в tea обслуживание и domain.com/coffee идти coffee,

Поскольку каждый из них находится в пространстве имен, мне пришлось сделать два входа, но когда я пытаюсь применить их, я получаю ошибку MAPPING Path '/coffee' already defined in another Ingress rule,

Мои две части входа выглядят следующим образом:

Чай:

kind: Ingress
apiVersion: extensions/v1beta1
spec:
  tls:
  - hosts:
    - domain.com
    secretName: tea-tls
  rules:
  - host: domain.com
    http:
      paths:
      - path: /
        backend:
          serviceName: tea
          servicePort: 80

и кофе:

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: coffee
  namespace: coffee
spec:
  tls:
  - hosts:
    - domain.com
    secretName: coffee}-tls
  rules:
  - host: domain.com
    http:
      paths:
      - path: /coffee
        backend:
          serviceName: coffee
          servicePort: 80
      - path: /coffee/*
        backend:
          serviceName: coffee
          servicePort: 80

2 ответа

Я полагаю, что проблема не в чае и кофе, а в определении coffee Путь дважды в кофейном пороге. Согласно https://kubernetes.io/docs/concepts/services-networking/ingress/, я предполагаю, что вам нужны только /coffee путь, и можете удалить /coffee/* дорожка.

Согласно https://github.com/kubernetes/kubernetes/issues/17088, входной контроллер Voyager может справиться с задачей. Пример (взят по ссылке):

apiVersion: voyager.appscode.com/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: foo
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - backend:
          serviceName: s1.bar # serviceName.Namespace
          servicePort: '80'
Другие вопросы по тегам