Implementa una red de concentrador y radio mediante el intercambio de tráfico entre redes de VPC

Last reviewed 2022-01-11 UTC

En este instructivo, se muestra cómo configurar una red de concentrador y radio en Google Cloud mediante la capacidad de intercambio de tráfico entre redes de la nube privada virtual (VPC). El intercambio de tráfico entre redes de VPC te permite conectar redes de VPC para que las cargas de trabajo que se encuentran en redes de VPC diferentes puedan comunicarse de forma interna. El tráfico permanece dentro de la red de Google y no pasa por la Internet pública.

En el siguiente diagrama, se muestra la arquitectura que implementas. Consta de dos redes de VPC de radio, cada una con una red de VPC de concentrador central. Un túnel VPN entre una de las redes de VPC de radio y la red de VPC de concentrador habilita la conectividad entre radios.

Arquitectura de concentrador y radio mediante el intercambio de tráfico entre redes de VPC

Para obtener más información sobre esta arquitectura y otras alternativas de diseño, consulta Arquitectura de red de concentrador y radio.

Objetivos

Aprovisionar los siguientes recursos en Google Cloud mediante una plantilla de Terraform que proporciona Google:

  • Tres redes de VPC, una designada como concentrador y las otras dos como radios.
  • Una subred en cada una de las redes de VPC de una región específica.
  • Configuraciones de intercambio de tráfico entre redes de VPC entre cada red de VPC de radio y la red de VPC del concentrador.
  • Un conjunto de reglas de firewall para cada red de VPC.
  • Una puerta de enlace de Cloud NAT para cada red de VPC de radio.
  • Una instancia de prueba de Compute Engine para cada red de VPC.
  • Un clúster de prueba de Google Kubernetes Engine (GKE) con un solo grupo de nodos en la red de VPC de radio-2.
  • Una cuenta de servicio para las instancias de Compute Engine.
  • Una cuenta de servicio para los nodos de GKE.
  • Puertas de enlace de Cloud VPN estáticas en la red de VPC del concentrador y en la red de VPC del radio-2, con un solo túnel cada una.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  1. Decide si deseas implementar los recursos en un proyecto existente o en un proyecto nuevo que Terraform cree.

  2. Obtén los permisos necesarios.

    Para crear y administrar recursos mediante las plantillas de Terraform proporcionadas, la cuenta de usuario o servicio necesita las siguientes funciones de Identity and Access Management (IAM):

    • Administrador de Compute (roles/compute.admin)
    • Administrador de Kubernetes Engine (roles/container.admin)
    • Administrador de cuenta de servicio (roles/iam.serviceAccountAdmin)
    • Administrador del proyecto de IAM (roles/resourcemanager.projectIamAdmin)
    • Administrador de Service Usage (roles/serviceusage.serviceUsageAdmin)
    • Creador del proyecto (roles/resourcemanager.projectCreator) (obligatorio para implementar los recursos en un proyecto nuevo)

    Si no tienes un permiso necesario o no estás seguro, comunícate con el administrador de tu organización.

  3. Omite este paso si deseas implementar los recursos en un proyecto nuevo que cree Terraform (opcional).

    Para usar un proyecto existente o uno que crees, completa los siguientes pasos:

    1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

      Ir al selector de proyectos

    2. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

    3. Habilita las API de Compute Engine, GKE, IAM, Service Usage y Resource Manager.

      Habilita las API

Prepara el entorno

Puedes completar este instructivo mediante Cloud Shell o tu host local. Cloud Shell ya tiene Terraform preinstalado y configurado para autenticarse con Google Cloud.

Para usar Cloud Shell, sigue estos pasos:

  • Descarga y abre las plantillas de ejemplo de Terraform en Cloud Shell.

    Abrir en Cloud Shell

    Cloud Shell se inicia en una pestaña independiente del navegador, y las plantillas de ejemplo de Terraform se descargan en el directorio “$HOME/cloudshell_open” de tu entorno de Cloud Shell.

Para usar el host local

