NEG híbrido de PSC de Looker hacia las instalaciones

1. Introducción

En este codelab, realizarás una conexión de norte a sur a una base de datos de Postgres local a través de una VPN híbrida con un balanceador de cargas de proxy TCP interno y un grupo de extremos de red híbrida invocado desde PSC de Looker como consumidor de servicios.

Private Service Connect es una función de las herramientas de redes de Google Cloud que permite a los consumidores acceder a los servicios administrados de forma privada desde su red de VPC. Del mismo modo, permite a los productores de servicios administrados alojar estos servicios en sus propias redes de VPC independientes y ofrecer una conexión privada a sus consumidores. Por ejemplo, cuando usas Private Service Connect para acceder a Looker, tú eres el consumidor del servicio y Google es el productor del servicio, como se destaca en la Figura 1.

Figura 1:

145ea4672c3a3b14.png

El acceso de sur a norte, también conocido como PSC inverso, permite que el consumidor cree un servicio publicado como productor para permitir que Looker acceda a extremos locales, en una VPC, a servicios administrados y al híbrido. Las conexiones de salida se pueden implementar en cualquier región, independientemente de dónde se implemente el PSC de Looker, como se destaca en la Figura 2.

Figura 2:

259493afd914f68b.png

Qué aprenderás

  • Requisitos de red
  • Crea un servicio de productor de Private Service Connect
  • Crea un extremo de Private Service Connect en Looker
  • Establece la conectividad a la base de datos de Postgres local desde Looker con una conexión de prueba

Requisitos

def88091b42bfe4d.png

2. Qué compilarás

Establecerás una red de productor, looker-psc-demo, para implementar el balanceador de cargas de proxy TCP interno y el NEG híbrido publicado como servicio a través de Private Service Connect (PSC). Para demostrar una base de datos local, implementarás una VPC on-prem-demo conectada a la VPC looker-psc-demo con HA-VPN.

Realizarás las siguientes acciones para validar el acceso al servicio de productor:

  • Crea un extremo de PSC en Looker asociado con el adjunto de servicio del productor
  • Usa Looker Console para realizar una validación de conexión a la base de datos de Postgres local

3. Requisitos de red

A continuación, se muestra el desglose de los requisitos de red para la red de productor. El consumidor en este codelab es la instancia de PSC de Looker.

Componentes

Descripción

VPC (looker-psc-demo)

VPC en modo personalizado

VPC (on-prem-demo)

VPC en modo personalizado

Subred de NAT de PSC

Los paquetes de la red de VPC del consumidor se traducen mediante NAT de origen (SNAT) para que sus direcciones IP de origen originales se conviertan en direcciones IP de origen de la subred NAT en la red de VPC del productor.

Subred de la regla de reenvío de PSC

Se usa para asignar una dirección IP al balanceador de cargas de proxy TCP regional interno.

Subred del PSC NEG

Se usa para asignar una dirección IP al grupo de extremos de red.

Subred de solo proxy

A cada uno de los proxies del balanceador de cargas se le asigna una dirección IP interna. Los paquetes enviados desde un proxy a una VM o un extremo de backend tienen una dirección IP de origen de la subred de solo proxy.

NEG híbrido

Los servicios locales y otros servicios en la nube son como cualquier otro backend de Cloud Load Balancing. La diferencia clave es que usas un NEG de conectividad híbrida para configurar los extremos de estos backends. Los extremos deben ser combinaciones válidas de IP:puerto a las que pueda acceder tu balanceador de cargas mediante productos de conectividad híbrida, como Cloud VPN o Cloud Interconnect.

Servicio de backend

Un servicio de backend actúa como un puente entre el balanceador de cargas y tus recursos de backend. En el instructivo, el servicio de backend está asociado con el NEG híbrido.

Cloud Router

  • Cloud NAT se basa en Cloud Routers para las funciones del plano de control, pero no para la administración de sesiones de BGP.
  • Cloud Router se usa para el BGP establecido para el establecimiento de la VPN con alta disponibilidad entre las VPC psc-looker-demo y on-prem-demo.

VPN con alta disponibilidad

