Utiliser Google Kubernetes Engine Ingress pour les équilibreurs de charge Application Load Balancer

Un contrôleur Ingress au niveau du cluster permet d’acheminer le trafic vers un déploiement ArcGIS Enterprise sur Google Kubernetes Engine (GKE). Pour plus d’informations, reportez-vous à la rubrique Contrôleurs Ingress au niveau du cluster.

Remarque :

Ce processus doit être exécuté avant de configurer une organisation ArcGIS Enterprise. ArcGIS Enterprise Manager est accessible à partir d’un navigateur une fois qu’un équilibreur de charge a été déployé et configuré.

Conditions requises

Examinez les conditions requises et assurez-vous que les conditions préalables propres à GKE suivantes sont remplies :

  • Vous devez avoir créé un cluster dans GKE.
  • Le complément d’équilibrage de la charge HTTP Load Balancing doit être activé sur votre cluster.
  • Kubectl doit être installé sur votre machine cliente. Vérifiez que vous pouvez vous connecter au serveur d’API Kubernetes qui est associé au cluster créé et émettre des commandes.
  • L’interface de ligne de commande Google Cloud Platform doit être installée sur votre machine cliente. Vérifiez que vous pouvez vous authentifier au projet dans lequel se trouve votre cluster GKE.
  • Vous devez avoir créé un certificat auto-géré dans votre projet Google Cloud. Une fois le certificat présent dans votre projet, notez son nom. Vous pouvez également spécifier ce certificat dans un secret de Kubernetes spécifique pour l’utiliser ultérieurement. Il devra être créé dans l’espace de noms du déploiement.

Ajouter des annotations au service de contrôleur Ingress au sein du cluster

Ajoutez des annotations au service de contrôleur Ingress au sein du cluster à la suite du déploiement initial de ArcGIS Enterprise sur Google Kubernetes Engine.

  1. Exécutez la commande suivante pour ajouter une annotation au service déployé qui s’assurera que la communication TLS est utilisée :
    kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/app-protocols='{"https":"HTTPS"}'
    
  2. Ajoutez une annotation supplémentaire au service de contrôleur au sein du cluster en vue de configurer un contrôle d’intégrité pour votre organisation.

    Cette opération peut être réalisée à l’aide d’une CRD BackendConfig.

    1. Copiez et enregistrez les données YAML suivantes dans un éditeur de texte sur votre poste de travail client.

      Dans cet exemple, le fichier est enregistré en tant que backendconfig.yaml.

      apiVersion: cloud.google.com/v1
      kind: BackendConfig
      metadata:
        name: my-backendconfig
        namespace: <deploymentNamespace>
      spec:
        healthCheck:
          type: HTTPS
          requestPath: /<context>/admin
          port: 443
      

      Remarque :

      Selon les besoins de l’organisation, vous pouvez ajouter des paramètres de contrôle d’intégrité supplémentaires dans les données YAML de l’objet BackendConfig. Pour comprendre les paramètres de contrôle d’intégrité supplémentaires qui peuvent être ajoutés à la spécification BackendConfig, consultez la documentation Google Cloud. Vous devez mettre à jour la valeur de context dans le champ requestPath pour qu’elle corresponde au chemin de contexte spécifié au cours du déploiement.

    2. Créez l’objet BackendConfig à l’aide de la commande suivante :
      kubectl apply -f backendconfig.yaml
      
    3. Annotez le service de contrôleur Ingress au sein du cluster comme suit :
      kubectl annotate svc arcgis-ingress-nginx -n <namespace> cloud.google.com/backend-config='{"default": "my-backendconfig"}'
      
      Cette opération permet de s’assurer que le contrôle d’intégrité précédemment créé est utilisé par l’équilibreur de charge qui va être déployé par le contrôleur Ingress GKE.

Créer l’objet Ingress (entrée réseau)

Maintenant que les annotations ont été ajoutées au service de contrôleur Ingress au sein du cluster, créez l’objet Ingress à l’aide des étapes suivantes :

  1. Copiez les données YAML suivantes dans un fichier sur votre machine 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>"
    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. Remplacez les valeurs suivantes :
    • certificateName : fournissez le nom du certificat récemment chargé.
    • deploymentFQDN : fournissez le nom de domaine complet qui a été spécifié au cours du déploiement.
    • namespace : fournissez l’espace de noms dans lequel vous avez déployé ArcGIS Enterprise on Kubernetes.
    • context : fournissez le contexte qui a été spécifié au cours du déploiement.
  3. Enregistrez ces données YAML dans un fichier sur votre machine cliente (par exemple, en tant que fichier nommé ingress.yaml) et appliquez-le à votre cluster à l’aide de la commande suivante :
    kubectl apply -f ingress.yaml
    

Une fois ce processus terminé, un objet Ingress (entrée réseau) nommé arcgis-enterprise-ingress est créé. Lors de la création de cet objet Ingress, le contrôleur Ingress GKE provisionne un équilibreur de charge Application Load Balancer dans votre projet Google Cloud. Un groupe de points de terminaison du réseau (NEG) est créé, qui contient l’adresse IP du pod back-end du contrôleur Ingress NGINX au sein du cluster. Une fois l’équilibreur de charge créé, votre déploiement de ArcGIS Enterprise doit être accessible, et un enregistrement peut être créé qui dirige les clients à partir du nom de domaine complet qui a été spécifié au cours du déploiement initial vers l’équilibreur de charge provisionné.

Remarque :

Le déploiement arcgis-ingress-controller devra peut-être être actualisé pour établir une connexion adéquate via l’objet Ingress récemment créé. Si vous recevez une erreur lors de l’accès à ArcGIS Enterprise Manager après la création de l’objet Ingress, essayez d’exécuter ce qui suit :

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