Использование балансировки нагрузки приложения на Amazon Elastic Kubernetes Service

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

Примечание:

Этот рабочий процесс должен быть выполнен до создания организации ArcGIS Enterprise. К ArcGIS Enterprise Manager можно получить доступ из браузера после развертывания и настройки средства балансировки нагрузки.

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

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

  • Необходимо подготовить кластер Kubernetes в Amazon EKS, включая развертывание контроллера балансировки нагрузки AWS.
  • На вашем клиентском компьютере должен быть установлен AWS CLI. Убедитесь, что можете пройти аутентификацию с помощью CLI для учетной записи, в которой существует ваш кластер EKS.
  • На клиентском компьютере. должен быть установлен Kubectl. Убедитесь, что вы можете подключаться и выдавать команды к серверу API Kubernetes, который связан с созданным вами кластером.
  • Ваш кластер EKS, VPC и связанные с ним ресурсы соответствуют требованиям, изложенным в разделе Балансировка нагрузки приложений на AmazonEKS.
  • Необходимо иметь сертификат TLS. Вы можете использовать Amazon Certificate Manager (ACM) для создания или импорта этого сертификата.

Реализация входящего контроллера на уровне кластера

Чтобы внедрить входящий контроллер на уровне кластера для маршрутизации трафика к развертыванию ArcGIS Enterprise на Amazon EKS, выполните следующие шаги:

  1. Получите имя ресурса Amazon (Amazon Resource Name; ARN), связанное с вашим сертификатом ACM, используя один из методов, описанных в документации AWS.
  2. Откройте шаблон, включенный в папку layer-7-templates, или скопируйте следующий пример в файл на своем клиентском компьютере:
    
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      namespace: <deploymentNamespace>
      name: arcgis-enterprise-ingress
      annotations:
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/target-type: ip
        alb.ingress.kubernetes.io/backend-protocol: HTTPS
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
        alb.ingress.kubernetes.io/healthcheck-port: '443'
        alb.ingress.kubernetes.io/healthcheck-protocol: HTTPS
        alb.ingress.kubernetes.io/healthcheck-path: /<context>/admin
        alb.ingress.kubernetes.io/success-codes: '200-399'
        alb.ingress.kubernetes.io/certificate-arn: <ACMCertificateARN>
        alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=600
        #alb.ingress.kubernetes.io/inbound-cidrs: <inboundCIDRRange>
        #alb.ingress.kubernetes.io/security-groups: <securityGroupID1>,<securityGroupID2>
      labels:
        id: custom-ingress-resource
    spec:
      ingressClassName: alb
      rules:
      - host: <deploymentFQDN>
        http:
          paths:
          - path: /<context>
            pathType: Prefix
            backend:
              service:
                name: arcgis-ingress-nginx
                port:
                  number: 443

    Дополнительную информацию о некоторых аннотациях см. далее в разделе Описания аннотаций.

  3. Замените следующие значения:
    • alb.ingress.kubernetes.io/certificate-arn — укажите Amazon Resource Name, полученное на шаге 1.
    • alb.ingress.kubernetes.io/inbound-cidrs — если вы хотите разрешить входящий трафик с определенных диапазонов IP-адресов CIDR, раскомментируйте эту строку и укажите диапазон. Если в аннотации alb.ingress.kubernetes.io/security-groups указаны группы безопасности, эта аннотация игнорируется.
    • alb.ingress.kubernetes.io/security-groups — если вы хотите прикрепить существующие группы безопасности к балансировщику нагрузки приложений, раскомментируйте эту строку и укажите идентификаторы групп безопасности.
    • namespace — укажите пространство имен, в котором вы развернули ArcGIS Enterprise on Kubernetes.
    • deploymentFQDN — укажите полное доменное имя, которое было указано при первоначальном развертывании.
    • context — укажите контекст, который был указан в процессе развертывания.
      Примечание:

      Это значение дважды появляется и должно быть заменено в обоих случаях. Убедитесь, что обновлено значение в аннотации alb.ingress.kubernetes.io/healthcheck-path.

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

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

  5. Создайте входящий проект, сделав одно из перечисленного:
    • Примените входящие данные YAML к кластеру, используя следующую команду:
      kubectl apply -f ingress.yaml
      
    • При запуске скрипта развертывания в автоматическом режиме укажите в CLUSTER_INGRESS_CONTROLLER_YAML_FILENAME расположение входящего файла YAML.

После завершения этого рабочего процесса будет создан входной объект с именем arcgis-enterprise-ingress. Если вы впервые используете входящий контроллер для управления внешним доступом к кластеру EKS, то должны увидеть балансировщик нагрузки приложения (Application Load Balancer), который находится в состоянии инициализации в учетной записи AWS, в которой вы в данный момент работаете. Контроллер балансировки нагрузки AWS предоставит этот балансировщик нагрузки приложения и вспомогательные компоненты в соответствии с данными YAML, которые были применены к пространству имен. Как только балансировщик нагрузки перейдет в активное состояние, развертывание ArcGIS Enterprise должно быть доступно, и может быть создана запись CNAME DNS, которая перенаправляет клиентов с полного доменного имени, указанного при первоначальном развертывании, на подготовленный балансировщик нагрузки.

Примечание:

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

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

Описания аннотаций

Для получения дополнительной информации о некоторых аннотациях смотрите следующее:

  • alb.ingress.kubernetes.io/scheme: internet-facing — создаст балансировщик нагрузки приложения, доступное через Интернет. Чтобы предоставить доступ к ALB только из вашего VPC, можете в качестве альтернативы использовать аннотацию alb.ingress.kubernetes.io/scheme: internal.
  • alb.ingress.kubernetes.io/target-type: ip — эта аннотация позволит распределять нагрузку трафика напрямую на IP-адреса внутренних модулей.