Se connecter à un réseau VPC

Cette page explique comment connecter un service ou un job Cloud Run à votre réseau VPC, ce qui permet d'acheminer le trafic de sortie (sortant) depuis Cloud Run vers les instances de VM Compute Engine, les instances Memorystore et toute autre ressource disposant d'une adresse IP interne.

Vous pouvez activer le service ou le job pour envoyer du trafic vers un réseau VPC en configurant un connecteur d'accès au VPC sans serveur ou en utilisant la sortie VPC directe sans connecteur.

Avant de commencer

  • Si vous n'avez pas encore de réseau VPC dans votre projet, créez-en un.

  • Si vous utilisez un VPC partagé, consultez la documentation sur la configuration spécifique de l'accès au VPC sans serveur pour votre produit.

  • Si une contrainte de règle d'administration empêche l'utilisation de Cloud Deployment Manager, vous ne pourrez pas créer ni supprimer de connecteurs d'accès au VPC sans serveur. Pour créer ou supprimer un connecteur, vous devez disposer de la fonctionnalité Deployment Manager.

    Exigences concernant les sous-réseaux des connecteurs

  • Chaque connecteur nécessite son propre sous-réseau dédié à usage privé (PRIVATE) avec une plage d'adresses IPv4 principale /28. Ce sous-réseau ne peut pas être utilisé par d'autres ressources telles que les VM, Private Service Connect ou les équilibreurs de charge.

  • Pour créer un connecteur dans un projet de service qui utilise un réseau VPC partagé dans un projet hôte, un administrateur réseau du réseau VPC partagé doit créer manuellement le sous-réseau du connecteur avant que vous puissiez créer le connecteur.

  • Pour déterminer si un sous-réseau existant créé manuellement peut être utilisé par un connecteur, décrivez le sous-réseau :

    gcloud compute networks subnets describe SUBNET --region=REGION
    

    Remplacez SUBNET par le nom du sous-réseau et REGION par la région qui contient le sous-réseau.

    Dans le résultat, vérifiez les points suivants :

    • L'objectif (purpose) du sous-réseau est PRIVATE.
    • La plage d'adresses IPv4 principale du sous-réseau, ipCidrRange, est une plage /28.
  • Si vous devez créer un connecteur d'accès au VPC sans serveur dans le même projet que celui qui contient le réseau VPC utilisé par le connecteur, vous pouvez créer manuellement le sous-réseau du connecteur avant de créer le connecteur, ou Google Cloud peut créer automatiquement le sous-réseau pour le connecteur.

    Lorsque Google Cloud crée un sous-réseau pour un connecteur, tenez compte des points suivants :

    • Les sous-réseaux créés automatiquement pour les connecteurs ne sont pas visibles lorsque vous listez les sous-réseaux, que vous utilisiez la console Google Cloud, la Google Cloud CLI ou l'API Compute Engine.

    • Les sous-réseaux créés automatiquement pour les connecteurs ne peuvent pas être décrits.

    • Les sous-réseaux créés automatiquement sont inclus dans la liste des sous-réseaux qui s'affiche lorsque vous décrivez un réseau VPC.

Pour en savoir plus sur les sous-réseaux, y compris comment lister ceux qui existent déjà pour déterminer les plages d'adresses IP déjà utilisées, consultez la section Utiliser des sous-réseaux.

Limites

Le trafic IPv6 n'est pas accepté.

Créer un connecteur

Pour envoyer des requêtes à votre réseau VPC et recevoir les réponses correspondantes sans utiliser l'Internet public, vous pouvez utiliser un connecteur d'accès au VPC sans serveur.

Si votre connecteur se trouve dans le même projet que son réseau VPC, vous pouvez soit créer un connecteur à l'aide d'un sous-réseau existant, soit créer un connecteur et un nouveau sous-réseau.

Si votre connecteur est situé dans un projet de service et utilise un réseau VPC partagé, alors le connecteur et le réseau VPC associé se situent dans des projets différents. Lorsqu'un connecteur et son réseau VPC se trouvent dans des projets différents, un administrateur de réseau VPC partagé doit créer le sous-réseau du connecteur dans le réseau VPC partagé avant que vous ne puissiez créer le connecteur. En outre, vous devez créer le connecteur à l'aide d'un sous-réseau existant.

Pour en savoir plus sur les exigences concernant les sous-réseaux, consultez la section Exigences concernant les sous-réseaux des connecteurs.

Pour en savoir plus sur le débit du connecteur, y compris le type de machine et le scaling, consultez la section Débit et scaling.

Vous pouvez créer un connecteur à l'aide de la console Google Cloud, de Google Cloud CLI ou de Terraform.

