Рейтинг:0

kubernetes ingress заменить путь

флаг cn

У меня есть два бэкэнд-апи-сервиса:

  1. API-сервис-v1
  2. API-сервис-v2

Оба отвечают на путь "/api/"

У меня эта конфигурация работает нормально как установка для создания докеров, где служба nginx служит прокси-сервером со следующим файлом конфигурации

/etc/nginx/conf.d/default.conf:

сервер {
    ...

    местоположение /apiv1/ {
        proxy_pass http://api-service-v1/api/;
    }
    ...

    местоположение /apiv2/ {
        proxy_pass http://api-service-v2/api/;
    }
    ...
}

Теперь я хотел бы развернуть установку в кластере k8s. Я застрял с конфигурацией входа. вход.yml:

Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  имя: dev-вход
  аннотации:
    nginx.ingress.kubernetes.io/use-regex: «истина»

спецификация:
  правила:
    - хост: demo.com
      http:
        пути:
          - тип_пути: префикс
            дорожка: "/"
            серверная часть:
              оказание услуг:
                имя: интерфейс-сервис
                порт:
                  номер: 80

          - тип_пути: префикс
            путь: "/apiv1/"
            серверная часть:
              оказание услуг:
                имя: API-сервис-v1
                порт:
                  номер: 80

          - тип_пути: префикс
            путь: "/apiv2/"
            серверная часть:
              оказание услуг:
                имя: API-сервис-v2
                порт:
                  номер: 80

Путь "/" работает нормально. Но пути "/apiv1/" и "/apiv2/" не работают.

Пожалуйста помоги.

Спасибо!

Рейтинг:0
флаг us

Вход просто перенаправит весь путь к сервису.

Например. твой API-сервис-v1 будет поражен URL-адресами, такими как https://yourhost/apiv1/asdfq

Если вы хотите, чтобы вход изменил путь, используемый для обращения к службе, вам нужно указать ему переписать, как описано в: https://kubernetes.github.io/ingress-nginx/examples/rewrite/

Изменять дорожка путей API-сервиса к /apiv1(/|$)(.*) и /apiv2(/|$)(.*) соответственно.

Затем добавьте nginx.ingress.kubernetes.io/rewrite-target: /api$1$2 аннотация.

К сожалению, это также означает, что ваш / должен быть в другом входе, иначе запросы для внешнего интерфейса также будут переписаны, чтобы попасть /апи/ в вашем frontend-сервисе.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.