Skip to main content

Utilizar Google Kubernetes Engine Ingress para equilibradores de carga de aplicaciones

Puede utilizar un controlador de entrada a nivel de clúster para enrutar el tráfico a una implementación de ArcGIS Enterprise en Google Kubernetes Engine (GKE). Para obtener más información, consulte Controladores de entrada a nivel de clúster.

El equilibrador de carga de aplicaciones clásico creado por este flujo de trabajo cerrará tanto las conexiones WebSocket activas como las inactivas una vez que haya expirado el tiempo de espera del servicio de backend. Esto puede interrumpir las conexiones de los clientes que utilizan funciones que requieren conexiones WebSocket, como los servicios de administración de flujos de trabajo o los servicios de notebook. Aunque las conexiones WebSocket interrumpidas pueden restablecerse, los errores de tiempo de espera que devuelven las aplicaciones cliente pueden interrumpir los flujos de trabajo de los usuarios. Consulte la documentación de Google Cloud Platform para obtener más información al respecto.

Antes de crear un controlador de entrada a nivel de clúster, evalúe si las ventajas de esta opción compensan las posibles interrupciones en las conexiones WebSocket de su organización. Si es importante mantener las conexiones WebSocket abiertas, cree un servicio LoadBalancer al ejecutar la secuencia de comandos de implementación de ArcGIS Enterprise en Kubernetes, en lugar de utilizar un controlador de entrada a nivel de clúster.

Nota:

Complete este flujo de trabajo antes de crear una organización de ArcGIS Enterprise. Podrá acceder a ArcGIS Enterprise Manager desde un navegador una vez que haya implementado y configurado un equilibrador de carga.

Requisitos previos

Revise los requisitos previos generales y asegúrese de que se cumplen los siguientes requisitos previos específicos de GKE:

  • Debe haber creado un clúster en GKE.

  • El complemento HTTP Load Balancing debe estar activado en su clúster.

  • Kubectl debe estar instalado en su máquina cliente. Asegúrese de que puede conectarse y emitir comandos al servidor API de Kubernetes asociado al clúster creado.

  • El CLI de Google Cloud Platform debe estar instalado en su máquina cliente. Asegúrese de que puede autenticarse en el proyecto en el que existe su clúster de GKE.

  • Debe haber creado un certificado autogestionado dentro de su proyecto de Google Cloud. Una vez que el certificado exista en su proyecto, tome nota de su nombre. Alternativamente, este certificado puede especificarse dentro de un Kubernetes Secret para su uso posterior, que deberá crearse dentro del espacio de nombres de implementación.

Agregar anotaciones al servicio de controlador de entrada en el clúster

Agregue anotaciones al servicio de controlador de entrada en el clúster tras la implementación inicial de ArcGIS Enterprise en Google Kubernetes Engine.

  1. Ejecute el siguiente comando para agregar una anotación al servicio implementado que garantizará el uso de la comunicación TLS:

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

  2. Agregue una anotación adicional al servicio de controlador en clúster para configurar una comprobación de estado para su organización.

Puede utilizar BackendConfig CRD para este paso.

  1. Copie y guarde los siguientes datos YAML en un editor de texto en su estación de trabajo cliente.

    En este ejemplo, el archivo se guarda como 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
    
    Nota:

    Se pueden agregar parámetros adicionales de comprobación de estado al objeto YAML BackendConfig para adaptarse a las necesidades de la organización. Para conocer los parámetros adicionales de comprobación de estado que pueden agregarse a la especificación BackendConfig, consulte la documentación de Google Cloud. Deberá actualizar el valor de context en el campo requestPath para que coincida con la ruta de contexto que se especificó durante la implementación.

  2. Cree el objeto BackendConfig mediante el siguiente comando:

    kubectl apply -f backendconfig.yaml

  3. Anote el servicio de controlador de entrada en el clúster con la siguiente anotación:

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

    Esto garantiza que el equilibrador de carga que implemente el controlador de entrada de GKE utilice la comprobación de estado creada anteriormente.

Crear el objeto Ingress

Una vez agregadas las anotaciones al servicio del controlador de entrada en el clúster, cree el objeto Ingress mediante los siguientes pasos:

  1. Abra la plantilla incluida en la carpeta layer-7-templates o copie el siguiente ejemplo en un archivo de su equipo cliente:

    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. Sustituya los siguientes valores:

    • certificateName: proporcione el nombre del nuevo certificado cargado.

    • deploymentFQDN: proporcione el nombre de dominio completo que se especificó durante la implementación.

    • namespace: proporcione el espacio de nombres en el que ha implementado ArcGIS Enterprise on Kubernetes.

    • context: proporcione el contexto que se especificó durante la implementación.

  3. Guarde el archivo en su estación de trabajo cliente.

    Por ejemplo, ingress.yaml.

  4. Cree el objeto Ingress realizando una de las siguientes acciones:

    • Aplique los datos YAML de Ingress a su clúster utilizando el siguiente comando:

      kubectl apply -f ingress.yaml

    • Al ejecutar el script de implementación de forma silenciosa, defina CLUSTER_INGRESS_CONTROLLER_YAML_FILENAME en la ubicación del archivo YAML de Ingress.

Una vez completado este flujo de trabajo, se crea un objeto Ingress llamado arcgis-enterprise-ingress. Al crear este objeto Ingress, el GKE Ingress Controller aprovisiona un equilibrador de carga de aplicaciones en su proyecto de Google Cloud. También crea un grupo de extremos de red asociado que contiene la dirección IP del pod del controlador de entrada NGINX en el clúster. Podrá acceder a su implementación de ArcGIS Enterprise una vez creado el equilibrador de carga. A continuación, podrá crear un registro A que redirija a los clientes desde el nombre de dominio completo especificado durante la implementación inicial al equilibrador de carga provisionado.

Nota:

Puede que sea necesario actualizar la implementación de arcgis-ingress-controller para establecer una conexión adecuada a través del Ingress recién creado. Si recibe un error al acceder a ArcGIS Enterprise Manager después de crear la entrada, intente ejecutar lo siguiente:

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