Utiliser un équilibrage de la charge des applications sur Amazon Elastic Kubernetes Service

Un contrôleur Ingress au niveau du cluster permet d’acheminer le trafic vers un déploiement ArcGIS Enterprise sur Amazon Elastic Kubernetes Service (EKS). 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 à EKS suivantes sont remplies :

  • Vous devez avoir préparé un cluster Kubernetes dans Amazon EKS, y compris le déploiement d’un contrôleur d’équilibrage de la charge AWS.
  • L’interface de ligne de commande AWS doit être installée sur votre machine cliente. Vérifiez que vous pouvez vous authentifier à partir de l’interface de ligne de commande sur le compte dans lequel se trouve le cluster EKS.
  • 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 que vous avez créé et émettre des commandes.
  • Votre cluster EKS, votre VPC et les ressources associées répondent aux conditions requises stipulées dans Répartition de la charge des applications sur Amazon EKS.
  • Vous devez avoir un certificat TLS. Vous pouvez utiliser Amazon Certificate Manager (ACM) pour créer ou importer ce certificat.

Implémenter un contrôleur Ingress au niveau du cluster

Pour implémenter un contrôleur Ingress au niveau du cluster et router le trafic vers un déploiement ArcGIS Enterprise sur Amazon EKS, procédez comme suit :

  1. Récupérez le nom ARN (Access Resource Name) qui est associé à votre certificat ACM à l’aide d’une des méthodes indiquées dans la documentation AWS.
  2. 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:
      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>
        alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=600
        #alb.ingress.kubernetes.io/inbound-cidrs: <inboundCIDRRange>
        #alb.ingress.kubernetes.io/security-groups: <securityGroupID1>,<securityGroupID2>
      labels:
        id: custom-ingress-resource
    spec:
      ingressClassName: alb
      rules:
      - host: <deploymentFQDN>
        http:
          paths:
          - path: /<context>
            pathType: Prefix
            backend:
              service:
                name: arcgis-ingress-nginx
                port:
                  number: 443

    Pour plus d’informations sur certaines des annotations, consultez la section Description des annotations ci-dessous.

  3. Remplacez les valeurs suivantes :
    • alb.ingress.kubernetes.io/certificate-arn : fournissez le nom ARN (Amazon Resource Name) récupéré à l’étape 1.
    • alb.ingress.kubernetes.io/inbound-cidrs : si vous souhaitez autoriser le trafic entrant de plages d’adresses IP CIDR spécifiques, supprimez les marques de commentaire de cette ligne et spécifiez la plage. Si des groupes de sécurité sont spécifiés dans l’annotation alb.ingress.kubernetes.io/security-groups, cette annotation est ignorée.
    • alb.ingress.kubernetes.io/security-groups : si vous souhaitez connecter des groupes de sécurité existants à votre équilibreur de charges élastiques, supprimez les marques de commentaire de cette ligne et spécifiez les ID de ces groupes de sécurité.
    • namespace : fournissez l’espace de noms dans lequel vous avez déployé ArcGIS Enterprise on Kubernetes.
    • deploymentFQDN : fournissez le nom de domaine complet qui a été spécifié au cours du déploiement initial.
    • context : fournissez le contexte qui a été spécifié au cours du déploiement.
      Remarque :

      Cette valeur apparaît deux fois et doit être remplacée dans les deux instances. Veillez à mettre à jour la valeur dans l’annotation alb.ingress.kubernetes.io/healthcheck-path.

  4. Enregistrez le fichier sur votre poste de travail client.

    Par exemple, ingress.yaml.

  5. 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éé. Si c’est la première fois que vous utilisez un contrôleur Ingress pour gérer l’accès externe à votre cluster EKS, un équilibreur de charge Application Load Balancer devrait apparaître en état de provisionnement dans le compte AWS que vous utilisez actuellement. Le contrôleur de l’équilibreur de charge AWS provisionnera cet équilibreur de charge Application Load Balancer et les composants auxiliaires en fonction des données YAML qui ont été appliquées à l’espace de noms. Une fois l’équilibreur de charge en état actif, le déploiement de ArcGIS Enterprise doit être accessible, et un enregistrement DNS CNAME 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>

Description des annotations

Pour plus d’informations sur certaines des annotations, consultez les rubriques suivantes :

  • alb.ingress.kubernetes.io/scheme: internet-facing : crée un équilibreur de charge Application Load Balancer qui est accessible par Internet. Pour exposer l’équilibreur de charge des applications uniquement depuis votre VPC, vous pouvez également utiliser l’annotation alb.ingress.kubernetes.io/scheme: internal.
  • alb.ingress.kubernetes.io/target-type: ip : cette annotation permet d’équilibrer la charge du trafic directement vers les adresses IP des pods back-end.