Использование с Ingress

Содержание

Использование с Ingress#

Вы можете использовать Global Server через прокси-сервер, поднятый подсистемой Ingress кластера Kubernetes.

В основе такой подсистемы лежит Ingress-контроллер, который поставляется отдельно от Kubernetes или gs-ctk.

Обложка

Схема отображает типичную схему, которая может отличаться для выбранного вами Ingress-контроллера. Пользователи при подключении к кластеру распределяются балансировщиком нагрузки на нодах кластера на один из подов с прокси-сервером контроллера (на уровне протокола TCP). Тот в свою очередь распределяет запросы на нужные сервисы на уровне протокола HTTP(S) на основе заголовка Host HTTP и пути ресурса (работа Global гарантируется лишь на отдельном домене/IP-адресе, поэтому используется только поле Host). Запросы к Global ERP дополнительно распределяются внутренним HAProxy, тесно связанным с работой серверов.

Чтобы начать использовать Ingress, выберите и установите Ingress-контроллер (рекомедуем ingress-nginx), укажите при настройке значений для книги 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 (или пропустите поле):
Введите TLS-секрет Ingress: my-tls-secret
apiVersion: global-system.ru/v1
kind: GlobalConfiguration
spec:
  resgroups:
  - resbooks:
    - name: haproxy
      type: haproxy
      service:
        annotations:
          ingress.appscode.com/default-timeout: '{"connect": "28800s"}'
          haproxy-ingress.github.io/timeout-connect: "28800s"
        host: globalerp.example.ru
        ingress_class: nginx
        type: ingress
        ingress_tls_secret: my-tls-secret
      haproxy_tls_secret: ""
      ...

Предупреждение

Обратите внимание, что для книги ресурсов haproxy можно указать haproxy_tls_secret. Этот параметр не стоит указывать, если вы используете Ingress, так как в таком случае Ingress ответственен за терминирование TLS. Используйте ingress_tls_secret.

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