VPN con alta disponibilidad entre redes de VPC de Google Cloud. En esta topología, puedes conectar dos redes de VPC de Google Cloud a través de una puerta de enlace de VPN con alta disponibilidad en cada red. Las redes de VPC pueden estar en la misma región o en varias regiones.

Cloud NAT

La VPC de demo de las instalaciones on-premise la usa para la salida a Internet.

4. Topología del codelab

79aeb28b38f237da.png

5. Configuración y requisitos

Configuración del entorno de autoaprendizaje

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
  • El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto.
  • Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.

Inicia Cloud Shell

Si bien Google Cloud y Spanner se pueden operar de manera remota desde tu laptop, en este codelab usarás Google Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.

En Google Cloud Console, haz clic en el ícono de Cloud Shell en la barra de herramientas en la parte superior derecha:

55efc1aaa7a4d3ad.png

El aprovisionamiento y la conexión al entorno deberían tomar solo unos minutos. Cuando termine el proceso, debería ver algo como lo siguiente:

7ffe5cbb04455448.png

Esta máquina virtual está cargada con todas las herramientas de desarrollo que necesitarás. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que permite mejorar considerablemente el rendimiento de la red y la autenticación. Todo tu trabajo en este codelab se puede hacer en un navegador. No es necesario que instales nada.

6. Antes de comenzar

Habilita las APIs

En Cloud Shell, asegúrate de que tu ID del proyecto esté configurado:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region

Habilita todos los servicios necesarios con el siguiente comando:

gcloud services enable compute.googleapis.com

7. Crea la red de VPC del productor

Red de VPC

En Cloud Shell, haz lo siguiente:

gcloud compute networks create looker-psc-demo --subnet-mode custom

Crea subredes

La subred de PSC se asociará con el adjunto de servicio de PSC para la traducción de direcciones de red.

En Cloud Shell, crea la subred de NAT de PSC:

gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT

En Cloud Shell, crea la subred de la regla de reenvío del productor:

gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access

En Cloud Shell, crea la subred de solo proxy regional del productor:

gcloud compute networks subnets create $region-proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=$region \
  --network=looker-psc-demo \
  --range=10.10.10.0/24

Reserva la dirección IP del balanceador de cargas

En Cloud Shell, reserva una dirección IP interna para el balanceador de cargas:

gcloud compute addresses create hybrid-neg-lb-ip \
  --region=$region \
  --subnet=producer-psc-fr-subnet

En Cloud Shell, consulta la dirección IP reservada.

gcloud compute addresses describe hybrid-neg-lb-ip \
  --region=$region | grep -i address:

Resultado de ejemplo:

gcloud compute addresses describe hybrid-neg-lb-ip   --region=$region | grep -i address:
address: 172.16.20.2

Configura el NEG híbrido

Crea un NEG híbrido y establece el tipo de extremo de red como NON_GCP_PRIVATE_IP_PORT.

En Cloud Shell, crea un NEG híbrido que se use para acceder a la base de datos local:

gcloud compute network-endpoint-groups create on-prem-hybrid-neg \
    --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
    --network=looker-psc-demo \
    --zone=$zone

En Cloud Shell, actualiza el NEG híbrido con la IP:Puerto de la base de datos local, 192.168.10.4 y el puerto 5432, que se generará en un paso posterior del instructivo:

gcloud compute network-endpoint-groups update on-prem-hybrid-neg \
    --add-endpoint=ip=192.168.10.4,port=5432 \
    --zone=$zone

Crea una verificación de estado regional

En Cloud Shell, crea una verificación de estado que sondee el puerto de la base de datos local, 5432:

gcloud compute health-checks create tcp on-prem-5432-healthcheck \
    --region=$region \
    --port=5432

Crea una política de firewall de red y reglas de firewall

En Cloud Shell, haz lo siguiente:

gcloud compute network-firewall-policies create looker-psc-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy

La siguiente regla de firewall permite el tráfico del rango de subred de NAT de PSC a todas las instancias de la red.

En Cloud Shell, haz lo siguiente:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp

8. Crea un servicio de productor