Console

  1. Accédez à la page de présentation de l'accès au VPC sans serveur.

    Accéder à l'accès au VPC sans serveur

  2. Cliquez sur Créer un connecteur.

  3. Dans le champ Nom, spécifiez un nom pour votre connecteur, en respectant les conventions d'attribution de noms de Compute Engine, auxquelles s'ajoutent ces exigences supplémentaires : le nom doit comporter moins de 21 caractères, et les tirets (-) comptent pour deux caractères.

  4. Dans le champ Région, sélectionnez une région pour votre connecteur. Elle doit correspondre à la région de votre service sans serveur.

    Si votre service ou job se trouve dans la région us-central ou europe-west, utilisez us-central1 ou europe-west1.

  5. Dans le champ Réseau, sélectionnez le réseau VPC auquel associer le connecteur.

  6. Dans le champ Sous-réseau, sélectionnez l'une des options suivantes :

    • Créer un connecteur à l'aide d'un sous-réseau existant : sélectionnez le sous-réseau existant dans le champ Sous-réseau.

    • Créer un connecteur et un nouveau sous-réseau : sélectionnez Plage d'adresses IP personnalisée dans le champ Sous-réseau. Saisissez ensuite la première adresse d'une plage CIDR /28 inutilisée (par exemple, 10.8.0.0/28) à utiliser comme plage d'adresses IPv4 principale d'un nouveau sous-réseau, que Google Cloud va créer dans le réseau VPC du connecteur. Assurez-vous que la plage d'adresses IP n'entre pas en conflit avec des routes existantes dans le réseau VPC du connecteur. Le nom du nouveau sous-réseau commence par le préfixe "aet-".

  7. (Facultatif) Pour définir les options de scaling afin de renforcer le contrôle du connecteur, cliquez sur Afficher les paramètres de scaling pour afficher le formulaire de scaling.

    1. Définissez le nombre minimal et maximal d'instances de votre connecteur ou utilisez les valeurs par défaut, qui sont 2 (min.) et 10 (max.). Le connecteur effectue un scaling à la hausse jusqu'à la valeur maximale spécifiée si l'utilisation du trafic l'exige, mais il ne réduit pas le nombre d'instances lorsque le trafic diminue. Les valeurs doivent être comprises entre 2 et 10.
    2. Dans le menu Type d'instance, choisissez le type de machine à utiliser pour le connecteur ou utilisez la valeur par défaut e2-micro. Notez la barre latérale des coûts sur la droite lorsque vous choisissez le type d'instance, qui affiche des estimations de bande passante et de coûts.
  8. Cliquez sur Create (Créer).

  9. Une coche verte apparaît à côté du nom du connecteur lorsque celui-ci est prêt à être utilisé.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Mettez à jour les composants gcloud vers la dernière version :

    gcloud components update
    
  3. Assurez-vous que l'API Serverless VPC Access est activée pour votre projet :

    gcloud services enable vpcaccess.googleapis.com
    
  4. Créez le connecteur à l'aide de l'une des options suivantes :

    Pour plus d'informations et pour connaître les arguments facultatifs pouvant être stipulés, consultez la documentation de référence sur gcloud.

    • Créer un connecteur à l'aide d'un sous-réseau existant

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE
      

      Remplacez les éléments suivants :

      • CONNECTOR_NAME : nom de votre connecteur, respectant les conventions d'attribution de noms de Compute Engine, avec les exigences supplémentaires suivantes : le nom doit comporter moins de 21 caractères, et les tirets (-) sont comptés comme deux caractères.
      • REGION : région du connecteur, correspondant à la région de votre service ou job sans serveur. Si votre service ou votre job se trouve dans la région us-central ou europe-west, utilisez us-central1 ou europe-west1.
      • SUBNET_NAME : nom du sous-réseau existant.
      • HOST_PROJECT_ID : ID du projet hôte de VPC partagé. Si le connecteur et le sous-réseau existant se trouvent dans le même projet, omettez l'option --subnet-project.
      • MIN : nombre minimal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre 2 (valeur par défaut) et 9.
      • MAX : nombre maximal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre 3 et 10 (valeur par défaut). Si le connecteur effectue un scaling à la hausse jusqu'à atteindre le nombre maximal d'instances, il ne réduit pas ensuite le nombre d'instances lorsque le trafic diminue.
      • MACHINE_TYPE : le type de machine doit être défini sur l'une des valeurs suivantes : f1-micro, e2-micro ou e2-standard-4.
    • Créer un connecteur et un nouveau sous-réseau

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE
      

      Remplacez les éléments suivants :

      • CONNECTOR_NAME : nom de votre connecteur, respectant les conventions d'attribution de noms de Compute Engine, avec les exigences supplémentaires suivantes : le nom doit comporter moins de 21 caractères, et les tirets (-) sont comptés comme deux caractères.
      • REGION : région du connecteur, correspondant à la région de votre service ou job sans serveur. Si votre service ou votre job se trouve dans la région us-central ou europe-west, utilisez us-central1 ou europe-west1.
      • VPC_NETWORK : nom du réseau VPC auquel associer le connecteur. Le connecteur et le réseau VPC doivent se trouver dans le même projet.
      • IP_RANGE : indiquez une plage CIDR /28 inutilisée (par exemple, 10.8.0.0/28) à utiliser comme plage d'adresses IPv4 principale d'un nouveau sous-réseau, que Google Cloud va créer dans le réseau VPC du connecteur. Assurez-vous que la plage d'adresses IP n'entre pas en conflit avec des routes existantes dans le réseau VPC du connecteur. Le nom du nouveau sous-réseau commence par le préfixe "aet-".
      • MIN : nombre minimal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre 2 (valeur par défaut) et 9.
      • MAX : nombre maximal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre 3 et 10 (valeur par défaut). Si le connecteur effectue un scaling à la hausse jusqu'à atteindre le nombre maximal d'instances, il ne réduit pas ensuite le nombre d'instances lorsque le trafic diminue.
      • MACHINE_TYPE : le type de machine doit être défini sur l'une des valeurs suivantes : f1-micro, e2-micro ou e2-standard-4.
  5. Avant d'utiliser le connecteur, vérifiez qu'il est dans l'état READY :

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION
    

    Remplacez les éléments suivants :

    • CONNECTOR_NAME : nom du connecteur. Il s'agit du nom que vous avez spécifié à l'étape précédente.
    • REGION : région du connecteur. Il s'agit de la région que vous avez spécifiée à l'étape précédente.

    Le résultat doit contenir la ligne state: READY.

Terraform

Vous pouvez utiliser une ressource Terraform pour activer l'API vpcaccess.googleapis.com.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Vous pouvez utiliser les modules Terraform pour créer un réseau et un sous-réseau VPC, puis créer le connecteur.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 9.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

Configurer votre environnement sans serveur pour utiliser un connecteur

Après avoir créé un connecteur d'accès au VPC sans serveur, configurez votre environnement sans serveur pour qu'il utilise le connecteur en suivant les instructions de votre environnement sans serveur :

Configurer Cloud Run pour utiliser un connecteur

Lorsque vous créez un service ou que vous déployez une nouvelle révision, vous pouvez configurer le service pour qu'il utilise un connecteur. Cela peut se faire via la console Google Cloud, Google Cloud CLI, un fichier YAML ou une ressource Terraform.

Console

  1. Dans la console Google Cloud, accédez à Cloud Run :

    Accédez à Cloud Run

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service selon vos besoins, puis cliquez sur Conteneur(s), volumes, mise en réseau et sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Connexions.

    image

    • Dans le champ Connecteur VPC, sélectionnez un connecteur à utiliser ou Aucun pour déconnecter votre service d'un réseau VPC.
  5. Cliquez sur Créer ou Déployer.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Pour spécifier un connecteur lors du déploiement, utilisez l'option --vpc-connector :

    gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
    • Remplacez SERVICE par le nom du service.
    • Remplacez IMAGE_URL.
    • Remplacez CONNECTOR_NAME par le nom de votre connecteur. Si votre connecteur se trouve dans le projet hôte d'un VPC partagé, il doit s'agir du nom complet, par exemple :
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      HOST_PROJECT_ID est l'ID du projet hôte, CONNECTOR_REGION est la région du connecteur, et CONNECTOR_NAME est le nom que vous avez donné au connecteur.

    Pour associer, mettre à jour ou supprimer un connecteur pour un service existant, utilisez la commande gcloud run services update avec l'une des options suivantes selon vos besoins :

    Par exemple, pour associer ou mettre à jour un connecteur :

    gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
    • Remplacez SERVICE par le nom du service.
    • Remplacez CONNECTOR_NAME par le nom de votre connecteur.

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Ajoutez ou mettez à jour l'attribut run.googleapis.com/vpc-access-connector sous l'attribut annotations sous l'attribut de niveau supérieur spec :

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
    • Remplacez SERVICE par le nom de votre service Cloud Run.
    • Remplacez CONNECTOR_NAME par le nom de votre connecteur. Si votre connecteur se trouve dans le projet hôte d'un VPC partagé, il doit s'agir du nom complet, par exemple :
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      HOST_PROJECT_ID est l'ID du projet hôte, CONNECTOR_REGION est la région du connecteur, et CONNECTOR_NAME est le nom que vous avez donné au connecteur.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud beta run services replace service.yaml

Terraform

