Par défaut, un service Cloud Run se connecte à des points de terminaison externes sur Internet à l'aide d'un pool d'adresses IP dynamique. Si le service Cloud Run se connecte à un point de terminaison externe nécessitant une adresse IP statique, telle qu'une base de données ou une API utilisant un pare-feu basé sur l'adresse IP, vous devez configurer votre service Cloud Run pour acheminer les requêtes à l'aide d'une adresse IP statique.
Cette page explique comment activer un service Cloud Run pour envoyer des requêtes à l'aide d'une adresse IP statique.
Présentation de la tâche
Pour permettre à un service Cloud Run d'acheminer les requêtes à l'aide d'une adresse IP statique, configurez la sortie VPC du service Cloud Run afin d'acheminer tout le trafic sortant via un Réseau VPC comportant une passerelle Cloud NAT configurée avec l'adresse IP statique.
Le routage de votre trafic via Cloud NAT ne provoque 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.
Tous les services Cloud Run connectés au même réseau VPC partagent la même adresse IP de sortie. Pour utiliser des adresses IP de sortie différentes pour des services Cloud Run distincts, suivez cette page afin de créer des sous-réseaux distincts et, éventuellement, des connecteurs d'accès au VPC sans serveur distincts.
Créer un sous-réseau
Vous devez créer un sous-réseau /28
dédié pour héberger un connecteur. Si vous utilisez la sortie VPC directe, utilisez un sous-réseau existant ou créez-en un autre. Si vous utilisez un connecteur, le sous-réseau dédié empêche d'autres ressources de calcul de votre réseau VPC, telles que les VM Compute Engine ou les clusters Google Kubernetes Engine, d'utiliser accidentellement l'adresse IP statique si vous avez configuré un VPC sans serveur pour accéder à Internet.
gcloud
Recherchez le nom de votre réseau VPC :
gcloud compute networks list
Vous devriez voir une sortie semblable à ce qui suit.
NAME SUBNET_MODE BGP_ROUTING_MODE default AUTO REGIONAL
Identifiez le réseau que vous allez associer à votre connecteur d'Accès au VPC sans serveur.
Créez un sous-réseau dans le VPC pour le connecteur d'accès au VPC sans serveur.
gcloud compute networks subnets create SUBNET_NAME \ --range=RANGE --network=NETWORK_NAME --region=REGION
Remplacez les valeurs suivantes dans cette commande :
SUBNET_NAME
par le nom que vous souhaitez attribuer au sous-réseau ;RANGE
par la plage d'adresses IP, au format CIDR, que vous souhaitez attribuer à ce sous-réseau (par exemple,10.124.0.0/28
) ;NETWORK_NAME
par le nom du réseau VPC.REGION
par la région dans laquelle vous souhaitez créer un connecteur d'accès au VPC sans serveur.
Terraform
Créez le réseau VPC à utiliser.
Remplacez
cr-static-ip-network
par le nom du sous-réseau.Créez un sous-réseau dans le VPC pour le connecteur d'accès au VPC sans serveur.
Remplacez les éléments suivants :
cr-static-ip
par le nom de votre sous-réseau10.124.0.0/28
par votre plage CIDRus-central1
avec votre région Google Cloud
Créez un connecteur d'accès au VPC sans serveur.
Vous n'avez pas besoin de créer de connecteur si vous utilisez l'intégration de sortie VPC directe. Si vous n'utilisez pas la sortie VPC directe, vous avez besoin d'un connecteur d'accès au VPC sans serveur pour acheminer le trafic sortant de votre service Cloud Run vers un réseau VPC.
Créez un connecteur d'accès au VPC sans serveur.
gcloud
Créez un connecteur d'accès au VPC sans serveur avec un sous-réseau pré-créé.
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region=REGION \ --subnet-project=PROJECT_ID \ --subnet=SUBNET_NAME
Remplacez les valeurs suivantes dans cette commande :
CONNECTOR
par le nom que vous souhaitez attribuer à cette ressource.PROJECT_ID
par un nom qui héberge le sous-réseau.SUBNET_NAME
par le nom du sous-réseau que vous avez créé.REGION
par la région dans laquelle vous souhaitez créer une passerelle Cloud NAT.
Terraform
Créez un connecteur d'accès au VPC sans serveur.
Remplacez
cr-conn
par le nom de votre connecteur d'accès au VPC sans serveur.
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 valeurs suivantes dans cette commande :
ROUTER_NAME
par le nom de la ressource Cloud Router que vous souhaitez créer.NETWORK_NAME
par le nom du réseau VPC que vous avez trouvé précédemment.REGION
par la 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 valeurs suivantes dans cette commande :
ORIGIN_IP_NAME
par le nom que vous souhaitez attribuer à la ressource d'adresse IP.REGION
par la région qui exécute 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 valeurs suivantes dans cette commande :
NAT_NAME
par le nom de la ressource de passerelle Cloud NAT que vous souhaitez créer.ROUTER_NAME
par le nom de votre Cloud Router.REGION
par la région dans laquelle vous souhaitez créer une passerelle Cloud NAT.SUBNET_NAME
par le nom de votre sous-réseau.ORIGIN_IP_NAME
par le nom de la ressource d'adresse IP réservée que vous avez créée à l'étape précédente.
Terraform
Créez un Cloud Router pour programmer une passerelle Cloud NAT :
Remplacez
cr-static-ip-router
par 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-addr
par 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-nat
par le nom de votre passerelle Cloud NAT.
Acheminer le trafic Cloud Run via le réseau VPC
Une fois la Cloud NAT configurée, déployez ou mettez à jour votre service Cloud Run avec la sortie VPC directe ou 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 valeurs suivantes dans cette commande :
- SERVICE_NAME par le nom du service Cloud Run que vous souhaitez déployer.
- 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.
- REGION par une région pour 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 valeurs suivantes dans cette commande :
- SERVICE_NAME par le nom du service Cloud Run que vous souhaitez déployer.
- 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
. - CONNECTOR_NAME par le nom de votre connecteur d'accès au VPC sans serveur.
- REGION par une région pour votre service.
Terraform
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.