在 Amazon Elastic Kubernetes Service 上使用应用程序负载平衡

集群级入口控制器可用于将流量路由到 Amazon Elastic Kubernetes Service (EKS) 上的 ArcGIS Enterprise 部署。 有关详细信息,请参阅集群级入口控制器

注:

应在配置 ArcGIS Enterprise 组织之前执行此工作流。 部署并配置负载均衡器后,可以通过浏览器访问 ArcGIS Enterprise Manager

先决条件

查看常规先决条件并确保满足以下 EKS 特定先决条件:

  • 您必须已在 Amazon EKS 中准备好 Kubernetes 集群,包括部署 AWS 负载均衡器控制器。
  • 必须在您的客户端计算机上安装 AWS CLI。 确保您可以从 CLI 对 EKS 集群所在的帐户进行身份验证。
  • 必须在您的客户端计算机上安装 Kubectl。 确保您可以连接到与您已创建的集群相关联的 Kubernetes API 服务器并向其发出命令。
  • 您的 EKS 集群、VPC 和关联资源满足 Amazon EKS 上的应用程序负载平衡中概述的要求。
  • 您必须拥有 TLS 证书。 可以使用 Amazon Certificate Manager (ACM) 以创建导入此证书。

实施集群级入口控制器

要实施集群级入口控制器以将流量路由到 Amazon EKS 上的 ArcGIS Enterprise 部署,请完成以下步骤:

  1. 使用 AWS 文档中概述的方法之一检索与您的 ACM 证书相关联的 Amazon 资源名称 (ARN)。
  2. 将以下 YAML 数据复制到您的客户端计算机上的文件中:
    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>
    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 - 提供在步骤 1 中检索到的 Amazon 资源名称。
    • namespace - 提供您已在其中部署 ArcGIS Enterprise on Kubernetes 的命名空间。
    • deploymentFQDN - 提供在初始部署期间指定的完全限定域名。
    • context - 提供在部署期间指定的上下文。
      注:

      该值将在 YAML 数据中出现两次,并且应该在这两种情况下进行替换。 确保更新 alb.ingress.kubernetes.io/healthcheck-path 注记内的值。

  4. 将此 YAML 数据保存到您的客户端计算机上的文件中。

    例如,ingress.yaml

  5. 可以使用以下命令将 YAML 数据应用于您的集群:
    kubectl apply -f ingress.yaml
    

完成此工作流后,将创建一个名为 arcgis-enterprise-ingress 的 Ingress 对象。 如果这是您首次使用入口控制器来管理对 EKS 集群的外部访问,您应该会看到您目前所使用 AWS 帐户中处于预配置状态的应用程序负载均衡器。 AWS 负载均衡器控制器将根据应用于命名空间的 YAML 数据来配置此应用程序负载均衡器和辅助组件。 当负载均衡器进入活动状态后,即可访问 ArcGIS Enterprise 部署,并且可以创建一条 CNAME DNS 记录,该记录可将客户端从初始部署期间指定的完全限定域名引导至已配置的负载均衡器。

注:

可能需要刷新 arcgis-ingress-controller 部署,才能通过新创建的 Ingress 建立正确的连接。 在创建该入口后,如果您在访问 ArcGIS Enterprise Manager 时收到错误,请尝试运行以下命令:

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

注记说明

有关某些注记的详细信息,请参阅以下内容:

  • alb.ingress.kubernetes.io/scheme: internet-facing - 将创建一个可通过 Internet 访问的应用程序负载均衡器。 要仅从您的 VPC 内公开 ALB,您也可以使用注记 alb.ingress.kubernetes.io/scheme: internal
  • alb.ingress.kubernetes.io/target-type: ip - 此注记允许直接将流量负载均衡到后端 Pod IP 地址。