Vous pouvez utiliser une ressource Terraform pour créer un service et le configurer pour qu'il utilise votre connecteur.

# Cloud Run service
resource "google_cloud_run_v2_service" "gcr_service" {
  name     = "mygcrservice"
  provider = google-beta
  location = "us-west1"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          cpu    = "1000m"
          memory = "512Mi"
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    scaling {
      # Limit scale up to prevent any cost blow outs!
      max_instance_count = 5
    }

    vpc_access {
      # Use the VPC Connector
      connector = google_vpc_access_connector.connector.id
      # all egress from the service should go through the VPC Connector
      egress = "ALL_TRAFFIC"
    }
  }
}

Configurer Cloud Functions pour utiliser un connecteur

Vous pouvez configurer une fonction pour qu'elle utilise un connecteur depuis Google Cloud Console ou Google Cloud CLI :

Console

  1. Accédez à la page de présentation de Cloud Functions dans la console Google Cloud :

    Accéder à Cloud Functions

  2. Cliquez sur Créer une fonction. Vous pouvez également cliquer sur une fonction existante pour accéder à sa page d'informations, puis sur Modifier.

  3. Développez les paramètres avancés en cliquant sur Paramètres d'exécution, de compilation et de connexion.

  4. Dans l'onglet Connexions, sous "Paramètres de sortie", saisissez le nom de votre connecteur dans le champ Connecteur VPC.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Exécutez la commande gcloud functions deploy pour déployer la fonction et spécifiez l'indicateur --vpc-connector :

    gcloud functions deploy FUNCTION_NAME \
    --vpc-connector CONNECTOR_NAME \
    FLAGS...
    

    où :

    • FUNCTION_NAME est le nom de la fonction.
    • CONNECTOR_NAME est le nom du connecteur. Si votre connecteur se trouve dans le projet hôte d'un VPC partagé, il doit s'agir du nom complet, par exemple :
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      HOST_PROJECT_ID est l'ID du projet hôte, CONNECTOR_REGION est la région du connecteur, et CONNECTOR_NAME est le nom que vous avez donné au connecteur.
    • FLAGS... fait référence aux autres options que vous transmettez lors du déploiement de la fonction.

Pour apprendre à contrôler plus précisément les requêtes acheminées via le connecteur, consultez la section Paramètres de sortie.

Configurer App Engine pour utiliser un connecteur

Python 2

  1. Arrêtez l'utilisation du service de récupération d'URL App Engine.

    Par défaut, toutes les requêtes sont acheminées via le service de récupération d'URL. Cela entraîne l'échec des requêtes adressées à votre réseau VPC. Pour désactiver ce paramètre par défaut, consultez la section Désactiver le service de récupération d'URL pour la gestion de toutes les requêtes sortantes.

    Vous pouvez toujours utiliser la bibliothèque urlfetch directement pour des requêtes individuelles si nécessaire, mais cela n'est pas recommandé.

  2. Ajoutez le champ "Accès au VPC sans serveur" au fichier app.yaml :

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Remplacez les éléments suivants :

    • PROJECT_ID par l'ID de votre projet Google Cloud Si votre connecteur se trouve dans le projet hôte d'un VPC partagé, il doit s'agir de l'ID du projet hôte.
    • REGION par la région où se trouve le connecteur.
    • CONNECTOR_NAME par le nom de votre connecteur.
  3. Déployez le service :

    gcloud app deploy

    Une fois votre service déployé, il peut envoyer des requêtes aux adresses IP internes afin d'accéder aux ressources de votre réseau VPC.

Java 8

  1. Arrêtez l'utilisation du service de récupération d'URL App Engine URLFetchService.

  2. Ajoutez l'élément "Accès au VPC sans serveur" au fichier appengine-web.xml de votre service :

    <vpc-access-connector>
    <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name>
    </vpc-access-connector>
    

    Remplacez les éléments suivants :

    • PROJECT_ID par l'ID de votre projet Google Cloud Si votre connecteur se trouve dans le projet hôte d'un VPC partagé, il doit s'agir de l'ID du projet hôte.
    • REGION par la région où se trouve le connecteur.
    • CONNECTOR_NAME par le nom de votre connecteur.
  3. Déployez le service :

    gcloud app deploy WEB-INF/appengine-web.xml

    Une fois votre service déployé, il peut envoyer des requêtes aux adresses IP internes afin d'accéder aux ressources de votre réseau VPC.

Go 1.11

  1. Arrêtez l'utilisation du service de récupération d'URL App Engine.

    L'accès au VPC sans serveur n'est pas compatible avec le service de récupération d'URL. Les requêtes effectuées à l'aide de ce service ignorent les paramètres d'accès au VPC sans serveur. Établissez des connexions sortantes avec des sockets.

  2. Ajoutez le champ "Accès au VPC sans serveur" au fichier app.yaml :

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Remplacez les éléments suivants :

    • PROJECT_ID par l'ID de votre projet Google Cloud
    • REGION par la région où se trouve le connecteur
    • CONNECTOR_NAME par le nom de votre connecteur
  3. Déployez le service :

    gcloud app deploy

    Une fois votre service déployé, il peut envoyer des requêtes aux adresses IP internes afin d'accéder aux ressources de votre réseau VPC.

Tous les autres environnements d'exécution

  1. Ajoutez le champ "Accès au VPC sans serveur" au fichier app.yaml :

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Remplacez les éléments suivants :

    • PROJECT_ID par l'ID de votre projet Google Cloud Si votre connecteur se trouve dans le projet hôte d'un VPC partagé, il doit s'agir de l'ID du projet hôte.
    • REGION par la région où se trouve le connecteur.
    • CONNECTOR_NAME par le nom de votre connecteur.
  2. Déployez le service :

    gcloud app deploy

    Une fois votre service déployé, il peut envoyer des requêtes aux adresses IP internes afin d'accéder aux ressources de votre réseau VPC.

Configurer votre environnement Cloud Run sans connecteur

Vous pouvez activer votre service Cloud Run pour envoyer le trafic de sortie (sortant) directement vers un réseau VPC, autorisant l'accès aux instances de VM Compute Engine, aux instances Memorystore et à toute autre ressource avec une adresse IP interne.

Configurer votre service sans connecteur

La sortie directe VPC permet à votre service Cloud Run d'envoyer du trafic vers un réseau VPC sans connecteur d'accès au VPC sans serveur. Les coûts réseau sont réduits à zéro comme le service lui-même. Vous pouvez également utiliser les tags réseau directement sur les révisions du service Cloud Run pour une sécurité réseau plus précise.

Vous pouvez configurer la sortie directe du VPC avec un service à l'aide de la console Google Cloud, de Google Cloud CLIm de YAML ou de Terraform.

