Соединение микросервисов с тестовыми / dev / prod средами с помощью Ingress - PullRequest
0 голосов
/ 10 мая 2018

Давайте рассмотрим, что у нас есть три среды:

  • test.website.com
  • dev.website.com
  • prod.website.com

КаждаяСреда состоит из следующих микросервисов: webapp, service1, service2.Я хочу иметь возможность легко вызывать все сервисы из JS-интерфейса, не имея дело с доменами.Было бы здорово, если бы я мог просто позвонить /services/service1/, и тот факт, что я нахожусь в одном домене, оставил бы меня в той же среде.

Итак, давайте рассмотрим среду разработки:

  • dev.website.com/ -> идет в webapp
  • dev.website.com/services/service1/ -> идет в service1
  • dev.website.com/services/service1/ ...

Чтобы сделать это,Я настроил вход следующим образом:

    - path: /services/service1/*
      backend:
        serviceName: service1
        servicePort: 8080
    - path: /services/service2/*
      backend:
        serviceName: service2
        servicePort: 8080
    - path: /*
      backend:
        serviceName: webapp
        servicePort: 8080

Это будет прекрасно работать, но это не так.

  1. Первая проблема заключается в том, что service1 получает полный путь (/services/service1) вместо / при вызове.Для этого я нашел это: ingress.kubernetes.io/rewrite-target: / - Но я также убежден, что эта функция не реализована, что противоречиво и не имеет особого смысла.
  2. Вторая проблема заключается в том, что порядок услуг незатем и вызов /services/service1/ заканчивается webapp.

Это даже хороший подход?Как лучше всего это сделать?

Редактировать :

В соответствии с предложениями я удалил * из пути, который помог, но также удалил необходимую функциональность.Мне нужно иметь возможность использовать:

  • /en/ -> webapp
  • /services/service1/method1 -> service1

Это нене работает без * в пути.

1 Ответ

0 голосов
/ 10 мая 2018
  1. Согласно документации для nginx-ingress , префикс аннотации теперь nginx.ingress.kubernetes.io, а не ingress.kubernetes.io, как вы использовали. Вы можете изменить его с помощью аргумента --annotations-prefix.

  2. Попробуйте удалить подстановочный знак (*) из вашего path:

- path: /service/service1
  backend:
    serviceName: service1
    servicePort: 8080
- path: /service/service2
  backend:
    serviceName: service2
    servicePort: 8080
- path: /
  backend:
    serviceName: webapp
    servicePort: 8080
...