Исключение с прокси или фильтром в k8s - PullRequest
0 голосов
/ 27 марта 2020

У меня есть основанная на домене архитектура микросервисов, но я хочу обрабатывать исключения более универсальным c способом ... Я хочу использовать сервис-оболочку универсальным c способом, чтобы я мог использовать это для отправки значимых сообщений в апстрим системы ... Я слышал о прокси и фильтрах, но может кто-нибудь подсказать, как реализовать или каким-либо другим способом ... Причина реализации по отдельности в том, что я не хочу изменять каждый вызов конечной точки для кода

1 Ответ

0 голосов
/ 01 апреля 2020

Вы должны заглянуть в Nginx Ingress controller и использовать custom-http-errors .

Включает, какие коды HTTP следует передавать для обработки с директивой error_page

Установка хотя бы одного кода также позволяет proxy_intercept_errors , которые необходимы для обработки error_page.

Пример использования: custom-http-errors: 404,415

Это будет работать при создании ConfigMap для входного контроллера:

apiVersion: v1
kind: ConfigMap
name: nginx-configuration-ext
data:
  custom-http-errors: 502,503,504
  proxy-next-upstream-tries: "2"
  server-tokens: "false"

Также посмотрите это сообщение в блоге .

Другой способ будет добавить Annotations к вашему входу, он поймает нужные вам ошибки и перенаправит его на другой сервис в этом случае nginx-errors-svc

nginx.ingress.kubernetes.io/default-backend: nginx-errors-svc
nginx.ingress.kubernetes.io/custom-http-errors: 404,503
nginx.ingress.kubernetes.io/default-backend: error-pages

Если у вас возникнут проблемы с использованием этого, попробуйте использовать server-snippet , который добавит пользовательскую конфигурацию в блок конфигурации сервера:

nginx.ingress.kubernetes.io/server-snippet: |
      location @custom_503 {
        return 404;
      }
      error_page 503 @custom_503;

Вам следует рассмотреть чтение Пользовательская обработка ошибок с помощью Kubernetes Nginx Ingress Controller и Custom Er Страница для Nginx Ingress Controller .

...