Использование с Ingress
Contents
Использование с Ingress#
Вы можете использовать Global Server через прокси-сервер, поднятый подсистемой Ingress кластера Kubernetes.
В основе такой подсистемы лежит Ingress-контроллер, который поставляется отдельно от Kubernetes или gs-ctk.
Схема отображает типичную схему, которая может отличаться для выбранного вами Ingress-контроллера. Пользователи при подключении к кластеру распределяются балансировщиком нагрузки на нодах кластера на один из подов с прокси-сервером контроллера (на уровне протокола TCP). Тот в свою очередь распределяет запросы на нужные сервисы на уровне протокола HTTP(S) на основе заголовка Host HTTP и пути ресурса (работа Global гарантируется лишь на отдельном домене/IP-адресе, поэтому используется только поле Host). Запросы к Global ERP дополнительно распределяются внутренним HAProxy, тесно связанным с работой серверов.
Чтобы начать использовать Ingress, выберите и установите Ingress-контроллер, укажите при настройке значений группы ресурсов для книги HAProxy:
Использовать Ingress?[да,нет]:да
Затем введите настройки для ресурса Ingress:
Введите класс Ingress:nginx
Введите хост Ingress:globalerp.example.ru
Введите дополнительную аннотацию Ingress (или пропустите поле): ingress.appscode.com/default-timeout: '{"connect": "28800s"}'
Введите дополнительную аннотацию Ingress (или пропустите поле): haproxy-ingress.github.io/timeout-connect: "28800s"
Введите дополнительную аннотацию Ingress (или пропустите поле):
Название используемого класса Ingress должно быть ясно из документации и настроек Ingress-контроллера.
Хост соответствует полю Host в протоколе HTTP. По нему прокси-сервер определяет, к какой службе запрашивается подключения. Если указывается пустое значение, то доступ осуществляется с любого домена.
Аннотации указываются те, что нужны для полной настройки вашего Ingress-контроллера. Если вы не знаете нужны ли вам дополнительные аннотации, то пропускайте поле. Вам скорее всего не нужно его заполнять.
Аналогично заполняются и Ingress-ресурсы для панелей администратора Grafana и RabbitMQ.
Таймауты#
Пользователи при работе с GlobalERP могут встретить сообщение о разрыве соединения. Помимо обычных причин (физический разрыв соединения, перебои сети, переход оборудования в энергосберегающий режим), такое сообщение может возникать в результате закрытия прокси-сервером соединения из-за таймаутов.
У многих Ingress-контроллеров есть аннотации, которые позволяют указать таймауты. Из коробки уже указаны аннотации для следующих контроллеров:
ingress-nginx (предлагается в документации VK Cloud)
NGINX Ingress Controller (предлагается в документации Yandex Cloud)
Voyager
haproxy-ingress
Вот пример аннотаций, используемых в ingress-nginx:
nginx.ingress.kubernetes.io/proxy-connect-timeout: "28800"
nginx.ingress.kubernetes.io/proxy-send-timeout: "28800"
nginx.ingress.kubernetes.io/proxy-read-timeout: "28800"
Вы можете переопределить эти настройки указав их при конфигурации группы ресурсов.
Обращаем внимание, что не все Ingress-контроллеры позволяют изменить таймауты при помощи аннотаций. В таком случае, необходимо изменить таймауты при помощи конфигурации контроллера, или отказаться от использования Ingress для GlobalERP, или начать использовать другой контроллер.