Adresse IP sortante statique

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.

Nous vous recommandons de configurer Cloud Run pour envoyer du trafic vers un réseau VPC à l'aide de la sortie VPC directe. Vous pouvez toutefois créer un connecteur.

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.

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

  1. 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.
  2. 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.
  3. 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 avec le nom de la ressource d'adresse IP réservée que vous avez créée à l'étape précédente.

Terraform

  1. Créez un Cloud Router pour programmer une passerelle Cloud NAT :

    resource "google_compute_router" "default" {
      name    = "cr-static-ip-router"
      network = google_compute_network.default.name
      region  = google_compute_subnetwork.default.region
    }

    Remplacez cr-static-ip-router par le nom de votre sous-réseau.

  2. 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 :

    resource "google_compute_address" "default" {
      name   = "cr-static-ip-addr"
      region = google_compute_subnetwork.default.region
    }

    Remplacez cr-static-ip-addr par le nom de votre sous-réseau.

  3. 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 :

    resource "google_compute_router_nat" "default" {
      name   = "cr-static-nat"
      router = google_compute_router.default.name
      region = google_compute_subnetwork.default.region
    
      nat_ip_allocate_option = "MANUAL_ONLY"
      nat_ips                = [google_compute_address.default.self_link]
    
      source_subnetwork_ip_ranges_to_nat = "LIST_OF_SUBNETWORKS"
      subnetwork {
        name                    = google_compute_subnetwork.default.id
        source_ip_ranges_to_nat = ["ALL_IP_RANGES"]
      }
    }

    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 :

resource "google_cloud_run_v2_service" "default" {
  name     = "cr-static-ip-service"
  location = google_compute_subnetwork.default.region

  deletion_protection = false # set to "true" in production

  template {
    containers {
      # Replace with the URL of your container
      #   gcr.io/<YOUR_GCP_PROJECT_ID>/<YOUR_CONTAINER_NAME>
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    scaling {
      max_instance_count = 5
    }
    vpc_access {
      connector = google_vpc_access_connector.default.id
      egress    = "ALL_TRAFFIC"
    }
  }
  ingress = "INGRESS_TRAFFIC_ALL"

}

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.