Как отключить перехват ошибок Ingress в настройке Tectonic kubernetes

У меня есть пара бэкэндов NodeJS, работающих как модули в настройке Kubernetes, с управляемым Ingress nginx поверх него.

Эти бэкэнды являются серверами API и могут возвращать 400, 404 или 500 ответов во время обычной работы. Эти ответы будут предоставлять значимые данные для клиента; кроме кода состояния, ответ имеет сериализованную JSON-структуру в теле, сообщающую о причине ошибки или предлагающую решение.

Однако Ingress перехватит эти сообщения об ошибках и вернет страницу с ошибкой. Таким образом, клиент не получает информацию, которую служба пыталась предоставить.

В репозитории kubernetes-contrib есть закрытый тикет, предполагающий, что теперь можно отключить перехват ошибок: https://github.com/kubernetes/contrib/issues/897. Будучи новичком в kubernetes/ingress, я не могу понять, как применить эту конфигурацию в моей ситуации.

Для справки, это вывод kubectl get ingress <ingress-name>: (отредактированные имена и IP-адреса)

Name:             ingress-name-redacted
Namespace:        default
Address:          127.0.0.1
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                                Path  Backends
  ----                                ----  --------
  public.service.example.com
                                      /   service-name:80 (<none>)
Annotations:
  rewrite-target:         /
  service-upstream:       true
  use-port-in-redirects:  true
Events:                   <none>

1 ответ

Решение

Я решил это на Tectonic 1.7.9-tectonic.4.

В веб-интерфейсе Tectonic перейдите в раздел "Рабочие нагрузки -> Карты конфигурации" и выполните фильтрацию по пространству имен tectonic-system.

На показанных картах конфигурации вы должны увидеть одну из них с именем "tectonic-custom-error".

Откройте его и перейдите в редактор YAML.

В поле данных у вас должна быть такая запись:

custom-http-errors: '404, 500, 502, 503'

который определяет, какие HTTP-ответы будут перехвачены и отображены на пользовательской странице ошибок Tectonic.

Если вам не нужны некоторые из них, просто удалите их или очистите их все.

Это должно вступить в силу, как только вы сохраните обновленную карту конфигурации.

Конечно, вы можете сделать то же самое из командной строки с помощью kubectl edit:

$> kubectl edit cm tectonic-custom-error --namespace = tectonic-system

Надеюсь это поможет:)

Другие вопросы по тегам