Console

  1. Accédez à Cloud Run

  2. Cliquez sur Créer un service si vous configurez un nouveau service sur lequel effectuer un déploiement. Si vous configurez et déployez un service existant, cliquez sur ce service, puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service selon vos besoins, puis cliquez sur Conteneur(s), volumes, mise en réseau et sécurité pour développer la page de configuration du service.

  4. Cliquez sur l'onglet Réseau.

  5. Cliquez sur Se connecter à un VPC pour le trafic sortant.

  6. Cliquez sur Envoyer le trafic directement à un VPC.

  7. Dans le champ Réseau, sélectionnez le réseau VPC vers lequel vous souhaitez envoyer du trafic.

  8. Dans le champ Sous-réseau, sélectionnez le sous-réseau à partir duquel votre service reçoit des adresses IP. Vous pouvez déployer plusieurs services sur le même sous-réseau.

  9. Facultatif : saisissez les noms des tags réseau que vous souhaitez associer à votre ou vos services. Les tags réseau sont spécifiés au niveau de la révision. Chaque révision de service peut avoir des tags réseau différents, tels que network-tag-2.

  10. Dans le champ Routage du trafic, sélectionnez l'une des options suivantes :

    • N'acheminez que les requêtes adressées à des adresses IP privées vers le VPC pour envoyer uniquement le trafic vers des adresses internes via le réseau VPC.
    • Acheminez tout le trafic vers le VPC pour envoyer tout le trafic sortant via le réseau VPC.
  11. Cliquez sur Créer ou Déployer.

  12. Pour vérifier que votre service se trouve sur votre réseau VPC, cliquez sur le service, puis sur l'onglet Mise en réseau. Le réseau et le sous-réseau sont répertoriés dans la fiche VPC.

    Vous pouvez désormais envoyer des requêtes à partir de votre service Cloud Run vers n'importe quelle ressource du réseau VPC, conformément à vos règles de pare-feu.

gcloud

Pour déployer un service Cloud Run sans connecteur à partir de Google Cloud CLI, procédez comme suit :

  1. Assurez-vous que l'API Compute Engine est activée pour votre projet :

    gcloud services enable compute.googleapis.com
    
  2. Déployez votre service Cloud Run à l'aide de la commande suivante :

    gcloud run deploy SERVICE_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION
    

    Remplacez :

    • SERVICE_NAME par le nom de votre service Cloud Run.
    • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL se présente sous la forme suivante : LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • NETWORK par le nom de votre réseau VPC ;
    • SUBNET par le nom de votre sous-réseau. Le sous-réseau doit être /26 ou supérieur. La sortie VPC directe est compatible avec les plages IPv4 RFC 1918, RFC 6598 et Classe E. Vous pouvez déployer ou exécuter plusieurs services ou jobs sur le même sous-réseau, mais le sous-réseau ne peut pas être partagé par des connecteurs existants.
    • Facultatif: NETWORK_TAG_NAMES par les noms des tags réseau séparés par une virgule que vous souhaitez associer à un service. Pour les services, les tags réseau sont spécifiés au niveau de la révision. Chaque révision de service peut avoir des tags réseau différents, tels que network-tag-2.
    • EGRESS_SETTING par une valeur de paramètre de sortie :
      • all-traffic : achemine tout le trafic sortant via le réseau VPC.
      • private-ranges-only : achemine uniquement le trafic destiné à des adresses internes via le réseau VPC.
    • REGION par une région pour votre service.
  3. Pour vérifier que votre service se trouve sur votre réseau VPC, exécutez la commande suivante :

    gcloud run services describe SERVICE_NAME \
    --region=REGION
    

    Remplacez :

    • SERVICE_NAME par le nom de votre service.
    • REGION par la région du service que vous avez spécifiée à l'étape précédente.

    La sortie doit contenir le nom du réseau, du sous-réseau et du trafic sortant, par exemple :

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

Vous pouvez désormais envoyer des requêtes à partir de votre service Cloud Run vers n'importe quelle ressource du réseau VPC, conformément à vos règles de pare-feu.

YAML

  1. Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Mettez à jour les attributs suivants :

    apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    Remplacez :

    • SERVICE_NAME par le nom de votre service Cloud Run. Les noms de service doivent comporter un maximum de 49 caractères et être uniques par région et par projet.
    • REGION par la région de votre service Cloud Run, qui doit correspondre à la région de votre sous-réseau.
    • NETWORK par le nom de votre réseau VPC ;
    • SUBNET par le nom de votre sous-réseau. Le sous-réseau doit être /26 ou supérieur. La sortie VPC directe est compatible avec les plages IPv4 RFC 1918, RFC 6598 et Classe E. Vous pouvez déployer ou exécuter plusieurs services ou jobs sur le même sous-réseau, mais le sous-réseau ne peut pas être partagé par des connecteurs existants.
    • Facultatif: NETWORK_TAG_NAMES par les noms des tags réseau que vous souhaitez associer à un service. Pour les services, les tags réseau sont spécifiés au niveau de la révision. Chaque révision de service peut avoir des tags réseau différents, tels que network-tag-2.
    • EGRESS_SETTING par une valeur de paramètre de sortie :
      • all-traffic : achemine tout le trafic sortant via le réseau VPC.
      • private-ranges-only : achemine uniquement le trafic destiné à des adresses internes via le réseau VPC.
    • IMAGE par l'URL de votre image de conteneur de service.

    Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.

  3. Créez ou mettez à jour le service à l'aide de la commande suivante :

    gcloud run services replace service.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

  1. Ajoutez le code ci-dessous à votre fichier main.tf :

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

Vous pouvez éventuellement rendre votre service public si vous souhaitez autoriser un accès non authentifié à celui-ci.

Configurer votre job sans connecteur

La sortie directe de VPC permet à votre job Cloud Run d'envoyer du trafic vers un réseau VPC sans connecteur d'accès au VPC sans serveur.

Vous pouvez configurer une sortie VPC directe avec un job à l'aide de la console Google Cloud, de Google Cloud CLI ou de YAML.

Console

  1. Accédez à Cloud Run

  2. Si vous configurez un nouveau job, cliquez sur l'onglet Jobs et remplissez la page des paramètres initiaux du job selon vos besoins. Si vous configurez un job existant, cliquez sur celui-ci, puis sur Modifier.

  3. Cliquez sur Conteneur, variables et secrets, connexions, sécurité pour développer la page des propriétés du job.

  4. Cliquez sur l'onglet Connexions.

  5. Cliquez sur Se connecter à un VPC pour le trafic sortant.

  6. Cliquez sur Envoyer le trafic directement à un VPC.

  7. Dans le champ Réseau, sélectionnez le réseau VPC auquel vous souhaitez envoyer du trafic.

  8. Dans le champ Sous-réseau, sélectionnez le sous-réseau à partir duquel votre job reçoit des adresses IP. Vous pouvez exécuter plusieurs jobs sur le même sous-réseau.

  9. Dans le champ Routage du trafic, sélectionnez l'une des options suivantes :

    • N'acheminez que les requêtes adressées à des adresses IP privées vers le VPC pour envoyer uniquement le trafic vers des adresses internes via le réseau VPC.
    • Acheminez tout le trafic vers le VPC pour envoyer tout le trafic sortant via le réseau VPC.
  10. Facultatif : saisissez les noms des tags réseau que vous souhaitez associer à votre ou vos services. Les tags réseau sont spécifiés au niveau de la révision. Chaque révision de service peut avoir des tags réseau différents, tels que network-tag-2.

  11. Facultatif : saisissez les noms des tags réseau que vous souhaitez associer à votre ou vos jobs. Pour les jobs, les tags réseau sont spécifiés au niveau de l'exécution. Chaque exécution de job peut avoir des tags réseau différents, tels que network-tag-2.

  12. Cliquez sur Créer ou Mettre à jour.

  13. Pour vérifier que votre job se trouve sur votre réseau VPC, cliquez sur le job, puis sur l'onglet Configuration. Le réseau et le sous-réseau sont répertoriés dans la fiche VPC.

    Vous pouvez maintenant exécuter votre job Cloud Run et envoyer des requêtes à partir du job vers n'importe quelle ressource du réseau VPC, conformément à vos règles de pare-feu.

