Se connecter à un réseau VPC

Cette page explique comment utiliser l'accès au VPC sans serveur pour connecter un service Cloud Run (entièrement géré) directement à votre réseau VPC, ce qui permet d'accéder aux instances de VM Compute Engine, aux instances Memorystore et à toute autre ressource disposant d'une adresse IP interne.

Avant de commencer

Si vous utilisez un VPC partagé, consultez la page Se connecter à un réseau VPC partagé pour configurer le projet hôte avant de continuer.

Créez un connecteur d'accès au VPC sans serveur.

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

Vous pouvez créer un connecteur à l'aide de Google Cloud Console, de l'outil de ligne de commande gcloud ou de Terraform:

Console

  1. Assurez-vous que l'API Serverless VPC Access est activée pour votre projet :

    Activer une API

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

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

  3. Cliquez sur Créer un connecteur.

  4. Dans le champ Nom, saisissez le nom du connecteur.

  5. 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 se trouve dans la région us-central ou europe-west, utilisez us-central1 ou europe-west1.

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

  7. Cliquez sur le menu déroulant Sous-réseau :

    • Si vous utilisez votre propre sous-réseau (obligatoire pour le VPC partagé), sélectionnez le sous-réseau /28 que vous souhaitez utiliser pour le connecteur.
    • Si vous n'utilisez pas de VPC partagé et que vous préférez que le connecteur crée un sous-réseau au lieu d'en créer un explicitement, sélectionnez Plage d'adresses IP personnalisée dans le menu déroulant puis dans le champ Plage d'adresses IP, saisissez la première adresse d'une plage d'adresses IP internes CIDR /28 non réservée. Cette plage d'adresses IP ne doit pas chevaucher les réservations d'adresses IP existantes sur votre réseau VPC. Par exemple, la plage 10.8.0.0 (/28) fonctionnera dans la plupart des nouveaux projets.

  8. (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 horizontal 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 déroulant 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 gauche lorsque vous choisissez le type d'instance, qui affiche des estimations de bande passante et de coûts.
  9. Cliquez sur Create (Créer).

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

gcloud

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

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

    gcloud services enable vpcaccess.googleapis.com
    
  3. Si vous utilisez votre propre sous-réseau (obligatoire pour le VPC partagé), créez un connecteur à l'aide de la commande suivante :

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region REGION \
    --subnet SUBNET \
    # If you are not using Shared VPC, omit the following line.
    --subnet-project HOST_PROJECT_ID \
    # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max.
    --min-instances MIN \
    --max-instances MAX \
    # Optional: specify machine type, default is e2-micro
    --machine-type MACHINE_TYPE
    

    Remplacez l'élément suivant :

    • CONNECTOR_NAME : nom du connecteur.
    • REGION : région de votre connecteur. Elle doit correspondre à la région de votre service sans serveur. Si votre service se trouve dans la région us-central ou europe-west, utilisez us-central1 ou europe-west1.
    • SUBNET : votre propre sous-réseau dédié "/28" qui n'est utilisé par aucune autre ressource. La valeur à fournir est le nom du sous-réseau.
    • HOST_PROJECT_ID : ID du projet hôte. Indiquez-le uniquement si vous utilisez un VPC partagé.
    • MIN : nombre minimal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre 2 et 10. La valeur par défaut est 2.
    • MAX : nombre maximal d'instances à utiliser pour le connecteur. Saisissez un nombre entier compris entre 2 et 10. La valeur par défaut est 10. Si le trafic l'exige, le connecteur effectue un scaling horizontal jusqu'aux instances [MAX], mais il ne réduit pas le nombre d'instances.
    • MACHINE_TYPE : f1-micro, e2-micro ou e2-standard-4.

      Machine type (Type de machine) Plage de débit estimé en Mbit/s Prix
      (instance de connecteur plus coûts de sortie réseau)
      f1-micro 100-500 Tarifs f1-micro
      e2-micro 200-1000 Tarifs e2-micro
      e2-standard-4 3200-16000 Tarifs standard e2

    Par exemple, si vous définissez MACHINE_TYPE sur f1-micro, le débit estimé pour votre connecteur est de 100 Mbit/s au niveau MIN par défaut et de 500 Mbit/s au niveau MAX par défaut.

    Pour plus d'informations et d'arguments facultatifs, consultez la documentation de référence sur gcloud.

  4. Si vous n'utilisez pas de VPC partagé et que vous souhaitez fournir une plage d'adresses IP personnalisée au lieu d'utiliser un sous-réseau, créez un connecteur à l'aide de la commande suivante :

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --network VPC_NETWORK \
    --region REGION \
    --range IP_RANGE
    

    Remplacez l'élément suivant :

    • CONNECTOR_NAME : nom du connecteur.
    • VPC_NETWORK : réseau VPC auquel associer le connecteur.
    • REGION : région de votre connecteur. Celle-ci doit correspondre à la région de votre service sans serveur. Si votre service se trouve dans la région us-central ou europe-west, utilisez us-central1 ou europe-west1.
    • IP_RANGE : réseau d'adresse IP interne non réservé. Un espace non attribué de "/28" est requis. La valeur fournie correspond au réseau au format CIDR (10.8.0.0/28). Cette plage d'adresses IP ne doit pas chevaucher les réservations d'adresses IP existantes sur votre réseau VPC. Par exemple, 10.8.0.0/28 fonctionne dans la plupart des nouveaux projets.

    Pour plus d'informations et pour connaître les arguments facultatifs tels que les contrôles de débit, consultez la documentation de référence sur gcloud.

  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 l'élément suivant :

    • 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" "project" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Vous pouvez utiliser des 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      = "~> 3.3.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"
  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 }
  ]
}

