Connectivité aux services hébergés dans un environnement sans serveur

Cette page explique comment configurer Integration Connectors pour vous connecter à des services hébergés dans des environnements sans serveur tels que Cloud Run dans Google Cloud.

L'image suivante montre une configuration de connectivité réseau privée depuis Integration Connectors vers un service hébergé dans l'environnement Cloud Run de Google Cloud :

Sur cette page, nous partons du principe que vous connaissez bien les éléments suivants :

Remarques

Lorsque vous créez un rattachement de service PSC, tenez compte des points clés suivants :

  • Le rattachement de service PSC et l'équilibreur de charge sont créés sur des sous-réseaux différents dans le même VPC. Plus précisément, le rattachement de service est toujours créé sur un sous-réseau NAT.
  • Le trafic provenant de l'équilibreur de charge et du test de vérification de l'état doit être envoyé vers le même port.
  • Configurez les règles de pare-feu pour faciliter le flux de trafic.

    Règles d'entrée

    Le trafic provenant du sous-réseau du rattachement de service PSC doit atteindre votre service de backend.

    Règles de sortie

    Le trafic de sortie est activé par défaut dans un projet Google Cloud, sauf si des règles de refus spécifiques sont configurées.

  • Tous vos composants Google Cloud, tels que le rattachement de service PSC et l'équilibreur de charge, doivent se trouver dans la même région.

Créer un rattachement de service PSC

Pour que vous établissiez une connectivité privée à partir d'Integration Connectors, votre service doit être exposé à Integration Connectors à l'aide d'un rattachement de service PSC. Un rattachement de service utilise toujours un équilibreur de charge. Par conséquent, si votre service n'est pas placé derrière un équilibreur de charge, vous devez en configurer un.

  1. Créez un équilibreur de charge. Si vous en avez déjà un, ignorez cette étape.

    Créez un équilibreur de charge d'application en utilisant un NEG sans serveur comme backend. Pour cela, suivez les instructions indiquées dans Configurer un équilibreur de charge d'application interne régional avec Cloud Run.

  2. Créez le rattachement de service.
    1. Créez un sous-réseau pour le NAT PSC. La commande suivante crée un sous-réseau nommé psc-nat-subnet1 et dont l'objectif est PRIVATE_SERVICE_CONNECT.
      gcloud compute networks subnets create psc-nat-subnet1 \
                --network=VPC_NETWORK --range=SUBNET_RANGE_1 \
                --purpose=PRIVATE_SERVICE_CONNECT
    2. Créez une règle de pare-feu pour autoriser le trafic du NAT PSC vers l'équilibreur de charge.
      gcloud compute network-firewall-policies rules create PRIORITY --firewall-policy FIREWALL_POLICY_NAME_SA \
          --direction=INGRESS  --network=VPC_NETWORK \
          --action=allow --allow=tcp:BACKEND_SERVER_PORT --src-ip-ranges=SUBNET_RANGE_1
    3. Créez un rattachement de service avec une approbation explicite.
      gcloud compute service-attachments create SERVICE_ATTACHMENT_NAME --producer-forwarding-rule=FORWARDING_RULE_NAME  --connection-preference=ACCEPT_MANUAL --consumer-accept-list=SERVICE_DIRECTORY_PROJECT_ID=LIMIT --nat-subnets=psc-nat-subnet1

      Dans cette commande, LIMIT correspond à la limite de connexions pour le projet. La limite de connexions est le nombre de points de terminaison clients PSC pouvant se connecter à ce service. Pour obtenir le SERVICE_DIRECTORY_PROJECT_ID, procédez comme suit :

      • Vous pouvez créer le rattachement de service PSC de sorte qu'il n'accepte les requêtes que des projets Google Cloud spécifiés. Pour cela, vous avez toutefois besoin de l'ID de projet de l'annuaire des services associé à votre projet Google Cloud. Pour obtenir l'ID de projet de l'annuaire des services, vous pouvez utiliser l'API List Connections, comme illustré dans l'exemple suivant.

        Syntaxe

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/CONNECTORS_PROJECT_ID/locations/-/connections"

        Remplacez l'élément suivant :

        • CONNECTORS_PROJECT_ID : ID du projet Google Cloud dans lequel vous avez créé votre connexion

        Exemple

        Cet exemple récupère l'ID de projet de l'annuaire des services pour le projet Google Cloud connectors-test.

        curl -X GET \
            -H "authorization: Bearer $(gcloud auth print-access-token)" \
            -H "Content-Type: application/json" \
            "https://connectors.googleapis.com/v1/projects/connectors-test/locations/-/connections"

        L'exécution de cette commande sur le terminal génère un résultat semblable au suivant :

        .....
        {
          "connections": [
            {
              "name": "projects/connectors-test/locations/asia-northeast1/connections/big-query-iam-invalid-sa",
              "createTime": "2022-10-07T09:02:31.905048520Z",
              "updateTime": "2022-10-07T09:22:39.993778690Z",
              "connectorVersion": "projects/connectors-test/locations/global/providers/gcp/connectors/bigquery/versions/1",
              "status": {
                "state": "ACTIVE"
              },
              "configVariables": [
                {
                  "key": "project_id",
                  "stringValue": "connectors-test"
                },
                {
                  "key": "dataset_id",
                  "stringValue": "testDataset"
                }
              ],
              "authConfig": {},
              "serviceAccount": "564332356444-compute@developer.gserviceaccount.com",
              "serviceDirectory": "projects/abcdefghijk-tp/locations/asia-northeast1/namespaces/connectors/services/runtime",
              "nodeConfig": {
                "minNodeCount": 2,
                "maxNodeCount": 50
              }
            },
        ....
        

        Dans l'exemple de résultat, pour le projet Google Cloud connectors-test, l'ID de projet de l'annuaire des services est abcdefghijk-tp.

Créer un rattachement de point de terminaison pour utiliser le rattachement de service PSC

Rattachement de point de terminaison en tant qu'adresse IP

Pour savoir comment créer un rattachement de point de terminaison en tant qu'adresse IP, consultez Créer un rattachement de point de terminaison en tant qu'adresse IP.

Rattachement de point de terminaison en tant que nom d'hôte

Dans certains cas, comme pour les backends compatibles avec TLS, la destination nécessite que vous utilisiez des noms d'hôte au lieu d'adresses IP privées pour effectuer la validation TLS. Dans les cas où un DNS privé est utilisé à la place d'une adresse IP pour la destination de l'hôte, vous devez configurer des zones gérées en plus de créer un rattachement de point de terminaison en tant qu'adresse IP. Pour savoir comment créer un rattachement de point de terminaison en tant que nom d'hôte, consultez Créer un rattachement de point de terminaison en tant que nom d'hôte.

Plus tard, lorsque vous configurerez votre connexion pour utiliser le rattachement de point de terminaison, vous pourrez le sélectionner.

Configurer une connexion pour utiliser le rattachement de point de terminaison

Maintenant que vous avez créé un rattachement de point de terminaison, utilisez-le dans votre connexion. Lorsque vous créez une connexion ou mettez à jour une connexion existante, dans la section "Destinations", sélectionnez Rattachement de point de terminaison comme Type de destination, puis sélectionnez le rattachement de point de terminaison que vous avez créé dans la liste Rattachement de point de terminaison.

Si vous avez créé une zone gérée, sélectionnez Adresse de l'hôte comme Type de destination et utilisez l'enregistrement A que vous avez créé lors de la création de la zone gérée.

Conseils de dépannage

Suivez les consignes de cette section pour éviter tout problème courant :