将 Google Kubernetes Engine Ingress 用于应用程序负载均衡器

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

注:

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

先决条件

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

  • 您必须已在 GKE 中创建集群
  • 必须在您的集群上启用 HTTP 负载平衡插件。
  • 必须在您的客户端计算机上安装 Kubectl。 确保您可以连接到与已创建的集群相关联的 Kubernetes API 服务器并向其发出命令。
  • 必须在您的客户端计算机上安装 Google Cloud Platform CLI。 确保您可以对 GKE 集群所在的工程进行身份验证。
  • 您必须已在 Google Cloud 工程中创建了自我管理的证书。 如果该证书存在于您的工程内,请记下其名称。 或者,可以在 Kubernetes 密钥内指定此证书以供以后使用,需要在部署命名空间中创建该证书。

向集群内入口控制器服务添加注记

在 Google Kubernetes Engine 上初始部署 ArcGIS Enterprise 后,需要向集群内入口控制器服务添加注记。

  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:
        healthCheck:
          type: HTTPS
          requestPath: /<context>/admin
          port: 443
      

      注:

      可以将其他运行状况检查参数添加至 BackendConfig 对象 YAML 以满足组织需求。 要了解可添加至 BackendConfig 规范的其他运行状况检查参数,请参阅 Google Cloud 文档。 您将需要更新 requestPath 字段内 context 的值以匹配在部署期间指定的上下文路径。

    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. 将以下 YAML 数据复制到您的客户端计算机上的文件中:
    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>"
    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. 将此 YAML 数据保存到客户端计算机上的文件中(例如,作为名为 ingress.yaml 的文件),并使用以下命令将其应用于集群:
    kubectl apply -f ingress.yaml
    

完成此工作流后,将创建一个名为 arcgis-enterprise-ingress 的 Ingress 对象。 创建此 Ingress 对象后,GKE Ingress Controller 将在您的 Google Cloud 工程中配置应用程序负载均衡器。 将创建相关联的网络端点组,其中将包含后端集群内 NGINX 入口控制器 Pod IP 地址。 创建负载均衡器后,应该可以访问 ArcGIS Enterprise 部署,并且可以创建一条 A 记录,该记录可将客户端从初始部署期间指定的完全限定域名引导至已配置的负载均衡器。

注:

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

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