Accéder aux services publiés via des backends

Ce guide explique comment configurer un équilibreur de charge d'application externe global avec un backend Private Service Connect pour accéder à un service publié à l'aide de Private Service Connect.

Figure 1 : L'utilisation d'un backend basé sur un équilibreur de charge d'application externe global permet aux clients de services dotés d'un accès Internet d'envoyer du trafic aux services du réseau VPC du producteur de services (cliquez pour agrandir).

Pour en savoir plus, consultez la page À propos des backends Private Service Connect.

Rôles

Le rôle d'administrateur de l'équilibreur de charge Compute (roles/compute.loadBalancerAdmin) contient l'autorisation requise pour effectuer les tâches décrites dans ce guide.

Avant de commencer

  • Si vous souhaitez publier votre propre service, consultez la page Publier des services à l'aide de Private Service Connect.

  • Si vous connectez un service qui est publié par un tiers, demandez au producteur de services les informations suivantes :

    • L'URI du rattachement de service auquel vous souhaitez vous connecter. Le rattachement de service a le format suivant : projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME.

    • Les conditions requises pour les noms DNS auxquels vous envoyez des requêtes. Vous devrez peut-être utiliser des noms DNS spécifiques dans votre configuration de mappage d'URL ou votre configuration DNS.

Créer un groupe de points de terminaison du réseau

Créez un NEG Private Service Connect qui pointe vers le rattachement de service du service publié auquel vous souhaitez accéder. Si le service publié est déployé dans plusieurs régions différentes, créez un NEG par rattachement de service.

Chaque NEG Private Service Connect utilise une adresse IP /32 afin que l'équilibreur de charge puisse communiquer avec lui.

Console

  1. Dans la console Google Cloud, accédez à la page Groupes de points de terminaison du réseau.

    Accéder à la page Groupes de points de terminaison du réseau

  2. Cliquez sur Créer un groupe de points de terminaison du réseau.

  3. Saisissez le nom du groupe de points de terminaison du réseau.

  4. Pour le type de groupe de points de terminaison du réseau, sélectionnez Groupe de points de terminaison du réseau (Private Service Connect).

  5. Sélectionnez le type de cible Published service.

  6. Dans le champ Service cible, saisissez l'URI du rattachement de service.

  7. Sélectionnez le Réseau et le Sous-réseau dans lesquels créer le groupe de points de terminaison du réseau.

    Le sous-réseau doit se trouver dans la même région que celle du service publié.

  8. Cliquez sur Créer.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=TARGET_SERVICE \
    --region=REGION \
    --network=NETWORK \
    --subnet=SUBNET

Remplacez les éléments suivants :

  • NEG_NAME : nom du groupe de points de terminaison du réseau.

  • TARGET_SERVICE : rattachement de service auquel vous souhaitez vous connecter.

  • REGION : région dans laquelle créer le groupe de points de terminaison du réseau. La région doit être la même que celle du service cible.

  • NETWORK : réseau dans lequel créer le groupe de points de terminaison du réseau. S'il n'est pas spécifié, le réseau par défaut est utilisé.

  • SUBNET : sous-réseau dans lequel créer le groupe de points de terminaison du réseau. Le sous-réseau doit se trouver dans la même région que celle du service cible. Si vous spécifiez le réseau, un sous-réseau doit être spécifié. En cas d'omission du réseau et du sous-réseau, le réseau par défaut est utilisé, et le sous-réseau par défaut dans la région REGION spécifiée est utilisé.

Réserver une adresse IP externe pour l'équilibreur de charge

Pour réserver une adresse IP externe pour l'équilibreur de charge, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page Adresses IP.

    Accéder à la page "Adresses IP"

  2. Pour réserver une adresse IPv4, cliquez sur Réserver une adresse statique.

  3. Attribuez un Nom à la ressource d'adresse IP.

  4. Définissez le niveau réseau à la valeur Premium.

  5. Définissez Version IP sur IPv4.

  6. Définissez le Type sur Global.

  7. Cliquez sur Réserver.

gcloud

  1. Réservez une adresse IPv4 externe globale pour l'équilibreur de charge.

    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 --global
    

    Remplacez ADDRESS_NAME par le nom de la ressource d'adresse IP

  2. Exécutez la commande suivante pour afficher l'adresse IP réservée :

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global
    

Une ressource de certificat SSL doit être créée