gcloud

Pour créer un job Cloud Run sans connecteur à partir de Google Cloud CLI, procédez comme suit :

  1. Assurez-vous que l'API Compute Engine est activée pour votre projet :

    gcloud services enable compute.googleapis.com
    
  2. Créez un job Cloud Run à l'aide de la commande suivante :

    gcloud run jobs create JOB_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION
    

    Remplacez :

    • JOB_NAME par le nom de votre job Cloud Run
    • IMAGE_URL par une référence à l'image du conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest ;
    • NETWORK par le nom de votre réseau VPC ;
    • SUBNET par le nom de votre sous-réseau. Le sous-réseau doit être /26 ou supérieur. La sortie VPC directe est compatible avec les plages IPv4 RFC 1918, RFC 6598 et Classe E. Vous pouvez déployer ou exécuter plusieurs services ou jobs sur le même sous-réseau, mais le sous-réseau ne peut pas être partagé par des connecteurs existants.
    • Facultatif: NETWORK_TAG_NAMES par les noms des tags réseau que vous souhaitez associer à un job. Pour les jobs, les tags réseau sont spécifiés au niveau de l'exécution. Chaque exécution de job peut avoir des tags réseau différents, tels que network-tag-2.
    • EGRESS_SETTING par une valeur de paramètre de sortie :
      • all-traffic : achemine tout le trafic sortant via le réseau VPC.
      • private-ranges-only : achemine uniquement le trafic destiné à des adresses internes via le réseau VPC.
    • REGION par une région pour votre job.
  3. Pour vérifier que le job se trouve sur votre réseau VPC, exécutez la commande suivante :

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    Remplacez :

    • JOB_NAME par le nom de votre tâche.
    • REGION par la région de votre job que vous avez spécifié à l'étape précédente.

    Le résultat doit contenir le nom de votre réseau et de votre sous-réseau, par exemple :

    VPC network:
      Network:       default
      Subnet:        default
    

Vous pouvez maintenant exécuter votre job Cloud Run et envoyer des requêtes à partir du job vers n'importe quelle ressource du réseau VPC, conformément à vos règles de pare-feu.

YAML

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Mettez à jour les attributs suivants :

    apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: JOB_NAME
        annotations:
          run.googleapis.com/launch-stage: BETA
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    Remplacez :

    • JOB_NAME par le nom de votre job Cloud Run Les noms de job doivent comporter un maximum de 49 caractères et être uniques par région et par projet.
    • REGION par la région de votre job Cloud Run, qui doit correspondre à la région de votre sous-réseau.
    • NETWORK par le nom de votre réseau VPC ;
    • SUBNET par le nom de votre sous-réseau. Le sous-réseau doit être /26 ou supérieur. La sortie VPC directe est compatible avec les plages IPv4 RFC 1918, RFC 6598 et Classe E. Vous pouvez déployer ou exécuter plusieurs services ou jobs sur le même sous-réseau, mais le sous-réseau ne peut pas être partagé par des connecteurs existants.
    • Facultatif: NETWORK_TAG_NAMES par les noms des tags réseau que vous souhaitez associer à un job. Pour les jobs, les tags réseau sont spécifiés au niveau de l'exécution. Chaque exécution de job peut avoir des tags réseau différents, tels que network-tag-2.
    • EGRESS_SETTING par une valeur de paramètre de sortie :
      • all-traffic : achemine tout le trafic sortant via le réseau VPC.
      • private-ranges-only : achemine uniquement le trafic destiné à des adresses internes via le réseau VPC.
    • IMAGE par l'URL de votre image de conteneur de job.
  3. Créez ou mettez à jour le job à l'aide de la commande suivante :

    gcloud run jobs replace job.yaml

Accéder aux ressources VPC

Autoriser le trafic d'entrée depuis une infrastructure sans serveur vers un connecteur

Les VM de votre connecteur doivent pouvoir recevoir des paquets à partir de la plage d'adresses IP externe Google Cloud 35.199.224.0/19. Cette plage est utilisée par l'infrastructure sans serveur Google sous-jacente pour garantir que les services de Cloud Run, Cloud Functions et App Engine peuvent envoyer des paquets au connecteur.

L'accès au VPC sans serveur crée une règle de pare-feu autorisant le trafic entrant qui s'applique aux VM du connecteur en autorisant les paquets provenant de 35.199.224.0/19 lorsque le connecteur se trouve dans le même projet que le réseau VPC qu'il cible. Le connecteur et son réseau VPC cible se trouvent dans le même projet soit lorsque le connecteur cible un réseau VPC autonome, soit lorsque le connecteur cible un réseau VPC partagé et qu'il se trouve dans le projet hôte.

Si vous créez un connecteur dans un projet de service de VPC partagé, un administrateur de sécurité ou un propriétaire de projet hôte de VPC partagé doit créer une règle de pare-feu autorisant le trafic entrant applicable aux VM du connecteur autorisant les paquets provenant de 35.199.224.0/19. Voici un exemple de règle de pare-feu VPC autorisant le trafic entrant :

gcloud compute firewall-rules create RULE_NAME \
--action=ALLOW \
--rules=TCP \
--source-ranges=35.199.224.0/19 \
--target-tags=VPC_CONNECTOR_NETWORK_TAG \
--direction=INGRESS \
--network=VPC_NETWORK \
--priority=PRIORITY \
--project=PROJECT_ID

Remplacez les éléments suivants :

  • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : allow-vpc-connector-ingress.
  • VPC_CONNECTOR_NETWORK_TAG : le tag réseau de connecteur universel vpc-connector peut être utilisé pour appliquer la règle à tous les connecteurs du réseau VPC. Vous pouvez également utiliser un tag réseau spécifique au connecteur. Le tag réseau spécifique se présente sous la forme suivante : vpc-connector-REGION-CONNECTOR_NAME, où REGION correspond à la région Google Cloud du connecteur et CONNECTOR_NAME à son nom.
  • VPC_NETWORK : nom du réseau VPC ciblé par le connecteur.
  • PRIORITY : entier compris entre 0 et 65535. Par exemple, 0 définit la priorité la plus élevée.
  • PROJECT_ID : ID du projet qui contient le réseau VPC ciblé par le connecteur.