Configurer votre service pour utiliser un connecteur

Une fois que vous avez créé un connecteur d'accès au VPC sans serveur, vous devez configurer votre service Cloud Run pour utiliser le connecteur. Pour ce faire, utilisez Cloud Console, l'outil de ligne de commande gcloud ou le fichier YAML lorsque vous créez un service ou déployez un nouvelle révision :

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 un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, renseignez la page de paramètres initiale du service, puis cliquez sur Suivant > Paramètres avancés pour accéder à la page de configuration du service.

  4. Cliquez sur l'onglet Connexions.

    image

  5. Dans le champ Connecteur VPC, sélectionnez un connecteur à utiliser ou Aucun pour déconnecter votre service d'un réseau VPC.

  6. Cliquez sur Créer ou Déployer.

gcloud

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 par une référence à l'image de conteneur, par exemple gcr.io/myproject/my-image:latest.
  • Remplacez CONNECTOR_NAME par le nom de votre 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

Vous pouvez télécharger et afficher la configuration de service existante à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud beta run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    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.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud beta run services replace service.yaml

Limiter l'accès aux ressources VPC

Vous pouvez limiter l'accès du connecteur à votre réseau VPC à l'aide de règles de pare-feu.

Lors de la connexion à un réseau VPC partagé, les règles de pare-feu ne sont pas créées automatiquement. Un utilisateur disposant du rôle d'administrateur réseau sur le projet hôte définit des règles de pare-feu lors de la configuration du projet hôte.

Lors de la connexion à un réseau VPC autonome, une règle de pare-feu implicite de priorité 1 000 est automatiquement créée sur votre réseau VPC afin d'autoriser l'entrée depuis le sous-réseau du connecteur ou la plage d'adresses IP personnalisée du connecteur vers toutes les destinations du réseau VPC. Remarque : la règle de pare-feu implicite n'est pas visible dans Google Cloud Console et n'existe que tant que le connecteur associé existe. Si vous ne souhaitez pas que le connecteur puisse accéder à toutes les destinations de votre réseau VPC, vous pouvez restreindre son accès.

Vous pouvez restreindre l'accès au connecteur en créant des règles d'entrée sur la ressource de destination ou en créant des règles de sortie sur le connecteur VPC.

