Использование 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.
Запустите следующую команду, чтобы добавить аннотацию к развернутому сервису, которая обеспечит использование TLS-связи:
kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/app-protocols='{"https":"HTTPS"}'Добавьте дополнительную аннотацию к контроллеру сервиса кластера, чтобы настроить проверку работоспособности для вашей организации.
Для этого шага можно использовать BackendConfig CRD.
Скопируйте и сохраните следующие данные 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, чтобы оно соответствовало контекстному пути, который был указан в процессе развертывания.Создайте объект BackendConfig, используя следующую команду:
kubectl apply -f backendconfig.yamlСопроводите сервис входящего контроллера уровня кластера следующей аннотацией:
kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/backend-config='{"default": "my-backendconfig"}'Это гарантирует, что ранее созданная проверка работоспособности используется балансировщиком нагрузки, развернутым входящим контроллером GKE.
Создание входного объекта Ingress
Теперь, когда аннотации добавлены к сервису входящего контроллера уровня кластера, создайте объект Ingress, выполнив следующие шаги:
Откройте шаблон, включенный в папку
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Замените следующие значения:
certificateName— укажите имя вновь загруженного сертификата.deploymentFQDN— укажите полное доменное имя, которое было задано при развертывании.namespace— Укажите пространство имен, в котором вы развернули ArcGIS Enterprise on Kubernetes.context— укажите контекст, который был указан в процессе развертывания.
Сохраните файл на своей рабочей станции клиента.
Например,
ingress.yaml.Создайте входящий проект, сделав одно из перечисленного:
Примените входящие данные 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>