Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Accéder aux services gérés à l'aide de Private Service Connect avec des contrôles de service HTTP(S) client

Lorsque vous accédez à des services gérés exécutés sur Google Cloud, il peut être souhaitable de leur transmettre des requêtes via un point d'application des règles. L'utilisation d'un point d'application des règles vous permet de configurer la journalisation et la cryptographie et de spécifier les URL qui sont accessibles.

Vous pouvez utiliser Private Service Connect avec des contrôles de service HTTP(S) client pour connecter des équilibreurs de charge HTTP(S) externes globaux aux services gérés dans Google Cloud, en utilisant l'équilibreur de charge pour l'application des règles. Vous vous connectez au service via une règle de transfert qui est mappée à un groupe de points de terminaison du réseau (NEG, network endpoint group) Private Service Connect.

Pour en savoir plus, consultez la section Publier et utiliser des services gérés à l'aide de 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 gérés à 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.

Spécifications

  • Le service cible configuré dans le NEG Private Service Connect doit être un rattachement de service.

  • Vous devez configurer un équilibreur de charge HTTP(S) externe global avec des fonctionnalités avancées de gestion du trafic (schéma d'équilibrage de charge défini sur EXTERNAL_MANAGED).

    L'équilibreur de charge HTTP(S) externe global (classique) n'est pas compatible avec cette configuration.

  • Le NEG Private Service Connect doit être le seul backend de son service de backend.

    Toutefois, le mappage d'URL de l'équilibreur de charge peut contenir plusieurs services de backend, qui peuvent eux-mêmes contenir n'importe quel type de backend.

  • Le service de backend associé au NEG doit utiliser le protocole HTTPS.

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.

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

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 auquel vous souhaitez vous connecter.

Configurer l'équilibreur de charge

Configurez un équilibreur de charge HTTP(S) 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 aux services gérés.

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

  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

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

    gcloud compute addresses describe ADDRESS_NAME \
      --format="get(address)" --global
    
  2. Pour chaque NEG que vous avez créé, créez un service de backend.

    gcloud beta 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.

  3. Pour chaque service de backend que vous avez créé, ajoutez le NEG correspondant au service de backend.

    gcloud beta 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.
  4. 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. Si vous configurez votre équilibreur de charge avec un service de backend, définissez ce service de backend par défaut. Si vous configurez votre équilibreur de charge pour qu'il utilise plusieurs services de backend, choisissez l'un des services de backend comme mappage d'URL par défaut.

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

    Remplacez les éléments suivants :

    • URL_MAP_NAME : nom du mappage d'URL.

    • DEFAULT_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é.

  5. Ajoutez des services de backend supplémentaires au mappage d'URL.

    Si votre mappage d'URL doit référencer au moins deux services de backend, ajoutez des outils de mise en correspondance des chemins d'accès et des règles d'hôte supplémentaires. Si votre mappage d'URL ne fait référence qu'à un seul service de backend, passez à la création du proxy HTTPS cible.

    1. Pour chaque service de backend, ajoutez un outil de mise en correspondance des chemins d'accès. Vous devez créer un outil de mise en correspondance des chemins d'accès pour chaque service de backend.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
        --path-matcher-name=PATH_MATCHER \
        --default-service=BACKEND_SERVICE_NAME \
        --global
      

      Remplacez les éléments suivants :

      • URL_MAP_NAME : nom du mappage d'URL.
      • PATH_MATCHER : nom de l'outil de mise en correspondance des chemins d'accès.
      • BACKEND_SERVICE_NAME : nom du service de backend.
    2. Pour chaque nom d'hôte, ajoutez une règle d'hôte.

      Chaque règle d'hôte ne peut référencer qu'un seul outil de mise en correspondance des chemins d'accès, mais deux règles d'hôte ou plus peuvent faire référence à un même outil de mise en correspondance des chemins d'accès.

      gcloud beta compute url-maps add-host-rule URL_MAP_NAME \
        --hosts=HOST \
        --path-matcher-name=PATH_MATCHER \
        --global
      

      Remplacez les éléments suivants :

      • URL_MAP_NAME : nom du mappage d'URL.
      • HOST : nom de l'hôte auquel envoyer les requêtes pour ce service. Exemple :service1.producer1.example.com
      • PATH_MATCHER : nom de l'outil de mise en correspondance des chemins d'accès.
      • REGION : région du mappage d'URL.
  6. Créez le proxy HTTPS cible.

    Pour créer un équilibreur de charge HTTPS, vous devez disposer d'une ressource de certificat SSL à utiliser dans le proxy HTTPS cible. Vous pouvez créer une ressource de certificat SSL à l'aide d'un certificat SSL géré par Google ou d'un certificat SSL autogéré. L'utilisation de certificats gérés par Google est recommandée, 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.

    Utilisez cette commande pour créer une ressource de certificat SSL géré par Google :

    gcloud beta compute ssl-certificates create CERTIFICATE \
      --domains DOMAIN
    

    Remplacez les éléments suivants :

    • CERTIFICATE : nom du certificat.
    • DOMAIN : nom de domaine de votre équilibreur de charge

    Utilisez cette commande pour créer une ressource de certificat SSL autogéré. Pour créer un certificat SSL autogéré, vous avez besoin d'un fichier de clé privée locale et d'un fichier de certificat local. Si vous devez créer ces fichiers, consultez l'étape 1 de la page sur l'utilisation des certificats SSL autogérés.

    gcloud beta compute ssl-certificates create CERTIFICATE \
      --certificate LB_CERT \
      --private-key LB_PRIVATE_KEY
    

    Remplacez les éléments suivants :

    • CERTIFICATE : nom du certificat.

    • LB_CERT : chemin d'accès au fichier de certificat au format PEM de votre certificat autogéré.

    • LB_PRIVATE_KEY : chemin d'accès au fichier de clé privée au format PEM pour votre certificat autogéré.

    Utilisez la ressource de certificat SSL pour créer un proxy HTTPS cible.

    gcloud beta 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.
  7. Créez la règle de transfert.

    gcloud beta 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 point de terminaison 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-9 \
      --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

Si une erreur 404 s'affiche lorsque vous essayez d'accéder à la règle de transfert de votre équilibreur de charge HTTP(S) externe global, l'erreur peut avoir l'une des causes suivantes :

  • Le mappage d'URL n'a pas encore été propagé.

    Si vous venez de créer l'équilibreur de charge HTTP(S) externe global, patientez quelques minutes.

  • L'URL que vous utilisez dans votre requête ne correspond pas à une URL définie dans le mappage d'URL.

    Vérifiez que l'URL que vous essayez correspond à la configuration du mappage d'URL dans votre équilibreur de charge HTTP(S) externe global.

  • Le backend du producteur de services n'est pas compatible avec l'URL à laquelle vous essayez d'accéder.

    Demandez au producteur de services de vérifier l'URL à utiliser pour accéder à son service.