Limiter 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 \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Remplacez l'élément suivant :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : deny-vpc-connector.
    • 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 : un entier compris entre 1 et 999 (inclus). Exemple : 990
  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=PROTOCOLS \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Remplacez l'élément suivant :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : allow-vpc-connector-for-select-resources.
    • PROTOCOLS : protocoles que vous souhaitez autoriser depuis le connecteur VPC. Il peut s'agir d'une ou de plusieurs des valeurs de chaîne sensibles à la casse tcp, udp, icmp, esp, ah, sctp, ou de n'importe quel numéro de protocole IP. Pour les protocoles basés sur les ports (tcp, udp et sctp), vous pouvez éventuellement spécifier une liste de ports de destination ou de plages de ports à laquelle la règle s'applique. Pour en savoir plus, consultez la documentation de l'option allow.
    • 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.
    • 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 \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Remplacez l'élément suivant :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : deny-vpc-connector.
    • VPC_CONNECTOR_CIDR_RANGE : plage CIDR du connecteur dont vous limitez l'accès
    • VPC_NETWORK : nom de votre réseau VPC
    • PRIORITY : un entier compris entre 1 et 999 Exemple : 990
  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=PROTOCOLS \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Remplacez l'élément suivant :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : allow-vpc-connector-for-select-resources.
    • PROTOCOLS : protocoles que vous souhaitez autoriser depuis le connecteur VPC. Il peut s'agir d'une ou de plusieurs des valeurs de chaîne sensibles à la casse tcp, udp, icmp, esp, ah, sctp, ou de n'importe quel numéro de protocole IP. Pour les protocoles basés sur les ports (tcp, udp et sctp), vous pouvez éventuellement spécifier une liste de ports de destination ou de plages de ports à laquelle la règle s'applique. 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.

Limiter 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.

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

    Remplacez l'élément suivant :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : deny-vpc-connector.
    • 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 : un entier compris entre 1 et 999 Exemple : 990
  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=PROTOCOLS \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY
    

    Remplacez l'élément suivant :

    • RULE_NAME : nom de votre nouvelle règle de pare-feu. Exemple : allow-vpc-connector-for-select-resources.
    • PROTOCOLS : protocoles que vous souhaitez autoriser depuis le connecteur VPC. Il peut s'agir d'une ou de plusieurs des valeurs de chaîne sensibles à la casse tcp, udp, icmp, esp, ah, sctp, ou de n'importe quel numéro de protocole IP. Pour les protocoles basés sur les ports (tcp, udp et sctp), vous pouvez éventuellement spécifier une liste de ports de destination ou de plages de ports à laquelle la règle s'applique. 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.

Gérer votre connecteur

Contrôler le trafic sortant d'un service

Par défaut, seules les requêtes adressées aux adresses IP internes et aux noms DNS internes sont acheminées via un connecteur d'accès au VPC sans serveur. Toutefois, dans certains cas, vous pouvez souhaiter que toutes les requêtes sortantes émises par votre service soient acheminées vers votre réseau VPC. Par exemple, si vous souhaitez que les règles de pare-feu de votre réseau VPC empêchent le trafic sortant Cloud Run d'atteindre des hôtes dangereux ou indésirables, vous devez acheminer toutes les requêtes sortantes de votre service via un connecteur d'accès au VPC sans serveur.

Pour contrôler le routage des requêtes sortantes émises par votre service, vous pouvez définir la sortie VPC sur l'une des options suivantes :

  • Acheminer uniquement les requêtes envoyées à des adresses IP privées via le connecteur VPC : par défaut. Seules les requêtes adressées aux plages d'adresses IP RFC 1918 et RFC 6598 ou aux noms DNS internes sont acheminées vers votre réseau VPC. Toutes les autres requêtes sont acheminées directement vers Internet.
  • Acheminer tout le trafic via le connecteur VPC : toutes les requêtes sortantes provenant du service sont acheminées vers votre réseau VPC. Les requêtes obéiront aux règles de pare-feu, de DNS et de routage du réseau.

Vous pouvez spécifier un paramètre de sortie VPC à l'aide de Cloud Console, de l'outil de ligne de commande gcloud ou du fichier YAML lorsque vous créez un service ou déployez une nouvelle révision:

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 un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, renseignez la page de paramètres initiale du service, puis cliquez sur Suivant > Paramètres avancés pour accéder à la page de configuration du service.

  4. Cliquez sur l'onglet Connexions.

    image

  5. Après avoir sélectionné un connecteur VPC, sélectionnez Acheminer uniquement les requêtes envoyées à des adresses IP privées via le connecteur VPC ou Acheminer tout le trafic via le connecteur VPC.

  6. Cliquez sur Créer ou Déployer.

gcloud

Pour spécifier un paramètre de sortie, utilisez l'option --vpc-egress. Vous pouvez spécifier un paramètre de sortie lors du déploiement :

gcloud run deploy SERVICE \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING
  • Remplacez SERVICE par le nom du service.
  • Remplacez IMAGE_URL par une référence à l'image de conteneur, par exemple gcr.io/myproject/my-image:latest.
  • Remplacez CONNECTOR_NAME par le nom de votre connecteur.
  • Remplacez EGRESS_SETTING par une valeur de paramètre de sortie :
    • all-traffic : achemine tout le trafic sortant via le connecteur.
    • private-ranges-only : achemine uniquement le trafic destiné à des adresses internes via le connecteur VPC.