Limiter l'accès des VM du connecteur aux ressources de réseau VPC

Vous pouvez limiter l'accès du connecteur aux ressources de son réseau VPC cible à l'aide de règles de pare-feu VPC ou de règles de stratégies de pare-feu. Vous pouvez respecter ces restrictions en utilisant l'une des stratégies suivantes :

  • Créez des règles d'entrée dont les cibles représentent les ressources auxquelles vous souhaitez limiter l'accès aux VM du connecteur et dont les sources représentent les VM du connecteur.
  • Créez des règles de sortie dont les cibles représentent les VM du connecteur et dont les destinations représentent les ressources auxquelles vous souhaitez leur limiter l'accès.

Les exemples suivants illustrent chaque stratégie.

Restreindre l'accès à l'aide de règles d'entrée

Choisissez des tags réseau ou des plages CIDR pour contrôler le trafic entrant vers votre réseau VPC.

Tags réseau

Les étapes suivantes expliquent comment créer des règles d'entrée limitant l'accès d'un connecteur à votre réseau VPC en fonction des tags réseau du connecteur.

  1. Vérifiez que vous disposez des autorisations requises pour insérer des règles de pare-feu. Vous devez disposer de l'un des rôles Identity and Access Management (IAM) suivants :

  2. Refuser le trafic du connecteur sur votre réseau VPC

    Créez une règle de pare-feu d'entrée ayant une priorité inférieure à 1 000 sur votre réseau VPC pour refuser l'entrée du tag réseau du connecteur. Cette option remplace la règle de pare-feu implicite créée par défaut par l'accès au VPC sans serveur sur votre réseau VPC.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Remplacez les éléments suivants :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : deny-vpc-connector.

    • PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont tcp ou udp. Par exemple, tcp:80,udp autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'option allow.

      Pour des raisons de sécurité et de validation, vous pouvez également configurer des règles de refus pour bloquer le trafic correspondant aux protocoles non compatibles suivants : ah, all, esp, icmp, ipip et sctp.

    • VPC_CONNECTOR_NETWORK_TAG : tag réseau de connecteur universel si vous souhaitez limiter l'accès de tous les connecteurs (y compris ceux créés ultérieurement), ou tag réseau unique si vous souhaitez limiter l'accès d'un connecteur spécifique.

      • Tag réseau universel : vpc-connector
      • Tag réseau unique : vpc-connector-REGION-CONNECTOR_NAME

        Remplacez :

        • REGION : région du connecteur que vous souhaitez restreindre
        • CONNECTOR_NAME : nom du connecteur que vous souhaitez restreindre

      Pour en savoir plus sur les tags réseau de connecteur, consultez la page Tags réseau.

    • VPC_NETWORK : nom de votre réseau VPC

    • PRIORITY : entier compris entre 0 et 65535. Par exemple, 0 définit la priorité la plus élevée.

  3. Autorisez le trafic de connecteur vers la ressource qui doit recevoir le trafic du connecteur.

    Utilisez les options allow et target-tags pour créer une règle de pare-feu d'entrée ciblant la ressource de votre réseau VPC à laquelle vous souhaitez que le connecteur VPC accède. Définissez la priorité de cette règle sur une valeur inférieure à celle de la règle que vous avez définie à l'étape précédente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Remplacez les éléments suivants :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : allow-vpc-connector-for-select-resources.

    • PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont tcp ou udp. Par exemple, tcp:80,udp autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'option allow.

    • VPC_CONNECTOR_NETWORK_TAG : tag réseau de connecteur universel si vous souhaitez limiter l'accès de tous les connecteurs (y compris ceux créés ultérieurement), ou tag réseau unique si vous souhaitez limiter l'accès d'un connecteur spécifique. Il doit correspondre au tag réseau que vous avez spécifié à l'étape précédente.

      • Tag réseau universel : vpc-connector
      • Tag réseau unique : vpc-connector-REGION-CONNECTOR_NAME

        Remplacez :

        • REGION : région du connecteur que vous souhaitez restreindre
        • CONNECTOR_NAME : nom du connecteur que vous souhaitez restreindre

      Pour en savoir plus sur les tags réseau de connecteur, consultez la page Tags réseau.

    • VPC_NETWORK : nom de votre réseau VPC

    • RESOURCE_TAG : tag réseau de la ressource VPC à laquelle votre connecteur VPC doit accéder.

    • PRIORITY : entier inférieur à la priorité définie à l'étape précédente. Par exemple, si vous définissez la priorité de la règle que vous avez créée à l'étape précédente sur 990, essayez 980.

Pour en savoir plus sur les options obligatoires et facultatives de création de règles de pare-feu, consultez la documentation sur la commande gcloud compute firewall-rules create.

Plage CIDR

Les étapes suivantes montrent comment créer des règles d'entrée qui limitent l'accès d'un connecteur à votre réseau VPC en fonction de la plage CIDR du connecteur.

  1. Vérifiez que vous disposez des autorisations requises pour insérer des règles de pare-feu. Vous devez disposer de l'un des rôles Identity and Access Management (IAM) suivants :

  2. Refuser le trafic du connecteur sur votre réseau VPC

    Créez une règle de pare-feu d'entrée ayant une priorité inférieure à 1000 sur votre réseau VPC pour refuser l'entrée de la plage CIDR du connecteur. Cette option remplace la règle de pare-feu implicite créée par défaut par l'accès au VPC sans serveur sur votre réseau VPC.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Remplacez les éléments suivants :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : deny-vpc-connector.

    • PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont tcp ou udp. Par exemple, tcp:80,udp autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'option allow.

      Pour des raisons de sécurité et de validation, vous pouvez également configurer des règles de refus pour bloquer le trafic correspondant aux protocoles non compatibles suivants : ah, all, esp, icmp, ipip et sctp.

    • VPC_CONNECTOR_CIDR_RANGE : plage CIDR du connecteur dont vous limitez l'accès

    • VPC_NETWORK : nom de votre réseau VPC

    • PRIORITY : entier compris entre 0 et 65535. Par exemple, 0 définit la priorité la plus élevée.

  3. Autorisez le trafic de connecteur vers la ressource qui doit recevoir le trafic du connecteur.

    Utilisez les options allow et target-tags pour créer une règle de pare-feu d'entrée ciblant la ressource de votre réseau VPC à laquelle vous souhaitez que le connecteur VPC accède. Définissez la priorité de cette règle sur une valeur inférieure à celle de la règle que vous avez définie à l'étape précédente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Remplacez les éléments suivants :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : allow-vpc-connector-for-select-resources.

    • PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont tcp ou udp. Par exemple, tcp:80,udp autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'option allow.

    • VPC_CONNECTOR_CIDR_RANGE : plage CIDR du connecteur dont vous limitez l'accès

    • VPC_NETWORK : nom de votre réseau VPC

    • RESOURCE_TAG : tag réseau de la ressource VPC à laquelle votre connecteur VPC doit accéder.

    • PRIORITY : entier inférieur à la priorité définie à l'étape précédente. Par exemple, si vous définissez la priorité de la règle que vous avez créée à l'étape précédente sur 990, essayez 980.

