Skip to main content

Использование Google Kubernetes Engine Ingress для балансировки нагрузки приложений

Вы можете использовать входящий контроллер на уровне кластера для маршрутизации трафика к корпоративному развертыванию ArcGIS Enterprise в Google Kubernetes Engine (GKE). Дополнительные сведения см. в разделе Входящие контроллеры на уровне кластера.

Классический балансировщик нагрузки приложений, созданный с помощью этого рабочего процесса, будет завершать как активные, так и нерабочие соединения WebSocket после истечения значения времени ожидания серверного сервиса. Это может прервать соединения от клиентов, использующих возможности, требующие соединений WebSocket, такие как сервисы управления рабочими процессами или сервисы блокнотов. Хотя завершенные соединения WebSocket могут быть восстановлены, ошибки времени ожидания, возвращаемые клиентскими приложениями, могут прервать рабочие процессы пользователя. См. документацию Google Cloud Platform для получения дополнительной информации.

Перед созданием контроллера входящего трафика уровня кластера оцените, перевешивают ли преимущества этой опции потенциальные нарушения соединений WebSocket для вашей организации. Если важно поддерживать открытые соединения WebSocket, создайте сервис LoadBalancer, когда вы выполняете запуск скрипта развертывания для ArcGIS Enterprise on Kubernetes вместо использования контроллера входящего трафика уровня кластера.

Примечание:

Завершите этот рабочий процесс до создания организации ArcGIS Enterprise. Вы можете открыть ArcGIS Enterprise Manager в браузере после того, как развернете и настроите балансировщик нагрузки.

Предварительные условия

Ознакомьтесь с предварительными условиями и убедитесь, что выполнены следующие требования, специфичные для GKE:

  • Нужно создать кластер в GKE.

  • В вашем кластере должно быть включено дополнение для балансировки нагрузки HTTP.

  • На клиентском компьютере. должен быть установлен Kubectl. Убедитесь, что вы можете подключаться и выдавать команды к серверу API Kubernetes, который связан с созданным вами кластером.

  • На вашем клиентском компьютере должен быть установлен интерфейс командной строки Google Cloud Platform CLI. Убедитесь, что вы можете пройти аутентификацию в проекте, в котором существует кластер GKE.

  • Вы должны создать самоуправляемый сертификат в рамках своего облачного проекта Google. Как только сертификат появится в вашем проекте, обратите внимание на его имя. Либо этот сертификат может быть указан в секрете Kubernetes для последующего использования, который необходимо будет создать в пространстве имен развертывания.

Добавьте аннотации к сервису входящего контроллера уровня кластера

Добавьте аннотации к сервису входящего контроллера на уровне кластера после первоначального развертывания ArcGIS Enterprise в Google Kubernetes Engine.

  1. Запустите следующую команду, чтобы добавить аннотацию к развернутому сервису, которая обеспечит использование TLS-связи:

    kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/app-protocols='{"https":"HTTPS"}'

  2. Добавьте дополнительную аннотацию к контроллеру сервиса кластера, чтобы настроить проверку работоспособности для вашей организации.

Для этого шага можно использовать BackendConfig CRD.

  1. Скопируйте и сохраните следующие данные YAML в текстовом редакторе на вашей клиентской рабочей станции.

    В этом примере файл сохраняется как backendconfig.yaml.

    apiVersion: cloud.google.com/v1
    kind: BackendConfig
    metadata:
      name: my-backendconfig
      namespace: <deploymentNamespace>
    spec:
      timeoutSec: 600
      healthCheck:
        type: HTTPS
        requestPath: /<context>/admin
        port: 443
    
    Примечание:

    Дополнительные параметры проверки работоспособности могут быть добавлены в объект YAML BackendConfig в соответствии с потребностями организации. Чтобы ознакомиться с дополнительными параметрами проверки работоспособности, которые можно добавить в спецификацию конфигурации BackendConfig, ознакомьтесь с документацией Google Cloud. Вам потребуется обновить значение для context в поле requestPath, чтобы оно соответствовало контекстному пути, который был указан в процессе развертывания.

  2. Создайте объект BackendConfig, используя следующую команду:

    kubectl apply -f backendconfig.yaml

  3. Сопроводите сервис входящего контроллера уровня кластера следующей аннотацией:

    kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/backend-config='{"default": "my-backendconfig"}'

    Это гарантирует, что ранее созданная проверка работоспособности используется балансировщиком нагрузки, развернутым входящим контроллером GKE.

Создание входного объекта Ingress

Теперь, когда аннотации добавлены к сервису входящего контроллера уровня кластера, создайте объект Ingress, выполнив следующие шаги:

  1. Откройте шаблон, включенный в папку layer-7-templates, или скопируйте следующий пример в файл на своем клиентском компьютере:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: arcgis-enterprise-ingress
      namespace: <deploymentNamespace>
      annotations:
        kubernetes.io/ingress.class: "gce"
        kubernetes.io/ingress.allow-http: "false"
        ingress.gcp.kubernetes.io/pre-shared-cert: "<certificateName>"
      labels:
        id: custom-ingress-resource
    spec:
      defaultBackend:
        service:
          name: arcgis-ingress-nginx
          port:
            number: 443
      rules:
      - host: <deploymentFQDN>
        http:
          paths:
          - path: /<context>
            pathType: Prefix
            backend:
              service:
                name: arcgis-ingress-nginx
                port:
                  number: 443
    
  2. Замените следующие значения:

    • certificateName — укажите имя вновь загруженного сертификата.

    • deploymentFQDN — укажите полное доменное имя, которое было задано при развертывании.

    • namespace — Укажите пространство имен, в котором вы развернули ArcGIS Enterprise on Kubernetes.

    • context — укажите контекст, который был указан в процессе развертывания.

  3. Сохраните файл на своей рабочей станции клиента.

    Например, ingress.yaml.

  4. Создайте входящий проект, сделав одно из перечисленного:

    • Примените входящие данные YAML к кластеру, используя следующую команду:

      kubectl apply -f ingress.yaml

    • При запуске скрипта развертывания в автоматическом режиме установите для CLUSTER_INGRESS_CONTROLLER_YAML_FILENAME местоположение файла Ingress YAML.

После завершения этого рабочего процесса будет создан входной объект с именем arcgis-enterprise-ingress. После создания этого объекта Ingress входящий контроллер GKE подготавливает балансировщик нагрузки приложений в вашем проекте Google Cloud. Он также создаст связанную группу сетевых конечных точек, которая содержит IP-адрес модуля входящего контроллера NGINX внутри кластера. Ваше корпоративное развертывание ArcGIS Enterprise станет доступным после создания балансировщика нагрузки. Затем вы можете создать A-запись, которая направляет клиентов от полного доменного имени, указанного во время первоначального развертывания, к подготовленному балансировщику нагрузки.

Примечание:

Возможно, потребуется обновить развертывание arcgis-ingress-controller, чтобы установить правильное подключение через вновь созданный Ingress. Если при доступе к ArcGIS Enterprise Manager после создания входящего трафика возникает ошибка, попробуйте выполнить следующее:

kubectl rollout restart deployment/arcgis-ingress-controller -n <deploymentNamespace>