Vous pouvez également mettre à jour un service existant et modifier le paramètre de sortie :

gcloud run services update SERVICE --vpc-egress EGRESS_SETTING

YAML

Vous pouvez télécharger et afficher la configuration de service existante à l'aide de la commande gcloud run services describe --format export, qui renvoie les résultats nettoyés au format YAML. Vous pouvez ensuite modifier les champs décrits ci-dessous et importer le fichier YAML modifié à l'aide de la commande gcloud beta run services replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration, exécutez la commande suivante :

    gcloud run services describe SERVICE --format export > service.yaml
  2. Ajoutez ou mettez à jour l'attribut run.googleapis.com/vpc-access-egress 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
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
    • Remplacez SERVICE par le nom de votre service Cloud Run.
    • Remplacez CONNECTOR_NAME par le nom de votre connecteur. L'attribut run.googleapis.com/vpc-access-connector est obligatoire lorsque vous spécifiez un paramètre de sortie.
    • Remplacez EGRESS_SETTING par l'un des éléments suivants :
      • all-traffic : achemine tout le trafic sortant via le connecteur.
      • private-ranges-only : achemine uniquement le trafic destiné à des adresses internes via le connecteur VPC.
  3. Remplacez la configuration du service en utilisant la commande suivante :

    gcloud beta run services replace service.yaml

Afficher les paramètres du connecteur d'accès au VPC sans serveur

Vous pouvez afficher les paramètres actuels du connecteur d'accès au VPC sans serveur pour votre service à l'aide de Cloud Console ou de l'outil de ligne de commande gcloud :

Console

  1. Accédez à Cloud Run

  2. Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.

  3. Cliquez sur l'onglet Révisions.

  4. Dans le panneau de détails situé à droite, le paramètre du connecteur d'accès au VPC sans serveur est répertorié dans l'onglet Connexions.

gcloud

  1. Exécutez la commande suivante :

    gcloud run services describe SERVICE
  2. Recherchez le paramètre de connecteur d'accès au VPC sans serveur dans la configuration renvoyée.

Déconnecter un service d'un réseau VPC

Vous pouvez déconnecter un service de votre réseau VPC à l'aide de Cloud Console ou de l'outil de ligne de commande gcloud :

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 un service existant, cliquez sur celui-ci, puis sur Modifier et déployer la nouvelle révision.

  3. Si vous configurez un nouveau service, renseignez la page de paramètres initiale du service, puis cliquez sur Suivant > Paramètres avancés pour accéder à la page de configuration du service.

  4. Cliquez sur l'onglet Connexions.

    image

  5. Dans le champ Connecteur VPC, sélectionnez Aucun pour déconnecter votre service d'un réseau VPC.

  6. Cliquez sur Créer ou Déployer.

gcloud

Exécutez la commande gcloud run services update avec les options suivantes :

gcloud run services update SERVICE --clear-vpc-connector
  • Remplacez SERVICE par le nom du service.

Des frais continuent à s'appliquer même si les connecteurs ne reçoivent pas de trafic et sont déconnectés. Pour en savoir plus, reportez-vous à la section Tarification. Si vous n'avez plus besoin de votre connecteur, veillez à le supprimer pour éviter que la facturation continue.

Supprimer un connecteur

Avant de supprimer un connecteur, assurez-vous qu'aucun service n'y est encore connecté.

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

Pour supprimer un connecteur, utilisez Cloud Console ou l'outil de ligne de commande gcloud :

Console

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

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

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

  3. Cliquez sur Supprimer.

gcloud

Utilisez la commande gcloud suivante pour supprimer un connecteur :

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

Remplacez l'élément suivant :

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

Dépannage

Autorisations de compte de service

Pour effectuer des opérations dans votre projet 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

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 page Définir des contraintes d'accès aux images pour savoir comment mettre à jour votre règle d'administration en conséquence.
  • Définissez la règle d'administration constraints/compute.vmCanIpForward pour autoriser les VM à activer le transfert IP.

Si vous avez spécifié un connecteur, mais que vous ne pouvez toujours pas accéder aux ressources de votre réseau VPC, procédez comme suit:

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

Étapes suivantes