Pour créer un équilibreur de charge HTTPS, vous devez ajouter une ressource de certificat SSL au frontal de l'équilibreur de charge. Créez une ressource de certificat SSL à l'aide d'un certificat SSL géré par Google ou d'un certificat SSL autogéré.

  • Certificats gérés par Google. Nous vous recommandons d'utiliser des certificats gérés par Google, car Google Cloud obtient, gère et renouvelle automatiquement ces certificats. Pour créer un certificat géré par Google, vous devez disposer d'un domaine et des enregistrements DNS de ce domaine afin de provisionner le certificat. Si vous ne possédez pas encore de domaine, vous pouvez en obtenir un auprès de Google Domains. Pour en savoir plus, consultez la section Premiers pas avec Google Domains. De plus, vous devez mettre à jour l'enregistrement DNS A du domaine pour qu'il pointe vers l'adresse IP de l'équilibreur de charge créée à l'étape précédente. Pour obtenir des instructions détaillées, consultez la page Utiliser des certificats gérés par Google.

  • Certificats autogérés Les certificats SSL autogérés sont des certificats que vous obtenez, provisionnez et renouvelez vous-même. Les certificats autogérés peuvent être signés par une autorité de certification ou peuvent être autosignés. S'ils sont signés par une autorité de certification, vous devez disposer d'un domaine. Si vous ne possédez pas encore de domaine, vous pouvez en obtenir un auprès de Google Domains. Pour en savoir plus, consultez la section Premiers pas avec Google Domains. De plus, vous devez mettre à jour l'enregistrement DNS A du domaine pour qu'il pointe vers l'adresse IP de l'équilibreur de charge créée à l'étape précédente. Pour obtenir des instructions détaillées, consultez la page Utiliser des certificats SSL autogérés.

    Si vous ne souhaitez pas configurer un domaine à ce stade, vous pouvez utiliser un certificat SSL autosigné pour les tests.

Dans ces instructions, nous partons du principe que vous avez déjà créé une ressource de certificat SSL.

Configurer l'équilibreur de charge

Configurez un équilibreur de charge d'application externe global avec des fonctionnalités avancées de gestion du trafic (schéma d'équilibrage de charge défini sur EXTERNAL_MANAGED) pour vous connecter à un service géré.

Si vous vous connectez à un service publié déployé dans plusieurs régions et que vous avez créé plusieurs NEG Private Service Connect pour vous connecter à chaque rattachement de service, vous pouvez ajouter tous les NEG au service de backend.

Bien que le NEG Private Service Connect soit régional, tous les autres composants d'équilibrage de charge de cette configuration sont globaux.

Console

Démarrer la configuration

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur Créer un équilibreur de charge.
  3. Dans le champ Type d'équilibreur de charge, sélectionnez Équilibreur de charge d'application (HTTP/HTTPS), puis cliquez sur Suivant.
  4. Pour Public ou interne, sélectionnez Public (externe), puis cliquez sur Suivant.
  5. Pour Déploiement mondial ou dans une seule région, sélectionnez Recommandé pour les charges de travail à l'échelle mondiale, puis cliquez sur Suivant.
  6. Pour Génération de l'équilibreur de charge, sélectionnez Équilibreur de charge d'application externe global, puis cliquez sur Suivant.
  7. Cliquez sur Configurer.

Configuration de base

  1. Saisissez un nom d'équilibreur de charge.
  2. Laissez la fenêtre ouverte pour continuer.

Configuration de l'interface

  1. Cliquez sur Frontend configuration (Configuration du frontend).
  2. Cliquez sur Ajouter une adresse IP et un port frontend.
  3. Dans le champ Name (Nom), saisissez le nom de l'équilibreur de charge.
  4. Dans le champ Protocole, sélectionnez HTTPS (inclut HTTP/2).
  5. Assurez-vous que le port est défini sur la valeur 443 pour autoriser le trafic HTTPS.
  6. Pour Adresse IP, sélectionnez l'adresse IP que vous avez réservée.

  7. Cliquez sur la liste Certificat, puis sélectionnez le certificat que vous avez créé.

  8. Cliquez sur OK.

  9. Cliquez sur OK.

Configuration du backend

Le groupe de points de terminaison du réseau Private Service Connect est un type de backend d'équilibreur de charge. Ajoutez tous les NEG Private Service Connect pour le même service géré au service de backend.

  1. Cliquez sur Configuration du backend.
  2. Cliquez sur la liste Services de backend et buckets backend, puis sur Créer un service de backend.
  3. Dans le champ Name (Nom), saisissez le nom du service de backend.
  4. Définissez le type de backend sur Groupe de points de terminaison du réseau Private Service Connect.
  5. Dans la section Backends, cliquez sur la liste Groupe de points de terminaison du réseau Private Service Connect, puis sélectionnez le NEG Private Service Connect que vous avez créé. Cliquez sur OK.
  6. Si vous avez créé plusieurs NEG Private Service Connect, cliquez sur Ajouter un backend pour sélectionner un autre NEG.

    Répétez cette étape jusqu'à ce que tous les NEG de ce service géré soient ajoutés au service de backend.

  7. Cliquez sur Créer.

Règles de routage

Étant donné que cette configuration ne contient qu'un seul service de backend, la règle de routage par défaut est suffisante et vous n'avez pas besoin d'effectuer des modifications dans cette section.

