Utiliser Google Kubernetes Engine Ingress pour les équilibreurs de charge Application Load Balancer
Vous pouvez utiliser un contrôleur Ingress au niveau du cluster pour 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.
L’équilibreur de charge Application Load Balancer classique créé par ce processus met fin aux connexions WebSocket actives et inactives après l’expiration de la valeur de délai d’expiration du service back-end. Par conséquent, des connexions à partir de clients utilisant des fonctionnalités nécessitant des connexions WebSocket, telles que les services de gestion des processus ou les services Notebook peuvent être interrompues. Bien que les connexions WebSocket terminées puissent être rétablies, les erreurs de délai d’expiration renvoyées par les applications clientes peuvent interrompre des processus utilisateur. Consultez la documentation de Google Cloud Platform pour plus d’informations.
Avant de créer un contrôleur Ingress au niveau du cluster, déterminez si les avantages de cette option l’emportent sur l’interruption potentielle des connexions WebSocket pour votre organisation. S’il est important de maintenir des connexions WebSocket ouvertes, créez un service LoadBalancer lorsque vous exécutez le script de déploiement pour ArcGIS Enterprise on Kubernetes au lieu d’utiliser un contrôleur Ingress au niveau du cluster.
Remarque :
Terminez ce processus avant de créer une organisation ArcGIS Enterprise. Vous pouvez accéder à ArcGIS Enterprise Manager dans un navigateur après avoir déployé et configuré un équilibreur de charge.
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 après le déploiement initial d’ArcGIS Enterprise sur Google Kubernetes Engine.
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"}'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.
Vous pouvez utiliser la CRD BackendConfig pour cette étape.
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: timeoutSec: 600 healthCheck: type: HTTPS requestPath: /<context>/admin port: 443Remarque :
Selon les besoins de l’organisation, vous pouvez ajouter des paramètres de contrôle d’intégrité supplémentaires dans le fichier 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
contextdans le champrequestPathpour qu’elle corresponde au chemin de contexte qui a été spécifié lors du déploiement.Créez l’objet BackendConfig à l’aide de la commande suivante :
kubectl apply -f backendconfig.yamlAnnotez 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é créé précédemment est utilisé par l’équilibreur de charge déployé par le contrôleur Ingress GKE.
Créer l’objet Ingress
Maintenant que les annotations ont été ajoutées au service de contrôleur Ingress au sein du cluster, créez l’objet Ingress en suivant les étapes ci-après :
Ouvrez le modèle inclus dans le dossier
layer-7-templatesou copiez l’exemple suivant 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>" 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: 443Remplacez les valeurs suivantes :
certificateName: indiquez le nom du certificat récemment chargé.deploymentFQDN: indiquez le nom de domaine complet qui a été spécifié lors du déploiement.namespace: indiquez l’espace de noms dans lequel vous avez déployé ArcGIS Enterprise on Kubernetes.context: indiquez le contexte qui a été spécifié lors du déploiement.
Enregistrez le fichier sur votre poste de travail client.
Par exemple,
ingress.yaml.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.yamlSi le script de déploiement est exécuté en mode silencieux, définissez
CLUSTER_INGRESS_CONTROLLER_YAML_FILENAMEsur 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 met à disposition un équilibreur de charge Application Load Balancer dans votre projet Google Cloud. Il crée également un groupe de points de terminaison du réseau associé qui contient l’adresse IP du pod back-end du contrôleur Ingress NGINX au sein du cluster. Votre déploiement ArcGIS Enterprise est accessible après la création de l’équilibreur de charge. Vous pouvez ensuite créer un enregistrement A qui dirige les clients depuis le nom de domaine complet spécifié lors du déploiement initial vers l’équilibreur de charge mis à disposition.
Remarque :
Il peut être nécessaire d’actualiser le déploiement arcgis-ingress-controller pour établir une connexion adéquate via l’objet Ingress nouvellement 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>