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.
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.
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
Decide si deseas implementar los recursos en un proyecto existente o en un proyecto nuevo que Terraform cree.
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.
- Administrador de Compute (
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:
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Compute Engine, GKE, IAM, Service Usage y Resource Manager.
-
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:
Para usar el host local
Completa los siguientes pasos:
-
Instala Terraform versión 0.13.0 o posterior.
-
Descarga las plantillas de ejemplo de Terraform desde Ejemplos y módulos de Terraform para Google Cloud.
-
Configura la autenticación:
-
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. -
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 servicioPROJECT_ID
: el ID del proyecto en el que creaste la cuenta de servicio
-
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 clavesSERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicioPROJECT_ID
: el ID del proyecto en el que creaste la cuenta de servicio
-
-
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.
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
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
.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 sutype
.- Variables que no tienen un valor predeterminado (por ejemplo,
Crea un archivo de texto llamado
terraform.tfvars
.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"
Inicializa Terraform mediante este comando:
terraform init
Espera hasta ver el siguiente mensaje:
Terraform has been successfully initialized!
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.
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
yterraform plan
.
Aprovisionamiento de recursos
Cuando no se necesiten más cambios en la configuración, implementa los recursos de la siguiente manera:
Ejecuta el siguiente comando:
terraform apply
Terraform muestra una lista de los recursos que se crearán.
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.Ejecuta el siguiente comando:
terraform destroy
Terraform muestra una lista de los recursos que se crearán.
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?
- Obtén más información sobre cómo diseñar una red de concentrador y radio.
- Crea una base de nube segura y de extremo a extremo.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.