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 créer 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. Ouvrez le modèle inclus dans le dossier layer-7-templates ou copiez l’exemple suivant dans un fichier de votre machine client :
    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. 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 le fichier sur votre poste de travail client.

    Par exemple, ingress.yaml.

  4. Créez l’objet Ingress en effectuant l’une des opérations suivantes :
    • Appliquez les données YAML Ingress à votre cluster à l’aide de la commande suivante :
      kubectl apply -f ingress.yaml
      
    • Si le script de déploiement est exécuté en mode silencieux, définissez CLUSTER_INGRESS_CONTROLLER_YAML_FILENAME sur l’emplacement du fichier YAML Ingress.

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>