Configura la pila doble (IPv4 e IPv6)

Las subredes de pila doble permiten que tus recursos de App Engine envíen tráfico IPv4 e IPv6 a una red de VPC con salida de VPC directa. Puedes cambiar una subred existente solo IPv4 (pila única) a una subred de pila doble.

Tipos de subredes

Las redes de VPC admiten los siguientes tipos de subredes de Compute Engine:

  • Subredes solo IPv4 (pila única) con solo rangos de subred IPv4

  • Subredes IPv4 e IPv6 (pila doble) con rangos de subred IPv4 e IPv6

Limitaciones de la pila doble

Antes de cambiar el tipo de pila en un recurso de App Engine existente, ten en cuenta las siguientes limitaciones:

  • La compatibilidad con pila doble solo está disponible con subredes en una red de VPC de modo personalizado. Para que el tipo de acceso interno esté disponible para las subredes de pila doble, se debe habilitar el rango de IPv6 interno de la red de VPC. Configura o convierte la red de VPC al modo personalizado.

  • En comparación con las subredes solo IPv4, las subredes de pila doble pueden experimentar latencias de inicio en frío elevadas, lo que limita la rapidez con la que se puede escalar tu aplicación.

  • NAT64 no es compatible.

Antes de comenzar

Asegúrate de que el agente de servicio de App Engine tenga el rol de administrador de IP pública de Compute (roles/compute.publicIpAdmin) para usar la subred con IPv6 externa.

Configura una subred de pila doble

Las subredes de pila doble tienen rangos de direcciones IPv4 e IPv6.

Para configurar una subred de pila doble, puedes usar la consola de Google Cloud o Google Cloud CLI:

Console

  1. Ve a la consola de Google Cloud y habilita la API de Compute Engine:

    Habilitar la API de Compute Engine

  2. Navega a la página Redes de VPC:

    Ir a las redes de VPC

  3. Haz clic en Crear red de VPC si estás creando una nueva red en modo personalizado. Si usas una red de VPC existente, haz clic en el nombre de la red de VPC para ver su página de detalles de la red de VPC.

  4. Si creas una red nueva o conviertes una existente, ingresa el nombre y asegúrate de que el Modo de creación de subred esté configurado como Personalizado. Luego, selecciona Configurar un rango de IPv6 interno de ULA para esta red de VPC.

  5. En la pestaña Subredes, haz clic en Agregar subred. En el panel que aparece, haz lo siguiente:

    1. Proporciona un Nombre.
    2. Selecciona una Región.
    3. En Tipo de pila IP, selecciona IPv4 e IPv6 (pila doble).
    4. Ingresa un rango IPv4. Este es el rango IPv4 principal de la subred.
    5. Selecciona el tipo de acceso IPv6.

      Si la opción Interno no está disponible y la necesitas, verifica que se haya asignado un rango de IPv6 interno en la red.

    6. Haz clic en Agregar.

gcloud

  1. Para crear una red de modo personalizado que admita subredes de pila doble, ejecuta el comando gcloud compute networks create.

    Para configurar los rangos de IPv6 internos en cualquier subred de esta red, usa la marca --enable-ula-internal-ipv6. Esta opción asigna un prefijo ULA /48 que pertenece al rango fd20::/20 que usa Google Cloud para los rangos de subred IPv6 internos.

    gcloud compute networks create NETWORK \
      --subnet-mode=custom \
      --enable-ula-internal-ipv6

    Reemplaza NETWORK por el nombre de la red de VPC que contendrá la subred nueva.

  2. Para convertir una red de modo automático o actualizar una red de modo personalizado de modo que admita subredes de pila doble, sigue estos pasos:

    1. Si conviertes una red de modo automático, cambia la red al modo de subred personalizado:

      gcloud compute networks update NETWORK \
        --switch-to-custom-subnet-mode
    2. Habilita un rango de IPv6 interno en la red:

      gcloud compute networks update NETWORK \
        --enable-ula-internal-ipv6

      Reemplaza NETWORK por el nombre de la red de VPC que contiene la subred nueva.

  3. Para crear una subred de pila doble con un rango IPv6, ejecuta el comando subnets create con la configuración de pila doble:

    gcloud compute networks subnets create SUBNET \
      --network=NETWORK \
      --range=PRIMARY_IPv4_RANGE \
      --stack-type=IPV4_IPV6 \
      --ipv6-access-type=IPV6_ACCESS_TYPE \
      --region=REGION

    Reemplaza lo siguiente:

    • SUBNET: Es un nombre para la subred nueva.
    • NETWORK: Es el nombre de la red de VPC que contendrá la subred nueva.
    • PRIMARY_IPv4_RANGE: Es el rango IPv4 principal para la subred nueva, en notación CIDR. Para obtener más información, consulta Rangos de subredes IPv4.
    • IPV6_ACCESS_TYPE: Es el tipo de acceso IPv6 para la subred nueva, ya sea internal o external.
    • REGION: Es la región de Google Cloud en la que se creará la subred nueva.