Crea componentes del balanceador de cargas

En Cloud Shell, crea un servicio de backend:

gcloud compute backend-services create producer-backend-svc --region=$region --load-balancing-scheme=INTERNAL_MANAGED --protocol=TCP --region=$region --health-checks=on-prem-5432-healthcheck --health-checks-region=$region

En Cloud Shell, agrega el backend de NEG híbrido al servicio de backend:

gcloud compute backend-services add-backend producer-backend-svc --network-endpoint-group=on-prem-hybrid-neg --network-endpoint-group-zone=$zone --balancing-mode=CONNECTION --max-connections=100 --region=$region

En Cloud Shell, crea un proxy TCP de destino para enrutar las solicitudes a tu servicio de backend:

gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
      --backend-service=producer-backend-svc  \
      --region=$region

En la siguiente sintaxis, crea una regla de reenvío (balanceador de cargas de proxy TCP interno).

En Cloud Shell, haz lo siguiente:

gcloud compute forwarding-rules create producer-hybrid-neg-fr \
     --load-balancing-scheme=INTERNAL_MANAGED \
     --network-tier=PREMIUM \
     --network=looker-psc-demo \
     --subnet=producer-psc-fr-subnet \
     --address=hybrid-neg-lb-ip \
     --target-tcp-proxy=producer-lb-tcp-proxy \
     --target-tcp-proxy-region=$region \
     --region=$region \
     --ports=5432

Cómo crear un archivo adjunto de servicio

En Cloud Shell, crea el archivo adjunto de servicio onpremdatabase1-svc-attachment:

gcloud compute service-attachments create onpremdatabase1-svc-attachment --region=$region --producer-forwarding-rule=producer-hybrid-neg-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

A continuación, obtén y anota el archivo adjunto de servicio que aparece en el URI de selfLink que comienza con proyectos para configurar el extremo de PSC en Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/onpremdatabase1-svc-attachment

En Cloud Shell, haz lo siguiente:

gcloud compute service-attachments describe onpremdatabase1-svc-attachment --region=$region

Ejemplo de resultado esperado:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-09-01T16:07:51.600-07:00'
description: ''
enableProxyProtocol: false
fingerprint: cFt9rERR1iE=
id: '2549689544315850024'
kind: compute#serviceAttachment
name: onpremdatabase1-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '2549689544315850024'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-hybrid-neg-fr

En la consola de Cloud, navega a:

Servicios de red → Private Service Connect → Servicios publicados

9f436251a3ae2cc7.png

4c3e8e73d40d1238.png

9. Establece una conexión de extremo de PSC en Looker

En la siguiente sección, asociarás el archivo adjunto de servicio de productores con el PSC de Looker Core mediante el uso de marcas –psc-service-attachment en Cloud Shell para un solo dominio.

En Cloud Shell, crea la asociación de psc actualizando los siguientes parámetros para que coincidan con tu entorno:

  • INSTANCE_NAME: Es el nombre de tu instancia de Looker (Google Cloud Core).
  • DOMAIN_1: onprem.database1.com
  • SERVICE_ATTACHMENT_1: Es el URI capturado cuando se crea el adjunto de servicio, onpremdatabase1-svc-attachment.
  • REGION: Es la región en la que se aloja tu instancia de Looker (Google Cloud Core).

En Cloud Shell, haz lo siguiente:

gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Ejemplo:

gcloud looker instances update looker-psc-instance --psc-service-attachment domain=onprem.database1.com,attachment=projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment --region=$region

En Cloud Shell, valida que el estado de conexión de serviceAttachments sea “ACCEPTED” y actualízalo con el nombre de tu instancia de PSC de Looker:

gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json

Ejemplo:

gcloud looker instances describe looker-psc-instance --region=$region --format=json

Ejemplo:

