Рейтинг:0

Тайм-аут входящего трафика AWS EKS на любом некорневом пути

флаг fr

Мы настроили ресурс Ingress в нашем кластере EKS с перезаписью из /.* на балансировщике нагрузки на соответствующий URI восходящего потока. Если мы посетим staging.my-domain.com/, мы видим успешный ответ проверки работоспособности, как и ожидалось. Однако любой другой URL-адрес, например. /апи/, приводит к тайм-ауту балансировщика нагрузки. Ниже приведена конфигурация. (SSL пока отключен, пока мы разбираемся). Любая помощь будет оценена по достоинству!

# Контроллер входящего трафика: https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/deploy/installation/
# YAML: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/alb-ingress.md
Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  аннотации:
    kubernetes.io/ingress.class: альб
    alb.ingress.kubernetes.io/scheme: выход в интернет
    внешний-dns.alpha.kubernetes.io/имя хоста: staging.my-domain.com
    nginx.ingress.kubernetes.io/ssl-redirect: «ложь»
    nginx.ingress.kubernetes.io/force-ssl-redirect: «ложь»
    nginx.ingress.kubernetes.io/rewrite-target:/
  имя: nlx-апи
спецификация:
  правила:
  - хост: staging.my-domain.com
    http:
      пути:
      - дорожка: /
        тип пути: префикс
        серверная часть:
          оказание услуг:
            имя: наш-апи
            порт:
              номер: 80
---

апиВерсия: v1
вид: сервис
метаданные:
  имя: наш-апи
спецификация:
  порты:
  - имя: http
    порт: 80
    целевой порт: 8080
  тип: LoadBalancer
  селектор:
    приложение: наш API
Рейтинг:0
флаг id

Похоже на твой Переписать Цель неправильная. Посмотрите на этот общий пример из документация:

Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  аннотации:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  имя: переписать
  пространство имен: по умолчанию
спецификация:
  правила:
  - хост: rewrite.bar.com
    http:
      пути:
      - бэкэнд:
          имя_службы: http-svc
          сервисПорт: 80
        путь: /что-то(/|$)(.*)

В этом определении входа любые символы, захваченные (.*) будет присвоен заполнитель $2, который затем используется в качестве параметра в цель перезаписи аннотация. Например, приведенное выше определение входа приведет к следующей перезаписи:

  • rewrite.bar.com/что-то переписывает на rewrite.bar.com/
  • rewrite.bar.com/что-то/ переписывает на rewrite.bar.com/
  • rewrite.bar.com/что-то/новое переписывает на rewrite.bar.com/новый

В вашей ситуации, если вы попытаетесь получить доступ staging.my-domain.com/, вы переписаны на тот же адрес. Все хорошо. Но вы можете переписать только этот адрес. Вы должны изменить свой манифест следующим образом:

Версия API: networking.k8s.io/v1
вид: Вход
метаданные:
  аннотации:
    kubernetes.io/ingress.class: альб
    alb.ingress.kubernetes.io/scheme: выход в интернет
    внешний-dns.alpha.kubernetes.io/имя хоста: staging.my-domain.com
    nginx.ingress.kubernetes.io/ssl-redirect: «ложь»
    nginx.ingress.kubernetes.io/force-ssl-redirect: «ложь»
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  имя: nlx-апи
спецификация:
  правила:
  - хост: staging.my-domain.com
    http:
      пути:
      - дорожка: /(.*)
        тип пути: префикс
        серверная часть:
          оказание услуг:
            имя: наш-апи
            порт:
              номер: 80

В этой ситуации любые персонажи, захваченные (.*) будет присвоен заполнитель $1(это первая группа захвата), которая затем используется как параметр в цель перезаписи аннотация.

DragonBobZ avatar
флаг fr
Хм, я действительно использовал эту конфигурацию как часть устранения неполадок раньше и только что попробовал еще раз. В нем говорится: «Сбой модели сборки из-за входа: наше пространство имен/наш-API: префиксный путь не должен содержать подстановочные знаки: /(.*)»
Mikołaj Głodziak avatar
флаг id
Попробуйте добавить аннотацию `nginx.ingress.kubernetes.io/use-regex: "true"`. Вы можете прочитать больше [здесь] (https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/#regular-expression-support). Вы также можете посмотреть описание [этой ошибки](https://github.com/kubernetes/kubernetes/issues/41881). Похоже, до сих пор не исправили.

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

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