Completa los siguientes pasos:

  1. Instala Terraform versión 0.13.0 o posterior.

  2. Descarga las plantillas de ejemplo de Terraform desde Ejemplos y módulos de Terraform para Google Cloud.

  3. Configura la autenticación:

    1. Crea la cuenta de servicio:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Reemplaza SERVICE_ACCOUNT_NAME por un nombre para la cuenta de servicio.

    2. Otorga el rol de IAM roles/owner a la cuenta de servicio.

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/owner

      Reemplaza lo siguiente:

      • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio
      • PROJECT_ID: el ID del proyecto en el que creaste la cuenta de servicio
    3. Genera el archivo de claves:

      gcloud iam service-accounts keys create FILE_NAME.json --iam-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

      Reemplaza lo siguiente:

      • FILE_NAME: un nombre para el archivo de claves
      • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio
      • PROJECT_ID: el ID del proyecto en el que creaste la cuenta de servicio
  4. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS para proporcionar credenciales de autenticación al código de la aplicación. Esta variable solo se aplica a la sesión actual de shell. Si quieres que la variable se aplique a sesiones de shell futuras, configura la variable en tu archivo de inicio de shell, por ejemplo, en el archivo ~/.bashrc o ~/.profile.

    Linux o macOS

    export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"

    Reemplaza KEY_PATH por la ruta del archivo JSON que contiene tus credenciales.

    Por ejemplo:

    export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"

    Windows

    Para PowerShell:

    $env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"

    Reemplaza KEY_PATH por la ruta del archivo JSON que contiene tus credenciales.

    Por ejemplo:

    $env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"

    Para el símbolo del sistema:

    set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH

    Reemplaza KEY_PATH por la ruta del archivo JSON que contiene tus credenciales.

Configura las variables de Terraform

El código de Terraform que descargaste incluye variables que puedes usar para personalizar la implementación según tus requisitos. Por ejemplo, puedes ajustar los rangos de CIDR de la subred y especificar el proyecto en el que se deben implementar los recursos.

  1. En el código que descargaste (en tu host local o en Cloud Shell), ve al subdirectorio blueprints/networking/hub-and-spoke-peering.

    cd blueprints/networking/hub-and-spoke-peering
    
  2. Abre el archivo variables.tf.

    Las variables de entrada para la configuración de Terraform se declaran en este archivo. Algunas de las variables tienen un valor default.

  3. Identifica las variables a las que necesitas asignar valores:

    • Variables que no tienen un valor predeterminado (por ejemplo, project_id).
    • Variables con un valor predeterminado que deseas cambiar.

      Por ejemplo, ip_ranges tiene rangos de CIDR predeterminados, pero es posible que debas usar rangos diferentes para la implementación.

    Para cada variable que identifiques, lee su description y anota su type.

  4. Crea un archivo de texto llamado terraform.tfvars.

  5. En el archivo terraform.tfvars o , asigna los valores adecuados a las variables que identificaste antes.

    Ejemplo:

    ip_ranges = {
      hub     = "10.0.0.0/24"
      spoke-1 = "10.0.24.0/24"
      spoke-2 = "10.0.48.0/24"
    }
    
    prefix = "dev"
    
    project_id = "my-project"
    
    region = "us-central1"
    
  6. Inicializa Terraform mediante este comando:

    terraform init
    

    Espera hasta ver el siguiente mensaje:

    Terraform has been successfully initialized!
    
  7. Verifica que la configuración no tenga errores:

    terraform validate
    

    Si el comando muestra un error, realiza las correcciones necesarias en la configuración y vuelve a ejecutar terraform validate.

    Repite este paso hasta que el comando muestre el siguiente mensaje:

    Success! The configuration is valid.
    
  8. Revisa los recursos definidos en la configuración:

    terraform plan
    

    En el resultado, se enumeran los recursos que Terraform aprovisiona cuando aplicas la configuración.

    Si deseas realizar algún cambio, edita la configuración y, luego, vuelve a ejecutar terraform validate y terraform plan.

Aprovisionamiento de recursos

Cuando no se necesiten más cambios en la configuración, implementa los recursos de la siguiente manera:

  1. Ejecuta el siguiente comando:

    terraform apply
    

    Terraform muestra una lista de los recursos que se crearán.

  2. Cuando se te solicite que realices las acciones, ingresa yes.

    Si Terraform muestra un mensaje de error que indica que una o más API no están habilitadas, usa cada vínculo que se muestra en el mensaje para habilitar las API requeridas.

    Terraform muestra mensajes que señalan el progreso de la implementación. Una vez que se hayan creado todos los recursos, Terraform mostrará el siguiente mensaje:

    Apply complete!
    

Ya implementaste una red de concentrador y radio en Google Cloud.

Agrega, cambia o quita recursos

Para agregar, cambiar o quitar recursos, edita la configuración de Terraform y, luego, ejecuta los comandos terraform validate, terraform plan y terraform apply en ese orden.

Limpia

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que creaste en este instructivo, borra todos los recursos cuando no los necesites.

  1. Ejecuta el siguiente comando:

    terraform destroy
    

    Terraform muestra una lista de los recursos que se crearán.

  2. Cuando se te solicite que realices las acciones, ingresa yes.

    Terraform mostrará mensajes que muestran el progreso. Después de borrar todos los recursos, Terraform muestra el siguiente mensaje:

    Destroy complete!
    

¿Qué sigue?