Ingress pour l'équilibrage de charge HTTP(S) interne

Cette page explique le fonctionnement d'Ingress pour l'équilibrage de charge HTTP(S) interne dans Google Kubernetes Engine (GKE). Vous pouvez également apprendre à configurer et utiliser Ingress pour l'équilibrage de charge HTTP(S) interne.

L'équilibreur de charge HTTP(S) interne de GKE est un équilibreur de charge régional de couche 7 basé sur un proxy qui vous permet d'exécuter vos services et d'effectuer leur scaling derrière une adresse IP d'équilibrage de charge interne. Les objets Ingress de GKE acceptent l'équilibreur de charge HTTP(S) de manière native via la création d'objets Ingress sur les clusters GKE.

Pour obtenir des informations générales sur l'utilisation d'Ingress avec l'équilibrage de charge dans GKE, consultez la page Équilibrage de charge HTTP(S) avec Ingress.

Avantages de l'utilisation d'Ingress pour l'équilibreur de charge HTTP(S) interne

L'utilisation de GKE Ingress pour l'équilibrage de charge HTTP(S) interne présente les avantages suivants :

  • Contrôleur d'entrée à haute disponibilité géré par GKE
  • Équilibrage de charge pour les communications internes de service à service
  • Équilibrage de charge natif en conteneurs avec des groupes de points de terminaison du réseau (NEG)
  • Routage des applications avec compatibilité HTTP et HTTPS
  • Vérification haute fidélité de l'état de Compute Engine pour des services résilients
  • Proxys basés sur Envoy, déployés à la demande pour répondre aux besoins en termes de capacité de trafic

Compatibilité des fonctionnalités Google Cloud

Ingress pour l'équilibrage de charge HTTP(S) interne offre une compatibilité avec de nombreuses autres fonctionnalités.

Environnement de mise en réseau requis pour l'équilibrage de charge HTTP(S) interne

L'équilibreur de charge HTTP(S) interne fournit un pool de proxys pour votre réseau. Les proxys évaluent la destination de chaque requête HTTP(S) en fonction de facteurs tels que le mappage d'URL, l'affinité de session de BackendService et le mode d'équilibrage de chaque NEG backend.

L'équilibreur de charge HTTP(S) interne d'une région utilise le sous-réseau proxy réservé de cette région sur votre réseau VPC pour attribuer des adresses IP internes à chaque proxy créé par Google Cloud.

Par défaut, l'adresse IP attribuée à la règle de transfert d'un équilibreur de charge provient de la plage de sous-réseaux du nœud attribuée par GKE plutôt que du sous-réseau proxy réservé. Vous pouvez également spécifier manuellement une adresse IP pour la règle de transfert de n'importe quel sous-réseau lorsque vous créez la règle.

Le schéma suivant présente le flux de trafic pour un équilibreur de charge HTTP(S) interne, comme décrit dans le paragraphe précédent.

""

Voici le fonctionnement de l'équilibreur de charge HTTP(S) interne :

  1. Un client établit une connexion avec l'adresse IP et le port de la règle de transfert de l'équilibreur de charge.
  2. Un proxy reçoit et met fin à la connexion réseau du client.
  3. Le proxy établit une connexion au point de terminaison approprié (pod) dans un NEG, tel que déterminé par les services de backend et le mappage d'URL de l'équilibreur de charge.

Chaque proxy écoute l'adresse IP et le port spécifiés par la règle de transfert de l'équilibreur de charge correspondant. L'adresse IP source de chaque paquet envoyé depuis un proxy vers un point de terminaison est l'adresse IP interne attribuée à ce proxy à partir du sous-réseau proxy réservé.

Le contrôleur GKE Ingress gère le déploiement des règles de pare-feu. Vous n'avez donc pas besoin de les déployer manuellement.

HTTPS (TLS) entre l'équilibreur de charge et votre application

Un équilibreur de charge HTTP(S) interne joue le rôle de proxy entre vos clients et votre application. Les clients peuvent utiliser HTTP ou HTTPS afin de communiquer avec le proxy de l'équilibreur de charge. La connexion du proxy de l'équilibreur de charge à votre application utilise le protocole HTTP par défaut. Toutefois, si votre application s'exécute dans un pod GKE et peut recevoir des requêtes HTTPS, vous pouvez configurer l'équilibreur de charge pour qu'il utilise HTTPS lorsqu'il transfère les requêtes à votre application.

Pour configurer le protocole utilisé entre l'équilibreur de charge et votre application, incluez l'annotation cloud.google.com/app-protocols dans votre fichier manifeste de service.

Le fichier manifeste de service suivant spécifie deux ports. L'annotation indique qu'un équilibreur de charge HTTP(S) interne doit utiliser HTTP lorsqu'il cible le port 80 d'un service et HTTPS lorsqu'il cible le port 443 d'un service.

Vous devez utiliser le champ name du port dans l'annotation. N'utilisez pas un autre champ, tel que targetPort.

apiVersion: v1
kind: Service
metadata:
  name: my-service
  annotations:
    cloud.google.com/app-protocols: '{"my-https-port":"HTTPS","my-http-port":"HTTP"}'
spec:
  type: NodePort
  selector:
    app: metrics
    department: sales
  ports:
  - name: my-https-port
    port: 443
    targetPort: 8443
  - name: my-http-port
    port: 80
    targetPort: 50001

Étape suivante