Agrega la subred de pila doble a un recurso de App Engine

Después de crear una subred de pila doble, agrégala a tu servicio de App Engine con YAML o Terraform. Para habilitar la salida de VPC directa en un servicio que aún no la usa, implementa una versión nueva y migra el tráfico a ella. También puedes borrar primero la versión implementada, en lugar de reemplazar un ID de versión existente.

YAML

  1. En el archivo app.yaml, especifica la red y la subred en el campo vpc_access:

    vpc_access:
    network_interface:
     network: NETWORK
     subnet: SUBNET
    vpc_egress: EGRESS_SETTING

    Reemplaza lo siguiente:

    • NETWORK: Es el nombre de la red que creaste en el paso anterior.

    • SUBNET: Es el nombre de la subred que creaste en el paso anterior.

    • Opcional: EGRESS_SETTING controla cómo se enruta el tráfico saliente. Este campo admite los siguientes parámetros de configuración:

      • all-traffic: Todas las solicitudes salientes se enrutan a través de la red de VPC.
      • private-ranges-only (predeterminado): Solo el tráfico a direcciones IP internas se enruta a través de la red de VPC. El tráfico de Internet usa la ruta predeterminada de App Engine.
  2. Ejecuta el siguiente comando para implementar en App Engine:

    gcloud app deploy

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

  1. Agrega el siguiente bloque vpc_access a un recurso google_app_engine_standard_app_version en tu configuración de Terraform:

    vpc_access {
    vpc_egress = "EGRESS_SETTING"
    network_interfaces {
     network    = "NETWORK"
     subnetwork = "SUBNET"
    }
    }

    Reemplaza lo siguiente:

    • NETWORK: Es el nombre de la red de VPC que creaste en el paso anterior.
    • SUBNET: Es el nombre de la subred que creaste en el paso anterior.
    • Opcional: EGRESS_SETTING controla cómo se enruta el tráfico saliente. Este campo admite los siguientes parámetros de configuración:
    • ALL_TRAFFIC: Todas las solicitudes salientes se enrutan a través de la red de VPC.
    • PRIVATE_IP_RANGES (predeterminado): Solo el tráfico a direcciones IP internas se enruta a través de la red de VPC. El tráfico de Internet usa la ruta predeterminada de App Engine.
  2. Si la versión ya se implementó sin la salida de VPC directa, actualiza el campo version_id a un valor nuevo. No puedes habilitar la salida de VPC directa en una versión existente.

  3. Aplica la configuración:

    terraform apply

Cambia una subred de pila única a pila doble

Para agregar un rango de subred IPv6 a una subred solo IPv4 existente en una red de VPC de modo personalizado, consulta Cambia el tipo de pila de una subred a pila doble. Luego, implementa el servicio de App Engine en la subred de pila doble.

Cambia una subred de pila doble a pila única

Para cambiar la subred de pila doble de un recurso a una subred de pila única, consulta Cambia una subred de pila doble a solo IPv4. Luego, implementa el servicio de App Engine en la subred de pila única.

Verifica la red y la subred

Para verificar que tu recurso esté en la red de VPC, ejecuta el siguiente comando:

gcloud app versions describe VERSION --service=SERVICE

Reemplaza lo siguiente:

  • VERSION: la versión implementada de tu servicio
  • SERVICE: el servicio implementado

En el siguiente resultado de ejemplo, se muestran tu red y subred:

  vpcAccess:
    networkInterfaces:
    - network: projects/YOUR_PROJECT/global/networks/YOUR_NETWORK
      subnet: projects/YOUR_PROJECT/regions/YOUR_REGION/subnetworks/YOUR_SUBNET
    vpcEgress: ALL_TRAFFIC/PRIVATE_IP_RANGES