{
  "adminSettings": {},
  "createTime": "2024-08-23T00:00:45.339063195Z",
  "customDomain": {
    "domain": "looker.cosmopup.com",
    "state": "AVAILABLE"
  },
  "encryptionConfig": {},
  "lookerVersion": "24.14.18",
  "name": "projects/$project/locations/$region/instances/looker-psc-instance",
  "platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
  "pscConfig": {
    "allowedVpcs": [
      "projects/$project/global/networks/looker-psc-demo",
      "projects/$project/global/networks/looker-shared-vpc"
    ],
    "lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "onprem.database1.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/onpremdatabase1-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-09-01T23:15:07.426372901Z"
}

Cómo validar el extremo de PSC en la consola de Cloud

Desde la consola de Cloud, puedes validar la conexión de PSC.

En la consola de Cloud, navega a:

Looker → Instancia de Looker → Detalles

2d4684d722d31e4b.png

993cdaf748f4c030.png

Crea la red de VPC local

Red de VPC

En Cloud Shell, haz lo siguiente:

gcloud compute networks create on-prem-demo --project=$project --subnet-mode=custom

Crea la subred de la base de datos de Postgresql

En Cloud Shell, haz lo siguiente:

gcloud compute networks subnets create database-subnet --project=$project --range=192.168.10.0/28 --network=on-prem-demo --region=$region

En Cloud Shell, reserva una dirección IPv4 interna, que se usa para onprem.database1.com, 192.168.10.4:

gcloud compute addresses create on-prem-database1-ip --region=$region --subnet=database-subnet --addresses 192.168.10.4

Crea el Cloud Router para la VPC on-prem-demo

En el instructivo, se usa Cloud NAT para la instalación de paquetes de software porque la instancia de VM no tiene una dirección IP externa.

En Cloud Shell, crea el Cloud Router que se usa con Cloud NAT y HA-VPN:

gcloud compute routers create on-prem-cr \
   --region=$region \
   --network=on-prem-demo \
   --asn=65002

En Cloud Shell, crea la puerta de enlace de NAT:

gcloud compute routers nats create on-prem-nat --router=on-prem-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region $region

Crea la instancia de prueba de la base de datos

Crea una instancia de base de datos de Postgres que se usará para probar y validar la conectividad con Looker.

En Cloud Shell, crea la instancia:

gcloud compute instances create postgres-database \
    --project=$project \
    --zone=$zone \
    --machine-type=e2-medium \
    --subnet=database-subnet \
    --no-address \
    --private-network-ip 192.168.10.4 \
    --image-family debian-12 \
    --image-project debian-cloud  \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

Crea una política de firewall de red y reglas de firewall

En Cloud Shell, haz lo siguiente:

gcloud compute network-firewall-policies create on-prem-demo-policy --global

gcloud compute network-firewall-policies associations create --firewall-policy on-prem-demo-policy --network on-prem-demo --name on-prem-demo --global-firewall-policy

Para permitir que IAP se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:

  • Se aplica a todas las instancias de VM a las que deseas acceder mediante IAP.
  • Permite el tráfico de entrada desde el rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.

En Cloud Shell, haz lo siguiente:

gcloud compute network-firewall-policies rules create 1000 --action ALLOW --firewall-policy on-prem-demo-policy --description "SSH with IAP" --direction INGRESS --src-ip-ranges 35.235.240.0/20 --layer4-configs tcp:22  --global-firewall-policy

La siguiente regla de firewall permite el tráfico del rango de subred de solo proxy a todas las instancias de la red.

En Cloud Shell, haz lo siguiente:

gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy on-prem-demo-policy --description "allow traffic from proxy only subnet" --direction INGRESS --src-ip-ranges 10.10.10.0/24 --global-firewall-policy --layer4-configs=tcp

10. Conectividad híbrida

En la siguiente sección, crearás un Cloud Router que te permita intercambiar rutas de forma dinámica entre tu Nube privada virtual (VPC) y la red de intercambio de tráfico mediante el Protocolo de puerta de enlace de frontera (BGP).

Cloud Router puede configurar una sesión de BGP a través de un túnel de Cloud VPN para conectar tus redes. Aprende automáticamente rangos de direcciones IP de subred nuevos y los anuncia en tu red de intercambio de tráfico.

En los siguientes pasos, implementarás una VPN con alta disponibilidad entre la VPC de looker-psc-demo y la VPC de on-prem-demo para demostrar la conectividad de NEG híbrida a onprem.database1.com.

Crea la puerta de enlace de VPN con alta disponibilidad para looker-psc-demo

Cuando se crea cada puerta de enlace, se asignan de forma automática dos direcciones IPv4 externas, una para cada interfaz de puerta de enlace.

En Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad:

gcloud compute vpn-gateways create looker-psc-demo-vpn-gw \
   --network=looker-psc-demo \
   --region=$region

Crea la puerta de enlace de VPN con alta disponibilidad para la demo de on-prem

Cuando se crea cada puerta de enlace, se asignan de forma automática dos direcciones IPv4 externas, una para cada interfaz de puerta de enlace.

En Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad:

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-demo\
   --region=$region

Cómo validar la creación de la puerta de enlace de VPN con alta disponibilidad

En la consola, navega a CONEXIÓN HÍBRIDA → VPN → PUERTAS DE ENLACE DE CLOUD VPN.

7f1b504616504866.png

Crea el Cloud Router para looker-psc-demo

En Cloud Shell, crea el Cloud Router:

gcloud compute routers create looker-psc-demo-cr \
   --region=$region \
   --network=looker-psc-demo\
   --asn=65001

Crea los túneles VPN para looker-psc-demo

Crearás dos túneles VPN en cada puerta de enlace de VPN con alta disponibilidad.

Crea el túnel VPN0

En Cloud Shell, crea tunnel0:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 0

Crea el túnel VPN1

En Cloud Shell, crea tunnel1:

gcloud compute vpn-tunnels create looker-psc-demo-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router looker-psc-demo-cr \
    --vpn-gateway looker-psc-demo-vpn-gw \
    --interface 1

Crea los túneles VPN para on-prem-demo

Crearás dos túneles VPN en cada puerta de enlace de VPN con alta disponibilidad.

Crea el túnel VPN0

En Cloud Shell, crea tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
   --interface 0

Crea el túnel VPN1

En Cloud Shell, crea tunnel1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway looker-psc-demo-vpn-gw \
    --region $region \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

Cómo validar la creación de un túnel VPN

En la consola, navega a CONEXIÓN HÍBRIDA → VPN → TÚNELES DE CLOUD VPN.

c2fcb340a7614070.png

11. Establece vecinos de BGP

Crea una interfaz de BGP y un intercambio de tráfico para looker-psc-demo

En Cloud Shell, crea la interfaz de BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel0 \
    --region $region

En Cloud Shell, crea el par de BGP:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region $region

En Cloud Shell, crea la interfaz de BGP:

gcloud compute routers add-interface looker-psc-demo-cr \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel looker-psc-demo-tunnel1 \
    --region $region

En Cloud Shell, crea el par de BGP:

gcloud compute routers add-bgp-peer looker-psc-demo-cr \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region $region

Crea una interfaz de BGP y un intercambio de tráfico para on-prem-demo

En Cloud Shell, crea la interfaz de BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel0-to-looker-psc-demo \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region $region

En Cloud Shell, crea el par de BGP:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel0 \
    --interface if-tunnel1-to-looker-psc-demo \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region $region

En Cloud Shell, crea la interfaz de BGP:

gcloud compute routers add-interface on-prem-cr \
    --interface-name if-tunnel1-to-looker-psc-demo \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region $region

En Cloud Shell, crea el par de BGP:

gcloud compute routers add-bgp-peer on-prem-cr \
    --peer-name bgp-looker-psc-demo-tunnel1\
    --interface if-tunnel2-to-looker-psc-demo \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region $region

Navega a CONectividad híbrida → VPN para ver los detalles del túnel de VPN.

78ab590317919bf5.png

Valida las rutas aprendidas de looker-psc-demo a través de la VPN con alta disponibilidad

Ahora que se establecieron los túneles de VPN con alta disponibilidad y las sesiones de BGP, el comportamiento predeterminado de Cloud Router es anunciar rutas de subred. Consulta las rutas aprendidas de looker-psc-demo.

En la consola, navega a Red de VPC → Redes de VPC → looker-psc-demo → RUTA → REGIÓN → VER.

Observa que looker-psc-demo aprendió la subred de base de datos 192.168.10.0/28 de la VPC on-prem-demo.

c11a11ed8b0491c8.png

Valida que on-prem-demo VPC aprendió rutas a través de la VPN con alta disponibilidad

Dado que el comportamiento predeterminado de Cloud Router es anunciar todas las subredes, la subred solo de proxy se anuncia a través de BGP. El NEG híbrido usará la subred de solo proxy como la dirección de origen cuando se comunique con el servidor onprem.database1.com.

Observa que on-prem-demo aprendió la subred de solo proxy 10.10.10.0/24 de looker-psc-demo.

En la consola, navega a Red de VPC → Redes de VPC → on-prem-demo → RUTA → REGIÓN → VER.

b0073faed026931f.png

12. Creación de la base de datos de Postgres de Looker

En la siguiente sección, establecerás una conexión SSH a la VM de postgres-database con Cloud Shell.

En Cloud Shell, realiza un ssh a la instancia de postgres-database**:**

 gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Dentro del SO, identifica y anota la dirección IP (ens4) de la instancia de la base de datos de Postgres:

ip a

Ejemplo:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
    link/ether 42:01:c0:a8:0a:04 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 192.168.10.4/32 metric 100 scope global dynamic ens4
       valid_lft 66779sec preferred_lft 66779sec
    inet6 fe80::4001:c0ff:fea8:a04/64 scope link 
       valid_lft forever preferred_lft forever

Dentro del SO, accede a postgresql:

sudo -u postgres psql postgres

Dentro del SO, ingresa el mensaje de contraseña:

\password postgres

Dentro del SO, establece la contraseña en postgres (ingresa la misma contraseña dos veces):

postgres

Ejemplo:

user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.
postgres=# \password postgres
Enter new password for user "postgres": 
Enter it again: 

Dentro del SO, sal de postgres:

\q

Ejemplo:

postgres=# \q
user@postgres-database:~$ 

En la siguiente sección, insertarás la IP de tu instancia de base de datos de Postgres (192.168.10.4) y la subred solo de proxy (10.10.10.0/24) en el archivo pg_hba.conf, en las conexiones locales IPv4.

sudo nano /etc/postgresql/15/main/pg_hba.conf

La siguiente captura de pantalla muestra la actualización completada: eaff2ed6d27fa7cc.png

En la siguiente sección, quita el comentario de postgresql.conf para escuchar todas las direcciones IP de "*" según la siguiente captura de pantalla:

sudo nano /etc/postgresql/15/main/postgresql.conf

Antes:

65e0b1074dc48644.png

Después:

14a0d1fa5455e23e.png

Dentro del SO, reinicia el servicio postgresql:

sudo service postgresql restart

Dentro del SO, valida que el estado de postgresql sea activo:

sudo service postgresql status

Ejemplo:

Dentro del SO, valida que el estado de postgresql sea activo:

user@postgres-database:/$ sudo service postgresql status
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Mon 2024-09-02 12:10:10 UTC; 1min 46s ago
    Process: 20486 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20486 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Sep 02 12:10:10 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Sep 02 12:10:10 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

13. Crea la base de datos de Postgres

En la siguiente sección, crearás una base de datos de Postgres llamada postgres_looker y el esquema looker_schema que se usará para validar la conectividad de Looker a la infraestructura local.

Dentro del SO, accede a postgres:

sudo -u postgres psql postgres

Dentro del SO, crea la base de datos:

create database postgres_looker;

Dentro del SO, muestra la base de datos:

\l

Dentro del SO, crea el usuario postgres_looker con la contraseña postgreslooker:

create user postgres_looker with password 'postgreslooker';

Dentro del SO, conéctate a la base de datos:

\c postgres_looker;

Dentro del SO, crea el esquema looker-schema y sal al mensaje de Cloud Shell.

create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit

Exit from the OS, returning you to cloud shell:

\q

Ejemplo:

user@postgres-database:/$ sudo -u postgres psql postgres
psql (15.8 (Debian 15.8-0+deb12u1))
Type "help" for help.

postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
                                                List of databases
      Name       |  Owner   | Encoding | Collate |  Ctype  | ICU Locale | Locale Provider |   Access privileges   
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
 postgres        | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 postgres_looker | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 template0       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
 template1       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
(4 rows)

postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
CREATE SCHEMA
CREATE TABLE
postgres_looker-# \q

14. Integra Looker con la base de datos postgres-database de Postgres

En la siguiente sección, usarás Looker Console para crear una conexión de base de datos a la instancia de base de datos de Postgres local.

Navega a ADMINISTRADOR → BASE DE DATOS → CONEXIONES → Selecciona AGREGAR CONEXIÓN.

Completa los detalles de la conexión según la captura de pantalla que aparece a continuación y selecciona CONECTAR.

5900fdf0b698cbfc.png

La conexión ya está configurada

4817157fd3b1277e.png

15. Valida la conectividad de Looker

En la siguiente sección, aprenderás a validar la conectividad de Looker con la base de datos de Postgres en la VPC local con la acción "test" de Looker y TCPDUMP.

En Cloud Shell, accede a la base de datos postgres-database si se agotó el tiempo de espera de la sesión.

En Cloud Shell, haz lo siguiente:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
zone=[YOUR-ZONE]
echo $project
echo $region
gcloud compute ssh --zone "$zone" "postgres-database" --project "$project"

Desde el SO, crea un filtro TCPDUMP con la subred de solo proxy 10.10.10.0/24.

sudo tcpdump -i any net 10.10.10.0/24 -nn

Navega a la conexión de datos ADMIN → DATABASE → CONNECTIONS → postgres-database → Test.

Una vez que se seleccione Test, Looker se conectará a la base de datos de Postgres como se indica a continuación:

774f9313ece41034.png

Limpia

Borra componentes del lab desde una sola terminal de Cloud Shell

gcloud compute service-attachments delete onpremdatabase1-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-hybrid-neg-fr --region=$region -q

gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q

gcloud compute backend-services delete producer-backend-svc --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy  --name=looker-psc-demo --global-firewall-policy -q

gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q

gcloud compute routers nats delete on-prem-nat --router=on-prem-cr --router-region=$region -q

gcloud compute network-endpoint-groups delete on-prem-hybrid-neg --zone=$zone -q

gcloud compute addresses delete hybrid-neg-lb-ip --region=$region -q

gcloud compute vpn-tunnels delete looker-psc-demo-tunnel0 looker-psc-demo-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=$region -q

gcloud compute vpn-gateways delete looker-psc-demo-vpn-gw on-prem-vpn-gw --region=$region -q

gcloud compute routers delete looker-psc-demo-cr on-prem-cr --region=$region -q

gcloud compute instances delete postgres-database --zone=$zone -q

gcloud compute addresses delete on-prem-database1-ip --region=$region -q

gcloud compute networks subnets delete database-subnet --region=$region -q

gcloud compute network-firewall-policies rules delete 2001 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies rules delete 1000 --firewall-policy on-prem-demo-policy --global-firewall-policy -q

gcloud compute network-firewall-policies associations delete --firewall-policy=on-prem-demo-policy  --name=on-prem-demo --global-firewall-policy -q

gcloud compute networks subnets delete $region-proxy-only-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-nat-subnet --region=$region -q

gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q

gcloud compute networks delete on-prem-demo -q

gcloud compute networks delete looker-psc-demo -q

16. Felicitaciones

Felicitaciones, configuraste y validaste correctamente la conectividad a la base de datos local a través de la VPN con alta disponibilidad con Looker Console potenciada por Private Service Connect.

Creaste la infraestructura del productor y aprendiste a crear un NEG híbrido, un servicio de productor y un extremo de PSC de Looker que permitieron la conectividad al servicio de productor.

Cosmopup piensa que los codelabs son geniales.

c911c127bffdee57.jpeg

¿Qué sigue?

Consulta algunos codelabs sobre los siguientes temas:

Lecturas y videos adicionales

Documentos de referencia