Pour en savoir plus sur les options requises et facultatives pour la création de règles de pare-feu, consultez la documentation sur la commande gcloud compute firewall-rules create.

Restreindre l'accès à l'aide de règles de sortie

La procédure suivante explique comment créer des règles de sortie afin de restreindre l'accès au connecteur.

  1. Vérifiez que vous disposez des autorisations requises pour insérer des règles de pare-feu. Vous devez disposer de l'un des rôles Identity and Access Management (IAM) suivants :

  2. Refusez le trafic sortant de votre connecteur.

    Créez une règle de pare-feu de sortie sur votre connecteur d'accès au VPC sans serveur pour l'empêcher d'envoyer du trafic sortant, à l'exception des réponses établies, vers n'importe quelle destination.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Remplacez les éléments suivants :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : deny-vpc-connector.

    • PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont tcp ou udp. Par exemple, tcp:80,udp autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'option allow.

      Pour des raisons de sécurité et de validation, vous pouvez également configurer des règles de refus pour bloquer le trafic correspondant aux protocoles non compatibles suivants : ah, all, esp, icmp, ipip et sctp.

    • VPC_CONNECTOR_NETWORK_TAG : tag réseau du connecteur VPC universel si vous souhaitez que la règle s'applique à tous les connecteurs VPC existants et à tous les connecteurs VPC créés ultérieurement. Ou tag réseau unique du connecteur VPC si vous souhaitez contrôler un connecteur spécifique.

    • VPC_NETWORK : nom de votre réseau VPC

    • PRIORITY : entier compris entre 0 et 65535. Par exemple, 0 définit la priorité la plus élevée.

  3. Autorisez le trafic sortant lorsque la destination se trouve dans la plage CIDR à laquelle vous souhaitez que votre connecteur accède.

    Utilisez les options allow et destination-ranges pour créer une règle de pare-feu autorisant le trafic sortant de votre connecteur pour une plage de destination spécifique. Définissez la plage de destination sur la plage CIDR de la ressource de votre réseau VPC à laquelle vous souhaitez que le connecteur accède. Définissez la priorité de cette règle sur une valeur inférieure à celle de la règle que vous avez configurée à l'étape précédente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY
    

    Remplacez les éléments suivants :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : allow-vpc-connector-for-select-resources.

    • PROTOCOL : un ou plusieurs protocoles que vous souhaitez autoriser à partir de votre connecteur VPC. Les protocoles acceptés sont tcp ou udp. Par exemple, tcp:80,udp autorise le trafic TCP via le port 80 et le trafic UDP. Pour en savoir plus, consultez la documentation de l'option allow.

    • RESOURCE_CIDR_RANGE : plage CIDR du connecteur dont vous limitez l'accès

    • VPC_NETWORK : nom de votre réseau VPC

    • VPC_CONNECTOR_NETWORK_TAG : tag réseau du connecteur VPC universel si vous souhaitez que la règle s'applique à tous les connecteurs VPC existants et à tous les connecteurs VPC créés ultérieurement. Ou tag réseau unique du connecteur VPC si vous souhaitez contrôler un connecteur spécifique. Si vous avez utilisé le tag réseau unique à l'étape précédente, utilisez-le.

    • PRIORITY : entier inférieur à la priorité définie à l'étape précédente. Par exemple, si vous définissez la priorité de la règle que vous avez créée à l'étape précédente sur 990, essayez 980.

Pour plus d'informations sur les options obligatoires et facultatives de création de règles de pare-feu, reportez-vous à la documentation de gcloud compute firewall-rules create.

Mettre à jour un connecteur

Vous pouvez mettre à jour et surveiller les attributs suivants de votre connecteur à l'aide de la console Google Cloud, de Google Cloud CLI ou de l'API :

  • Type de machine (instance)
  • Nombre minimal et maximal d'instances
  • Débit récent, nombre d'instances et utilisation du processeur

Mettre à jour le type de machine

Console

  1. Accédez à la page de présentation de l'accès au VPC sans serveur.

    Accéder à l'accès au VPC sans serveur

  2. Sélectionnez le connecteur que vous souhaitez modifier, puis cliquez sur Modifier.

  3. Dans la liste Type d'instance, sélectionnez le type de machine (instance) de votre choix. Pour en savoir plus sur les types de machines disponibles, consultez la documentation Débit et scaling.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Pour mettre à jour le type de machine du connecteur, exécutez la commande suivante dans votre terminal :

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    
    Remplacez les éléments suivants :

    • CONNECTOR_NAME : nom de votre connecteur
    • REGION : nom de la région du connecteur
    • MACHINE_TYPE : type de machine de votre choix Pour en savoir plus sur les types de machines disponibles, consultez la documentation Débit et scaling.

Réduire le nombre minimal et maximal d'instances

Pour réduire le nombre minimal et maximal d'instances, vous devez procéder comme suit :

  1. Créez un connecteur avec les valeurs de votre choix.
  2. Mettez à jour votre service ou votre fonction pour utiliser le nouveau connecteur.
  3. Supprimez l'ancien connecteur lorsque vous avez déplacé son trafic.

Pour en savoir plus, consultez la section Créer un connecteur d'accès au VPC sans serveur.

Augmenter le nombre minimal et maximal d'instances

Console

  1. Accédez à la page de présentation de l'accès au VPC sans serveur.

    Accéder à l'accès au VPC sans serveur

  2. Sélectionnez le connecteur que vous souhaitez modifier, puis cliquez sur Modifier.

  3. Dans le champ Nombre minimal d'instances, sélectionnez le nombre minimal d'instances de votre choix.

    La plus petite valeur possible de ce champ est la valeur actuelle. La plus grande valeur possible pour ce champ est la valeur actuelle figurant dans le champ Nombre maximal d'instances moins 1. Par exemple, si la valeur du champ Nombre maximal d'instances est 8, la valeur la plus élevée possible pour le champ Nombre minimal d'instances est 7.

  4. Dans le champ Nombre maximal d'instances, sélectionnez le nombre maximal d'instances souhaité.

    La plus petite valeur possible de ce champ est la valeur actuelle. La valeur la plus élevée pour ce champ est 10.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Pour augmenter le nombre minimal ou maximal d'instances du connecteur, exécutez la commande suivante dans votre terminal :

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    
    Remplacez les éléments suivants :

  • CONNECTOR_NAME : nom de votre connecteur
  • REGION : nom de la région du connecteur
  • MIN_INSTANCES : nombre minimal d'instances souhaité.
    • La plus petite valeur possible pour ce champ est la valeur actuelle de min_instances. Pour trouver la valeur actuelle, consultez la section Rechercher les valeurs d'attribut actuelles.
    • La plus grande valeur possible pour ce champ est la valeur max_instances actuelle moins 1, car min_instances doit être inférieur à max_instances. Par exemple, si max_instances est défini sur 8, la plus grande valeur possible pour ce champ est 7. Si votre connecteur utilise la valeur max-instances par défaut de 10, la plus grande valeur possible de ce champ est 9. Pour trouver la valeur de max-instances, consultez Rechercher les valeurs d'attributs actuelles.
  • MAX_INSTANCES :

    • La plus petite valeur possible pour ce champ est la valeur actuelle de max_instances. Pour trouver la valeur actuelle, consultez la section Rechercher les valeurs d'attribut actuelles.
    • La valeur la plus élevée possible pour ce champ est 10.

    Si vous souhaitez augmenter le nombre minimal d'instances, mais pas le nombre maximal, vous devez toujours spécifier le nombre maximal d'instances. Inversement, si vous ne souhaitez mettre à jour que le nombre maximal d'instances, mais pas le nombre minimal, vous devez toujours spécifier le nombre minimal d'instances. Pour conserver la valeur actuelle du nombre minimal ou maximal d'instances, vous devez spécifier cette valeur actuelle. Pour trouver leur valeur actuelle, consultez la section Rechercher les valeurs d'attribut actuelles.