Vérifier et finaliser

  1. Pour vérifier la configuration, cliquez sur Vérification et finalisation.
  2. Cliquez sur Créer.

gcloud

  1. Créez un service de backend pour le service géré auquel vous souhaitez vous connecter.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTPS \
        --global
    

    Remplacez BACKEND_SERVICE_NAME par le nom du service de backend.

  2. Ajoutez le NEG Private Service Connect qui pointe vers le service cible.

    Si vous avez créé plusieurs NEG dans différentes régions pour le même service, répétez cette étape pour ajouter tous les NEG au service de backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --network-endpoint-group=NEG_NAME \
      --network-endpoint-group-region=REGION \
      --global
    

    Remplacez les éléments suivants :

    • BACKEND_SERVICE_NAME : nom du service de backend.
    • NEG_NAME : nom du groupe de points de terminaison du réseau.
    • REGION : région du groupe de points de terminaison du réseau.
  3. Créez un mappage d'URL pour l'équilibreur de charge.

    Un mappage d'URL doit faire référence à un service de backend par défaut. Configurez le service de backend que vous avez créé comme service de backend par défaut.

    gcloud compute url-maps create URL_MAP_NAME \
      --default-service=BACKEND_SERVICE_NAME \
      --global
    

    Remplacez les éléments suivants :

    • URL_MAP_NAME : nom du mappage d'URL.

    • BACKEND_SERVICE_NAME : nom du service de backend par défaut de l'équilibreur de charge. La valeur par défaut est utilisée lorsqu'aucune règle d'hôte ne correspond au nom d'hôte demandé.

  4. Créez le proxy HTTPS cible.

    Utilisez la ressource de certificat SSL que vous avez créée pour créer un proxy HTTPS cible.

    gcloud compute target-https-proxies create PROXY_NAME \
      --url-map=URL_MAP_NAME \
      --ssl-certificates=CERTIFICATE
    

    Remplacez les éléments suivants :

    • PROXY_NAME : nom du proxy HTTPS cible.
    • URL_MAP_NAME : nom du mappage d'URL.
    • CERTIFICATE : nom de la ressource de certificat.
  5. Créez la règle de transfert.

    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network-tier=PREMIUM \
        --address=ADDRESS_NAME \
        --target-https-proxy=PROXY_NAME \
        --ports=443 \
        --global
    

    Remplacez les éléments suivants :

    • FWD_RULE : nom de la règle de transfert.

    • ADDRESS_NAME : ressource d'adresse IP que vous avez réservée pour la règle de transfert.

    • PROXY_NAME : nom du proxy HTTPS cible.

Configurer les enregistrements DNS

Si vous souhaitez accéder à votre backend Private Service Connect à l'aide d'un nom DNS, créez des noms DNS pour chaque règle de transfert externe. L'enregistrement DNS doit correspondre à un nom du mappage d'URL. À moins que votre mappage d'URL ne réécrive les noms, l'enregistrement DNS doit également correspondre aux noms attendus par le service producteur.

Si vous gérez le DNS à l'aide de Cloud DNS, consultez la section Ajouter un enregistrement DNS.

Vérifier la configuration

  1. Créez l'instance de VM.

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-11 \
        --zone=ZONE
    

    Remplacez les éléments suivants :

    • VM_NAME : nom de la machine virtuelle.

    • NETWORK : réseau de la VM.

    • ZONE : zone de la VM.

  2. Connectez-vous à la VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Utilisez curl pour vérifier la configuration. Cette commande définit l'en-tête Host et contourne la résolution DNS en spécifiant une adresse IP définie par l'utilisateur. Vous pouvez omettre le port si vous utilisez le port par défaut du protocole, par exemple le port 443 pour HTTPS.

    Vous pouvez ignorer la validation du certificat à l'aide de l'option -k. Vous devrez peut-être ignorer la validation si vous avez utilisé un certificat autosigné pour configurer le proxy HTTPS cible, ou si la VM ne dispose pas du certificat de l'autorité de certification qui a signé votre certificat.

    curl [-k] -s 'https://HOST:443/RESOURCE_URI' \
        -H 'Host: HOST' \
        --connect-to HOST:443:FWD_RULE_IP_ADDRESS:443
    

    Remplacez les éléments suivants :

    • HOST:  nom d'hôte configuré dans le mappage d'URL.

    • RESOURCE_URI : reste de l'URI de la ressource que vous souhaitez utiliser pour la validation.

    • FWD_RULE_IP_ADDRESS : adresse IP attribuée à la règle de transfert.

Dépannage

La création du backend réussit, mais la connectivité n'est pas établie.

Si vous avez réussi à créer un backend pour les services publiés, mais que la connectivité n'est pas établie, vérifiez l'état de connexion du backend. L'état de la connexion peut indiquer les étapes à suivre pour résoudre le problème.