Par défaut, les charges de travail Cloud Run se connectent à des points de terminaison externes sur Internet à l'aide d'un pool régional d'adresses IP dynamiques partagées entre toutes les charges de travail sans serveur. Étant donné que d'autres charges de travail partagent ce pool, vous ne devez pas vous y fier lorsque vous avez besoin d'une adresse IP d'origine prévisible ou d'une réputation d'adresse IP isolée.
Configurez vos charges de travail Cloud Run pour acheminer les requêtes sortantes à l'aide d'une adresse IP statique dédiée dans les situations suivantes :
- Vous vous connectez à une base de données ou à une API externe qui utilise une liste d'autorisation d'adresses IP ou un pare-feu.
- Vous vous connectez à des points de terminaison externes sensibles à la réputation, tels que des passerelles de paiement, des bases de données hébergées ou des API partenaires protégées par des pare-feu d'application Web (WAF) tiers. Le trafic bruyant d'un autre locataire sur le pool d'adresses IP partagé par défaut peut dégrader la réputation des adresses IP et entraîner le blocage ou la limitation de vos requêtes par les WAF externes.
- Vous exécutez des charges de travail d'analyse de réseau autorisée, d'énumération de ports, de fingerprinting d'hôte, de détection de failles, de scraping Web ou de tests de charge.
Pour envoyer des requêtes sortantes à partir d'une adresse IP statique dédiée, configurez votre service Cloud Run pour qu'il utilise la sortie VPC directe. Vous pouvez également créer un connecteur.
Présentation de la tâche
Pour acheminer les requêtes à l'aide d'une adresse IP statique, configurez la sortie VPC du service afin d'envoyer tout le trafic sortant (--vpc-egress=all-traffic) via un réseau VPC.
Associez une passerelle Cloud NAT à ce réseau avec votre adresse IP statique réservée.
Dans ce tutoriel, vous allez configurer Cloud NAT en mode manuel et lui attribuer une seule adresse IP statique. Si vos charges de travail évoluent vers de nombreuses instances de conteneur ou ouvrent de nombreuses connexions simultanées, par exemple lors d'une analyse de réseau autorisée, attribuez plusieurs adresses IP statiques à Cloud NAT. Vous pouvez également augmenter le nombre minimal de ports par instance de conteneur ou activer l'allocation de ports dynamique pour éviter l'épuisement des ports. Découvrez comment les passerelles Cloud NAT utilisent les adresses IP et les ports.
Le routage de votre trafic via Cloud NAT n'ajoute pas de saut supplémentaire dans votre pile réseau, car la passerelle Cloud NAT et le routeur Cloud Router ne fournissent qu'un plan de contrôle, et les paquets ne passent pas par la passerelle NAT ou le routeur Cloud Router.
Configurer la traduction d'adresse réseau (NAT)
Si vous utilisez la sortie VPC directe ou un connecteur d'accès au VPC sans serveur, les requêtes du service Cloud Run arrivent sur votre réseau VPC. Si vous souhaitez acheminer les requêtes sortantes vers des points de terminaison externes à l'aide d'une adresse IP statique, configurez une passerelle Cloud NAT.
gcloud
Créez un Cloud Router pour programmer une passerelle Cloud NAT :
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
Remplacez les éléments suivants :
ROUTER_NAME: nom de la ressource Cloud Router que vous souhaitez créer.NETWORK_NAME: nom du réseau VPC que vous avez trouvé précédemment.REGION: région dans laquelle vous souhaitez créer une passerelle Cloud NAT.
Réserver une adresse IP statique Une ressource d'adresse IP réservée conserve l'adresse IP sous-jacente lorsque la ressource à laquelle elle est associée est supprimée et recréée :
gcloud compute addresses create ORIGIN_IP_NAME --region=REGION
Remplacez les éléments suivants :
ORIGIN_IP_NAME: nom que vous souhaitez attribuer à la ressource d'adresse IP.REGION: région qui exécutera le routeur Cloud NAT. Idéalement, la même région que votre service Cloud Run, afin de minimiser la latence et les coûts du réseau.
Créez une configuration de passerelle Cloud NAT sur ce routeur pour acheminer le trafic provenant du réseau VPC à l'aide de l'adresse IP statique que vous avez créée :
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
Remplacez les éléments suivants :
NAT_NAME: nom de la ressource de passerelle Cloud NAT que vous souhaitez créer.ROUTER_NAME: nom de votre routeur Cloud Router.REGION: région dans laquelle vous souhaitez créer une passerelle Cloud NAT.SUBNET_NAME: nom de votre sous-réseauORIGIN_IP_NAME: nom de la ressource d'adresse IP réservée que vous avez créée à l'étape précédente.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Créez un Cloud Router pour programmer une passerelle Cloud NAT :
Remplacez
cr-static-ip-routerpar le nom de votre sous-réseau.Réserver une adresse IP statique Une ressource d'adresse IP réservée conserve l'adresse IP sous-jacente lorsque la ressource à laquelle elle est associée est supprimée et recréée :
Remplacez
cr-static-ip-addrpar le nom de votre sous-réseau.Créez une configuration de passerelle Cloud NAT sur ce routeur pour acheminer le trafic provenant du réseau VPC à l'aide de l'adresse IP statique que vous avez créée :
Remplacez
cr-static-natpar le nom de votre passerelle Cloud NAT.
Acheminer le trafic Cloud Run via le réseau VPC
Une fois Cloud NAT configuré, déployez ou mettez à jour votre service Cloud Run avec la sortie VPC directeou le connecteur d'accès au VPC sans serveur, puis définissez la sortie VPC pour acheminer tout le trafic via le réseau VPC :
gcloud
Sortie VPC directe
Pour déployer ou mettre à jour votre service Cloud Run afin d'utiliser la sortie VPC directe et d'acheminer tout le trafic de sortie via celui-ci, exécutez la commande suivante :
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --region=REGION \ --vpc-egress=all-traffic
Remplacez les éléments suivants :
- SERVICE_NAME : nom du service Cloud Run que vous souhaitez déployer.
IMAGE_URL: référence à l'image de conteneur, par exempleus-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 respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- NETWORK : nom de votre réseau VPC.
- SUBNET : nom de votre sous-réseau
- REGION : région de votre service.
Connecteur d'accès au VPC sans serveur
Pour déployer ou mettre à jour votre service Cloud Run afin d'utiliser un connecteur d'accès au VPC sans serveur et d'acheminer tout le trafic sortant via celui-ci, exécutez la commande suivante :
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --vpc-connector=CONNECTOR_NAME \ --region=REGION \ --vpc-egress=all-traffic
Remplacez les éléments suivants :
- SERVICE_NAME : nom du service Cloud Run que vous souhaitez déployer.
IMAGE_URL: référence à l'image de conteneur, par exempleus-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 respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- CONNECTOR_NAME : nom de votre connecteur d'accès au VPC sans serveur.
- REGION : région de votre service.
YAML
Sortie VPC directe
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
Modifiez-les si nécessaire.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]' run.googleapis.com/vpc-access-egress: all-traffic spec: containers: - image: IMAGE_URL
Remplacez les éléments suivants :
- SERVICE : nom du service Cloud Run.
- NETWORK : nom de votre réseau VPC.
- SUBNET : nom de votre sous-réseau
- IMAGE_URL : URL de l'image de conteneur de votre service.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Par défaut, la commande
gcloud run services replaceutilise le fichierservice.yamls'il est présent.
Connecteur d'accès au VPC sans serveur
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
Modifiez-les si nécessaire.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME spec: containers: - image: IMAGE_URL
Remplacez les éléments suivants :
- SERVICE : nom du service Cloud Run.
- CONNECTOR_NAME : nom de votre réseau d'accès au VPC sans serveur.
IMAGE_URL: référence à l'image de conteneur, par exempleus-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 respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Par défaut, la commande
gcloud run services replaceutilise le fichierservice.yamls'il est présent.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Sortie VPC directe
Ce service Cloud Run utilise la sortie VPC directe et achemine tout le trafic de sortie via celui-ci :
Connecteur d'accès au VPC sans serveur
Ce service Cloud Run utilise un connecteur VPC et achemine tout le trafic de sortie via celui-ci :
Remplacez us-docker.pkg.dev/cloudrun/container/hello par une référence à votre image de conteneur.
Vérifier l'adresse IP externe statique
Une fois la procédure ci-dessus terminée, vous avez configuré Cloud NAT sur votre réseau VPC avec une adresse IP statique prédéfinie, et vous avez acheminé tout le trafic sortant de votre service Cloud Run vers votre réseau VPC. Les requêtes en provenance de votre service Cloud Run sont acheminées via votre réseau VPC et atteignent les points de terminaison externes à l'aide de l'adresse IP statique.
Pour vérifier ce comportement et confirmer l'adresse IP d'origine utilisée par votre service, vous pouvez envoyer une requête à une API ou à un site Web tel que curlmyip.org qui affiche l'adresse IP d'origine.
Supprimer l'adresse IP externe statique
Si vous n'avez plus besoin d'adresse IP externe statique, consultez la page Libérer une adresse IP externe statique.