Rechercher les valeurs d'attribut actuelles

Pour trouver les valeurs d'attribut actuelles de votre connecteur, exécutez la commande suivante dans votre terminal :

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
Remplacez les éléments suivants :

  • CONNECTOR_NAME : nom de votre connecteur
  • REGION : nom de la région du connecteur
  • PROJECT : nom de votre projet Google Cloud

Surveiller l'utilisation des connecteurs

Surveiller l'utilisation au fil du temps peut vous aider à déterminer quand ajuster les paramètres d'un connecteur. Par exemple, si l'utilisation du processeur connaît un pic, vous pouvez essayer d'augmenter le nombre maximal d'instances pour obtenir de meilleurs résultats. Si vous atteignez le débit maximal, vous pouvez également décider de passer à un type de machine de capacité supérieure.

Pour afficher des graphiques concernant le débit du connecteur, le nombre d'instances et les métriques d'utilisation du processeur au fil du temps à l'aide de la console Google Cloud, procédez comme suit :

  1. Accédez à la page de présentation de l'accès au VPC sans serveur.

    Accéder à l'accès au VPC sans serveur

  2. Cliquez sur le nom du connecteur que vous souhaitez surveiller.

  3. Sélectionnez le nombre de jours à afficher, compris entre 1 et 90 jours.

  4. Dans le graphique Débit, passez la souris sur le graphique pour afficher le débit récent du connecteur.

  5. Dans le graphique Nombre d'instances, passez la souris sur le graphique pour afficher le nombre d'instances récemment utilisées par le connecteur.

  6. Dans le graphique Utilisation du processeur, passez la souris sur le graphique pour afficher l'utilisation récente du processeur par le connecteur. Le graphique affiche l'utilisation du processeur répartie sur les instances pour les 50e, 95e et 99e centiles.

Supprimer un connecteur

Avant de supprimer un connecteur, assurez-vous qu'aucun service ni job ne lui est toujours connecté.

Pour les utilisateurs de VPC partagé qui configurent des connecteurs dans le projet hôte de VPC partagé, vous pouvez exécuter la commande gcloud compute networks vpc-access connectors describe pour répertorier les projets dans lesquels certains services ou jobs utilisent un connecteur donné.

Pour supprimer un connecteur, utilisez la console Google Cloud ou Google Cloud CLI :

Console

  1. Accédez à la page de présentation de l'accès au VPC sans serveur dans la console Google Cloud :

    Accéder à l'accès au VPC sans serveur

  2. Sélectionnez le connecteur que vous souhaitez supprimer.

  3. Cliquez sur Supprimer.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Utilisez la commande gcloud suivante pour supprimer un connecteur :

    gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
    

    Remplacez les éléments suivants :

    • CONNECTOR_NAME par le nom du connecteur que vous souhaitez supprimer ;
    • REGION par la région où se trouve le connecteur.

Dépannage

Autorisations de compte de service

Pour effectuer des opérations dans votre projet Google Cloud, le service d'accès au VPC sans serveur utilise le compte de service Agent de service de l'accès au VPC sans serveur. L'adresse e-mail de ce compte de service est au format suivant :

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

Par défaut, ce compte de service dispose du rôle Agent de service d'accès au VPC sans serveur (roles/vpcaccess.serviceAgent). Les opérations d'accès au VPC sans serveur peuvent échouer si vous modifiez les autorisations de ce compte.

Erreurs

Erreur "Compte de service nécessitant un rôle d'agent de service"

Si vous utilisez la contrainte de règle d'administration Restreindre l'utilisation des services de ressources pour bloquer Cloud Deployment Manager (deploymentmanager.googleapis.com), vous verrez peut-être le message d'erreur suivant :

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

Définissez la règle d'administration pour retirer Deployment Manager de la liste de blocage ou l'ajouter à la liste d'autorisation.

Erreur de création de connecteur

Si la création d'un connecteur entraîne une erreur, procédez comme suit :

  • Spécifiez une plage d'adresses IP interne RFC 1918 qui ne chevauche aucune réservation d'adresses IP existantes sur le réseau VPC.
  • Accordez à votre projet l'autorisation d'utiliser les images de VM Compute Engine du projet avec l'ID serverless-vpc-access-images. Consultez la section Définir des contraintes d'accès aux images pour savoir comment mettre à jour votre règle d'administration en conséquence.

Impossible d'accéder aux ressources

Si vous avez spécifié un connecteur, mais que vous ne pouvez toujours pas accéder aux ressources de votre réseau VPC, assurez-vous qu'aucune règle de pare-feu de votre réseau VPC ayant une priorité inférieure à 1 000 ne refuse l'entrée en provenance de la plage d'adresses IP de votre connecteur.

Si vous configurez un connecteur dans un projet de service VPC partagé, assurez-vous que vos règles de pare-feu autorisent l'entrée de votre infrastructure sans serveur vers le connecteur.

Erreur de connexion refusée

Si vous recevez des erreurs connection refused ou connection timeout qui dégradent les performances du réseau, cela signifie peut-être que le nombre de vos connexions augmente sans cesse à mesure des appels de votre application sans serveur. Pour limiter le nombre maximal de connexions utilisées par instance, utilisez une bibliothèque cliente compatible avec les pools de connexions. Pour obtenir des exemples détaillés d'utilisation des pools de connexions, consultez la page Gérer les connexions aux bases de données.

Erreur de ressource introuvable

Lorsque vous supprimez un réseau VPC ou une règle de pare-feu, un message semblable au suivant peut s'afficher : The resource "aet-uscentral1-subnet--1-egrfw" was not found.

Pour en savoir plus sur cette erreur et sa solution, consultez la section Erreur de ressource introuvable dans la documentation sur les règles de pare-feu VPC.

Étapes suivantes