Использование с 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, или начать использовать другой контроллер.