Dirección IP saliente estática

De forma predeterminada, un servicio de Cloud Run se conecta a extremos externos en Internet mediante un grupo de direcciones IP dinámicas. Esta configuración predeterminada no es apropiada si el servicio de Cloud Run se conecta a un extremo externo que requiere conexiones que se originen desde una dirección IP estática, como una base de datos o una API con un firewall basado en direcciones IP. En el caso de esas conexiones, debes configurar tu servicio de Cloud Run para enrutar las solicitudes a través de una dirección IP estática.

En esta guía, se describe cómo habilitar un servicio de Cloud Run para enviar solicitudes mediante una dirección IP estática.

Descripción general de la tarea

Si quieres permitir que un servicio de Cloud Run enrute solicitudes a través de una dirección IP estática, debes configurar la salida de VPC del servicio de Cloud Run con el fin de que enrute todo el tráfico saliente mediante una red de VPC que tenga una puerta de enlace de Cloud NAT configurada con la dirección IP estática.

Enrutar el tráfico a través de Cloud NAT no produce un salto adicional en tu pila de herramientas de redes, ya que Cloud Router y la puerta de enlace de Cloud NAT proporcionan solo un plano de control, y los paquetes no pasan por ninguno de ellos.

Ten en cuenta que todos los servicios de Cloud Run conectados a la misma red de VPC compartirán la misma dirección IP de salida. Si deseas usar diferentes direcciones IP de salida para los distintos servicios de Cloud Run, sigue esta guía y usa redes de VPC independientes.

Crea un conector de Acceso a VPC sin servidores

Para enrutar el tráfico saliente del servicio de Cloud Run a una red de VPC, necesitas un conector de Acceso a VPC sin servidores. Crea un conector de Acceso a VPC sin servidores mediante las instrucciones que se indican en Crea un conector.

Configura la traducción de direcciones de red (NAT)

Con un conector de Acceso a VPC sin servidores, las solicitudes desde tu servicio de Cloud Run llegarán a tu red de VPC. Para enrutar las solicitudes salientes a extremos externos por medio de una IP estática, debes configurar una puerta de enlace de Cloud NAT.

Línea de comandos

  1. Busca el nombre de tu red de VPC:

    gcloud compute networks list

    Deberías ver un resultado como el siguiente:

    NAME     SUBNET_MODE  BGP_ROUTING_MODE
    default  AUTO         REGIONAL

    Identifica la red que conectaste al conector de Acceso a VPC sin servidores.

  2. Crea un Cloud Router nuevo para programar una puerta de enlace NAT:

    gcloud compute routers create ROUTER_NAME \
      --network=NETWORK_NAME \
      --region=REGION

    En el comando anterior, reemplaza los siguientes valores:

    • ROUTER_NAME por un nombre para el recurso de Cloud Router que deseas crear
    • NETWORK_NAME por el nombre de la red de VPC que encontraste en el paso 1
    • REGION por la región en la que deseas crear una puerta de enlace NAT
  3. Reserva una dirección IP estática. Un recurso de dirección IP reservada retiene la dirección IP subyacente cuando el recurso al que está asociado se borra y se vuelve a crear:

    gcloud compute addresses create ORIGIN_IP_NAME --region=REGION

    En el comando anterior, reemplaza los siguientes valores:

    • ORIGIN_IP_NAME por el nombre que deseas asignar al recurso de dirección IP
    • REGION por la región en la que se ejecutará el router de Cloud NAT. Lo ideal sería que el router esté en la misma región en la que está tu servicio de Cloud Run para minimizar la latencia y los costos de red
  4. Crea una configuración de puerta de enlace de Cloud NAT en este router para enrutar el tráfico que se origina desde la red de VPC mediante la dirección IP estática que creaste:

    gcloud compute routers nats create NAT_NAME \
      --router=ROUTER_NAME \
      --region=REGION \
      --nat-all-subnet-ip-ranges \
      --nat-external-ip-pool=ORIGIN_IP_NAME
    

    En el comando anterior, reemplaza los siguientes valores:

    • NAT_NAME por un nombre para el recurso de puerta de enlace de Cloud NAT que deseas crear
    • ROUTER_NAME por el nombre de tu Cloud Router
    • REGION por la región en la que deseas crear una puerta de enlace NAT
    • ORIGIN_IP_NAME por el nombre del recurso de dirección IP reservada que creaste en el paso anterior

Enruta el tráfico de Cloud Run a través de la red de VPC

Después de que se haya configurado NAT, solo debes implementar tu servicio de Cloud Run con el conector de Acceso a VPC sin servidores y configurar la salida de VPC para enrutar todo el tráfico a través de la red de VPC:

Línea de comandos

Implementa o actualiza tu servicio de Cloud Run para usar el conector de VPC y enrutar todo el tráfico de salida a través de él:

gcloud beta run deploy SERVICE_NAME \
   --image=IMAGE_URL \
   --vpc-connector=CONNECTOR_NAME \
   --vpc-egress=all

En el comando anterior, reemplaza los siguientes valores:

  • SERVICE_NAME por el nombre del servicio de Cloud Run que deseas implementar
  • IMAGE_URL por una referencia a la imagen del contenedor, como gcr.io/myproject/my-image:latest
  • CONNECTOR_NAME por el nombre de tu conector de Acceso a VPC sin servidores

Verifica la IP externa estática

Si completaste los pasos anteriores, configuraste Cloud NAT en tu red de VPC con una dirección IP estática predefinida y enrutaste todo el tráfico saliente de tu servicio de Cloud Run a tu red de VPC. Las solicitudes del servicio de Cloud Run viajan a través de tu red de VPC y llegan a extremos externos mediante la dirección IP estática.

Para verificar este comportamiento y confirmar la dirección IP de origen que usa tu servicio, puedes realizar una solicitud a un sitio web o una API que muestre la dirección IP de origen, como curlmyip.org.