En esta página, se explica cómo configurar tus grupos privados para acceder a recursos externos a través de una IP externa estática.
Para seguir la guía paso a paso en esta tarea directamente en la consola de Google Cloud, haz clic en Guiarme:
Antes de comenzar
-
Enable the Cloud Build, Compute Engine, and Service Networking APIs.
Para obtener los permisos que necesitas para configurar una conexión privada, pídele a tu administrador que te otorgue el rol de IAM de administrador de red de Compute Engine (
roles/compute.networkAdmin
) en el proyecto de Cloud en el que reside la red de VPC. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.Para usar los comandos de
gcloud
de esta página, instala Google Cloud CLI.
Crear red de VPC
Console
Para crear una red de VPC con la consola de Google Cloud, completa los siguientes pasos:
Abre la página Redes de VPC en la consola de Google Cloud.
Haz clic en Crear red de VPC para crear una red nueva.
Verás la página Crear una red de VPC.
Ingresa un Nombre para tu red.
En Modo de creación de subred, selecciona Automático.
Si deseas personalizar otros campos, consulta Crea y administra redes de VPC. De lo contrario, deja todos los campos como están.
Haz clic en Crear para crear tu red de VPC.
Después de hacer clic en Crear, verás tu nueva red de VPC en la página Redes de VPC.
gcloud
Para crear una red de VPC con la herramienta de línea de comandos gcloud
, ingresa el siguiente comando en la terminal, en el que NETWORK_NAME es el nombre de tu red de VPC:
gcloud compute networks create NETWORK_NAME \
--subnet-mode=auto
Después de hacer clic en Crear, verás tu nueva red de VPC en la página Redes de VPC.
Si deseas obtener más información para crear y administrar redes de VPC, consulta Crea y administra redes de VPC.
Crea una conexión privada
Console
Para crear una conexión privada entre tu red de VPC y la red del productor de servicios, completa los siguientes pasos:
Abre la página Redes de VPC en la consola de Google Cloud.
Haz clic en el nombre de tu red.
Verás la página Detalles de la red de VPC.
Haz clic en la pestaña Conexión de servicio privada.
Selecciona la pestaña Rangos de IP asignados a servicios.
Haz clic en Asigna rangos de IP.
Verás la ventana emergente Asignar un rango de IP internas.
Ingresa un Nombre para tu rango de IP.
En Rango de IP (IP Range), selecciona Automático (Automatic).
En el campo Longitud de prefijo, ingresa una longitud de prefijo para tu red.
Haz clic en Asignar para asignar tu rango de IP.
Selecciona la pestaña Conexiones privadas a servicios.
Haz clic en Create Connection.
Verás la ventana emergente Crear una conexión privada.
En Asignación asignada, selecciona tu rango de IP.
Haz clic en Conectar.
Ahora verás tu conexión en la tabla de la pestaña Conexiones privadas a servicios.
Haz clic en Habilitar (Exportar ruta personalizada) para asegurarte de que las rutas de la VPC se apliquen a la red en la que se ejecutan las instancias de tu grupo privado.
Ya configuraste tu red.
gcloud
Para crear una conexión privada entre tu red de VPC y la red del productor de servicios, completa los siguientes pasos:
Ingresa el siguiente comando en la terminal para asignar un rango de IP para tu servicio:
gcloud compute addresses create RESERVED_RANGE_NAME \ --global \ --prefix-length=PREFIX_LENGTH \ --network=VPC_NETWORK \ --project=PROJECT_ID
Aquí:
- RESERVED_RANGE_NAME es el nombre de tu rango asignado.
Por ejemplo,
my-allocated-range
- PREFIX_LENGTH es la longitud del prefijo de tu red. La longitud del prefijo debe ser
/24
o menor, como/22
,/21
, etcétera. - VPC_NETWORK es el nombre de tu red de VPC, como
my-vpc-network
. - PROJECT_ID es el ID de tu proyecto que contiene tu red de VPC.
- RESERVED_RANGE_NAME es el nombre de tu rango asignado.
Por ejemplo,
Ingresa el siguiente comando en la terminal para crear una conexión privada:
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=RESERVED_RANGE_NAME \ --network=VPC_NETWORK \ --project=PROJECT_ID
Aquí:
- RESERVED_RANGE_NAME es el nombre del rango asignado que creaste en el paso anterior.
- VPC_NETWORK es el nombre de tu red de VPC, como
my-vpc-network
. - PROJECT_ID es el ID de tu proyecto que contiene tu red de VPC.
Ingresa el siguiente comando en la terminal para asegurarte de que las rutas de VPC se apliquen a la red en la que se ejecutan las instancias de tu grupo privado:
gcloud compute networks peerings update servicenetworking-googleapis-com \ --export-custom-routes \ --network=VPC_NETWORK \ --project=PROJECT_ID
Aquí:
- VPC_NETWORK es el nombre de tu red de VPC, como
my-vpc-network
. - PROJECT_ID es el ID de tu proyecto que contiene tu red de VPC.
- VPC_NETWORK es el nombre de tu red de VPC, como
Ya configuraste tu red.
Para obtener más información sobre cómo configurar una red, consulta Cómo configurar una conexión privada entre tu red de VPC y la red del productor de servicios.
Crea un grupo privado
Console
Para crear un grupo privado con la consola de Google Cloud, completa los siguientes pasos:
Abre la página Grupo de trabajadores en la consola de Google Cloud:
Selecciona el proyecto en el que deseas crear el grupo privado.
En la página Grupo de trabajadores, haz clic en Crear.
Verás el panel Crear un grupo privado.
En el panel lateral Crear un grupo privado, ingresa la siguiente información:
Ingresa un Nombre para tu grupo privado.
Selecciona una Región en el menú desplegable.
En Red, ingresa la siguiente información:
- Proyecto: Ingresa el ID o número de tu proyecto.
- Red: Ingresa el nombre de tu red de VPC.
- (Opcional) Desmarca la casilla Asignar IP externas para obtener la configuración de red más restringida.
Ya creaste un grupo privado.
gcloud
Para crear un grupo privado con la herramienta de línea de comandos de gcloud
, ingresa el siguiente comando en la terminal:
gcloud builds worker-pools create PRIVATEPOOL_ID \
--project=PRIVATEPOOL_PROJECT_ID \
--region=REGION \
--peered-network=PEERED_NETWORK \
--no-public-egress
Aquí:
- PRIVATEPOOL_ID es el identificador único de tu grupo privado.
- PRIVATEPOOL_PROJECT_ID es el ID del proyecto de Google Cloud en el que deseas crear tu grupo privado.
- REGION es una de las regiones admitidas.
- PEERED_NETWORK es la URL del recurso de red.
--no-public-egress
: Si se establece esta marca, el grupo privado se crea sin una dirección IP externa.
Ya creaste un grupo privado.
Para obtener más información sobre cómo crear y administrar grupos privados, consulta Crea y administra grupos privados.
Cómo acceder a recursos externos en una red privada
De forma predeterminada, las direcciones IP externas asociadas con los grupos privados de Cloud Build no son estáticas ni configurables.Google Cloudlos asigna. Si deseas configurar tus grupos privados para que accedan a recursos externos desde tu red privada con una IP externa estática, debes configurar una máquina virtual (VM) en tu proyecto para que actúe como una puerta de enlace NAT autoadministrada y replique las solicitudes a la Internet pública. Luego, debes configurar rutas personalizadas para reenviar estas solicitudes a tu VM y asegurarte de que las rutas se intercambien con el proyecto de red de servicios.
En esta sección, se describe cómo puedes configurar tus grupos privados para acceder a recursos externos a través de una IP externa estática. Para ello, completa los siguientes pasos:
Crea una secuencia de comandos de inicio para configurar la VM de modo que actúe como proxy de cualquier tráfico enrutado a la VM y enmascare ese tráfico como si provenga de su dirección IP:
#! /bin/bash set -e sysctl -w net.ipv4.ip_forward=1 IFACE=$(ip -brief link | tail -1 | awk {'print $1'}) iptables -t nat -A POSTROUTING -o "$IFACE" -j MASQUERADE
Configura una VM en la misma VPC que tu grupo privado con una regla para permitir que las solicitudes se almacenen en caché a través de la VPC:
gcloud compute instances create VM_NAME \ --image-project=ubuntu-os-cloud --image-family=ubuntu-2204-lts \ --network=NETWORK_NAME \ --private-network-ip=INTERNAL_IP --can-ip-forward \ --zone=ZONE \ --subnet=SUBNETWORK \ --tags=NAT_TAG \ --metadata-from-file=startup-script=STARTUP_SCRIPT
Aquí:
- VM_NAME es el nombre que deseas proporcionar para tu VM.
- NETWORK_NAME es el nombre de la red que creaste en la sección anterior.
- INTERNAL_IP es cualquier dirección IP interna válida dentro del rango de la subred de la región de tu VM. Por ejemplo,
10.128.0.2
- ZONE es la zona asociada con tu red, como
us-central1-a
. - (Opcional) SUBNETWORK es el nombre de tu subred. Puedes encontrar el nombre de tu subred en el equivalente REST de tu subred con el siguiente formato:
projects/project-id/regions/region/subnetworks/subnetwork-name
. Si seleccionaste Automático en Modo de conexión de subred cuando creaste una red de VPC, no necesitas especificar este campo. - NAT_TAG es el nombre de la etiqueta de la puerta de enlace NAT que te permite enrutar solicitudes de forma condicional, según si tienen o no una etiqueta de esta VM. Puedes especificar cualquier nombre para la etiqueta.
- STARTUP_SCRIPT es el nombre de la secuencia de comandos de inicio que creaste en el paso anterior. Por ejemplo,
startup-script-example.sh
En este ejemplo, la marca--metadata-from-file
se usa para pasar el contenido de la secuencia de comandos de inicio que especificaste a una clave llamadastartup-script
.
Después de ejecutar este comando, verás un resultado que contiene el valor de IP externo. Anota el valor de la IP externa. Todo el tráfico de tu grupo privado a tu recurso externo llega a través de esta dirección. Puedes usar esta dirección para realizar más configuraciones, como configurar reglas de firewall en tu red externa.
Configura una ruta para dirigir todas las solicitudes al recurso externo para que vayan a la instancia creada en el paso anterior, lo que permite que tus solicitudes se reenvíen a las instancias de tu grupo privado:
gcloud compute routes create PRIVATE_POOL_ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --next-hop-address=INTERNAL_IP \ --network=NETWORK_NAME \ --priority=POOL_ROUTE_PRIORITY
Aquí:
- PRIVATE_POOL_ROUTE_NAME es el nombre que deseas darle a tu ruta.
- DESTINATION_RANGE es un rango de direcciones CIDR válido que contiene el destino al que deseas enrutar. Por ejemplo, una instancia de GitHub Enterprise Edition. Por ejemplo,
8.8.8.0/24
- INTERNAL_IP es el valor de IP interno que se obtuvo en el paso anterior. Por ejemplo,
10.128.0.2
- NETWORK_NAME es el nombre de la red que creaste en la sección anterior.
- POOL_ROUTE_PRIORITY es el número de prioridad que deseas especificar para tu ruta.
Este comando garantiza que el tráfico de una compilación dentro de una instancia de grupo privado se enrute a la VM de proxy que creaste, y no directamente a la Internet pública.
Configura una ruta para reenviar las solicitudes de tu proxy desde tus instancias etiquetadas al rango de IP de destino externo. El siguiente comando crea una ruta para reenviar solicitudes al Internet público asociado con las instancias de tu grupo privado.
gcloud compute routes create NAT_EGRESS_ROUTE_NAME \ --destination-range=DESTINATION_RANGE \ --next-hop-gateway=default-internet-gateway \ --network=NETWORK_NAME \ --priority=NAT_ROUTE_PRIORITY \ --tags=NAT_TAG
Aquí:
- NAT_EGRESS_ROUTE_NAME es el nombre que quieres darle a la ruta de la puerta de enlace NAT.
- DESTINATION_RANGE es la dirección del destino al que deseas enrutar. Por ejemplo, una instancia de GitHub Enterprise Edition. Por ejemplo,
8.8.8.0/24
- NETWORK_NAME es el nombre de la red que creaste en la sección anterior.
- NAT_TAG es el nombre de la etiqueta de la puerta de enlace NAT que te permite enrutar solicitudes de forma condicional, según si tienen o no una etiqueta de esta VM. Puedes especificar cualquier nombre para la etiqueta.
NAT_ROUTE_PRIORITY es el número de prioridad que deseas especificar para tu ruta.
Este comando garantiza que cualquier tráfico de la VM de proxy se pueda dirigir a la Internet pública.
Agrega una regla de firewall para permitir el tráfico de tu grupo privado en la VM de la puerta de enlace NAT:
gcloud compute firewall-rules create RULE_NAME \ --direction=INGRESS --priority=FIREWALL_PRIORITY --action=ALLOW --rules=all \ --network=NETWORK_NAME \ --source-ranges=RESERVED_RANGE \ --target-tags=NAT_TAG
Aquí:
- RULE_NAME es el nombre que deseas darle a tu regla de firewall.
- FIREWALL_PRIORITY es el número de prioridad que deseas especificar para tu regla de firewall.
- NETWORK_NAME es el nombre de la red que creaste en la sección anterior.
- RESERVED_RANGE es el rango de CIDR que asignaste cuando configuraste tu red de VPC.
- NAT_TAG es el nombre de la etiqueta de la puerta de enlace NAT que te permite enrutar solicitudes de forma condicional, según si tienen o no una etiqueta de esta VM. Puedes especificar cualquier nombre para la etiqueta.
Ahora puedes acceder a recursos externos desde la dirección IP estática de la puerta de enlace de NAT autoadministrada en tu VPC.
¿Qué sigue?
- Obtén más información sobre los grupos privados.
- Obtén más información para configurar tu entorno para crear grupos privados.
- Obtén más información para acceder a recursos en un JFrog Artifactory privado con grupos privados.