1. Introducción
Looker (Google Cloud Core) ofrece aprovisionamiento, configuración y administración simplificados y optimizados de una instancia de Looker desde la consola de Google Cloud. Algunas tareas de administración de instancias también se pueden realizar desde la consola.
Hay tres parámetros de configuración de red disponibles para las instancias de Looker (Google Cloud Core):
- Pública: La conexión de red usa una dirección IP externa a la que se puede acceder a través de Internet.
- Privada: La conexión de red usa una dirección IP de nube privada virtual (VPC) interna alojada en Google.
- Pública y privada: La conexión de red usa una dirección IP pública y una privada, en la que el tráfico entrante se enrutará a través de una IP pública, y el tráfico saliente, a través de una IP privada.
En el instructivo, implementarás una red privada integral de extremo a extremo para admitir la conectividad de Looker a una VPN on-prem-vpc con alta disponibilidad que se puede replicar para cumplir con tus requisitos de conectividad local y de múltiples nubes.
Looker (Google Cloud Core) admite IP privadas para instancias que cumplen con los siguientes criterios:
- Las ediciones de instancias deben ser Enterprise o Embed.
Qué compilarás
En este instructivo, compilarás una implementación integral de la red privada de Looker en una VPC independiente que tiene conectividad híbrida a múltiples nubes y a nivel local.
Configurarás una red de VPC llamada on-prem-vpc
para representar un entorno local. Para tu implementación, on-prem-vpc no existiría, en su lugar, se usaría una red híbrida a tu centro de datos local o al proveedor de servicios en la nube.
A continuación, se presentan los pasos principales del instructivo
- Crea una VPC independiente en us-central1
- Asigna una subred de IP al Acceso privado a servicios
- Implementa la instancia de Looker en la VPC independiente
- Crea la infraestructura on-prem-vpc y las redes híbridas
- Anuncia y valida el rango de IP de Looker a través de BGP
- Integrar y validar la comunicación de datos de Looker y Postgresql
Figure1
Qué aprenderás
- Cómo crear una VPC y redes híbridas asociadas
- Cómo implementar Looker en una VPC independiente
- Cómo crear un clúster on-prem-vpc y redes híbridas asociadas
- Conecta on-prem-vpc con analytics-vps a través de una VPN con alta disponibilidad
- Cómo anunciar subredes de Looker a través de redes híbridas
- Cómo supervisar la infraestructura de red híbrida
- Cómo integrar una base de datos de Postgresql a Looker Cloud Core
Requisitos
- Proyecto de Google Cloud
Permisos de IAM
2. Antes de comenzar
Actualiza el proyecto para que sea compatible con el instructivo
En este instructivo, se usa $variables para facilitar la implementación de la configuración de gcloud en Cloud Shell.
Dentro de Cloud Shell, realiza lo siguiente:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Configuración de VPC
Crea el archivo analytics-vpc
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Crea on-prem-vpc
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Crea la subred de la base de datos de Postgresql
Dentro de Cloud Shell, realiza lo siguiente:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
Configuración de Cloud Router y NAT
Cloud NAT se usa en el instructivo para instalar paquetes de software porque la instancia de VM de la base de datos no tiene una dirección IP externa.
En Cloud Shell, crea el Cloud Router.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
En Cloud Shell, crea la puerta de enlace NAT.
gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1
Crea la instancia de prueba de la base de datos
Crea una instancia de postgres-database que se usará para probar y validar la conectividad a Looker.
En Cloud Shell, crea la instancia.
gcloud compute instances create postgres-database \
--project=$projectid \
--zone=us-central1-a \
--machine-type=e2-medium \
--subnet=database-subnet-us-central1 \
--no-address \
--image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt -y install postgresql postgresql-client postgresql-contrib -y"
Crea reglas de firewall
Para permitir que IAP se conecte a tus instancias de VM, crea una regla de firewall que haga lo siguiente:
- Se aplica a todas las instancias de VM a las que deseas que se pueda acceder mediante IAP.
- Permite el tráfico de entrada del rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.
Desde Cloud Shell
gcloud compute firewall-rules create on-prem-ssh \
--network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20
4. Acceso de servicio privado
El acceso privado a los servicios es una conexión privada entre tu red de VPC y una red que pertenece a Google o terceros. Las entidades que proporcionan servicios, como Google o terceros, también se conocen como productores de servicios. Looker Cloud Core es un productor de servicios.
La conexión privada permite que las instancias de VM en tu red de VPC y los servicios a los que accedes se comuniquen de forma exclusiva mediante direcciones IP internas.
En un nivel alto, para usar el acceso privado a los servicios, debes asignar un rango de direcciones IP (bloque CIDR) en tu red de VPC y, luego, crear una conexión privada con un productor de servicios.
Asignar un rango de direcciones IP para los servicios
Antes de crear una conexión privada, debes asignar un rango de direcciones IPv4 para que lo use la red de VPC del productor de servicios. Esto garantiza que no haya una colisión de direcciones IP entre tu red de VPC y la red del productor de servicios.
Cuando asignas un rango en tu red de VPC, ese rango no es apto para subredes (rangos principales y secundarios) ni destinos de rutas estáticas personalizadas.
No se admite el uso de rangos de direcciones IPv6 con acceso privado a servicios.
Habilita la API de Service Networking para tu proyecto en la consola de Google Cloud. Cuando habilites la API, es posible que debas actualizar la página de la consola para confirmar que se habilitó.
Crea una asignación de IP
Para especificar un rango de direcciones y una longitud de prefijo (máscara de subred), usa las direcciones y las marcas de longitud de prefijo. Por ejemplo, para asignar el bloque CIDR 192.168.0.0/22, especifica 192.168.0.0 para la dirección y 22 para la longitud de prefijo.
En Cloud Shell, crea la asignación de IP para Looker.
gcloud compute addresses create psa-range-looker \
--global \
--purpose=VPC_PEERING \
--addresses=192.168.0.0 \
--prefix-length=22 \
--description="psa range for looker" \
--network=analytics-vpc
En Cloud Shell, valida la asignación de IP.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
Ejemplo:
userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION:
SUBNET:
STATUS: RESERVED
Crea una conexión privada
Después de crear un rango asignado, puedes crear una conexión privada a un productor de servicios, Looker Cloud Core. La conexión privada establece una conexión de intercambio de tráfico entre redes de VPC entre tu red de VPC y la del productor de servicios una vez que se establece la instancia de Looker.
Las conexiones privadas constituyen una relación uno a uno entre tu red de VPC y un productor de servicios. Si un solo productor de servicios ofrece varios servicios, solo necesitas una conexión privada para todos ellos.
Si te conectas a varios productores de servicios, usa una asignación única para cada uno de ellos. Esta práctica te ayuda a administrar la configuración de tu red, como rutas y reglas de firewall, para cada productor de servicios.
Dentro de Cloud Shell, crea una conexión privada y toma nota del nombre de la operación.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Ejemplo:
user@cloudshell$ gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
En Cloud Shell, verifica si la operación se realizó correctamente. Reemplaza OPERATION_NAME por el nombre generado en el paso anterior.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
Ejemplo:
user@cloudshell$ gcloud services vpc-peerings operations describe \
--name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.
5. Crea una instancia de Looker (Google Cloud Core)
Antes de comenzar
Habilita la API de Looker para tu proyecto en la consola de Google Cloud. Cuando habilites la API, es posible que debas actualizar la página de la consola para confirmar que se habilitó.
Configura un cliente de OAuth para autenticar y acceder a la instancia.
En la siguiente sección, deberás usar el ID y el Secreto de cliente de OAuth para crear la instancia de Looker.
No se requieren orígenes autorizados de JavaScript ni URI de redireccionamiento.
En la consola de Cloud, crea una instancia basada en las capturas de pantalla proporcionadas.
Navega a BUSCAR → CREAR UNA INSTANCIA.
Propaga el ID y el secreto de cliente de OAuth que se crearon antes.
Selecciona CREAR.
Mientras se crea la instancia, se te redireccionará a la página Instancias en la consola. Es posible que debas actualizar la página para ver el estado de la instancia nueva. También puedes ver tu actividad de creación de instancias haciendo clic en el ícono de notificaciones en el menú de la consola de Google Cloud. Mientras se crea la instancia, el ícono de notificaciones del menú de la consola de Google Cloud estará rodeado por un ícono de carga.
Después de crear la instancia de Looker, se genera una URL de la instancia. Anota la URL.
6. Actualiza el ID de cliente de OAuth 2.0
En la siguiente sección, deberás agregar /oauth2callback
a la URL de la instancia para actualizar el URI de redireccionamiento autorizado que se creó anteriormente.
Cuando termines, puedes usar la URL de la instancia para acceder a la IU de Looker.
En la consola de Cloud, navega a APIs & SERVICIOS → CREDENCIALES
Selecciona tu ID de cliente de OAuth 2.0 y actualiza la URL de tu instancia, como se muestra a continuación:
7. Valida el acceso a Looker
En la consola de Cloud, navega a Looker y selecciona la URL de tu instancia para abrir la IU de Looker.
Después del lanzamiento, verás la página de destino según la siguiente captura de pantalla, que confirma tu acceso a Looker Cloud Core.
8. 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 usando 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 los nuevos rangos de direcciones IP de subredes y los notifica a tu red de intercambio de tráfico.
En el instructivo, implementarás una VPN con alta disponibilidad entre analytics-vpc y on-prem-vpc para ilustrar la conectividad privada a Looker.
Crea la puerta de enlace de VPN con alta disponibilidad para analytics-vpc
Cuando se crea cada puerta de enlace, se asignan automáticamente dos direcciones IPv4 externas, una para cada interfaz de puerta de enlace. Toma nota de estas direcciones IP para usarlas más adelante en los pasos de configuración.
En Cloud Shell, crea la puerta de enlace de VPN con alta disponibilidad
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Crea la puerta de enlace de VPN con alta disponibilidad para on-prem-vpc
Cuando se crea cada puerta de enlace, se asignan automáticamente dos direcciones IPv4 externas, una para cada interfaz de puerta de enlace. Toma nota de estas direcciones IP para usarlas más adelante en los pasos de configuración.
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-vpc\
--region=us-central1
Valida la creación de entornos de VPN con alta disponibilidad
En la consola, navega a CONECTIVIDAD HÍBRIDA → VPN → GATEWAYS DE CLOUD VPN.
Crea el Cloud Router para analytics-vpc
En Cloud Shell, crea el Cloud Router ubicado en us-central1
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
Crea el Cloud Router para on-prem-vpc
En Cloud Shell, crea el Cloud Router ubicado en us-central1
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Crea los túneles VPN para analytics-vpc
Crearás dos túneles VPN en cada puerta de enlace de VPN con alta disponibilidad.
Crear túnel VPN0
En Cloud Shell, crea tunnel0:
gcloud compute vpn-tunnels create analytics-vpc-tunnel0 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 0
Crear túnel VPN1
En Cloud Shell, crea tunnel1:
gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
--peer-gcp-gateway on-prem-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router analytics-cr-us-central1 \
--vpn-gateway analytics-vpn-gw \
--interface 1
Crea los túneles VPN para on-prem-vpc
Crearás dos túneles VPN en cada puerta de enlace de VPN con alta disponibilidad.
Crear túnel VPN0
En Cloud Shell, crea tunnel0:
gcloud compute vpn-tunnels create on-prem-tunnel0 \
--peer-gcp-gateway analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 0
Crear túnel VPN1
En Cloud Shell, crea tunnel1:
gcloud compute vpn-tunnels create on-prem-tunnel1 \
--peer-gcp-gateway analytics-vpn-gw \
--region us-central1 \
--ike-version 2 \
--shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
--router on-prem-cr-us-central1 \
--vpn-gateway on-prem-vpn-gw \
--interface 1
Validar la creación del túnel VPN
En la consola, navega a CONECTIVIDAD HÍBRIDA → VPN → TUNNELS DE CLOUD VPN.
9. Establecer vecinos de BGP
Crea sesiones de BGP
En esta sección, configurarás las interfaces de Cloud Router y los pares de BGP.
Crea una interfaz de BGP y un intercambio de tráfico para analytics-vpc
En Cloud Shell, crea la interfaz de BGP:
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel0-to-onprem \
--ip-address 169.254.1.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel0 \
--region us-central1
En Cloud Shell, crea el par de BGP:
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel0 \
--interface if-tunnel1-to-onprem \
--peer-ip-address 169.254.1.2 \
--peer-asn 65002 \
--region us-central1
En Cloud Shell, crea la interfaz de BGP:
gcloud compute routers add-interface analytics-cr-us-central1 \
--interface-name if-tunnel1-to-onprem \
--ip-address 169.254.2.1 \
--mask-length 30 \
--vpn-tunnel analytics-vpc-tunnel1 \
--region us-central1
En Cloud Shell, crea el par de BGP:
gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
--peer-name bgp-on-premises-tunnel1 \
--interface if-tunnel2-to-onprem \
--peer-ip-address 169.254.2.2 \
--peer-asn 65002 \
--region us-central1
Crea una interfaz de BGP y un intercambio de tráfico para on-prem-vpc
En Cloud Shell, crea la interfaz de BGP:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel0-to-analytics-vpc \
--ip-address 169.254.1.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel0 \
--region us-central1
En Cloud Shell, crea el par de BGP:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel0 \
--interface if-tunnel1-to-analytics-vpc \
--peer-ip-address 169.254.1.1 \
--peer-asn 65001 \
--region us-central1
En Cloud Shell, crea la interfaz de BGP:
gcloud compute routers add-interface on-prem-cr-us-central1 \
--interface-name if-tunnel1-to-analytics-vpc \
--ip-address 169.254.2.2 \
--mask-length 30 \
--vpn-tunnel on-prem-tunnel1 \
--region us-central1
En Cloud Shell, crea el par de BGP:
gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
--peer-name bgp-analytics-vpc-tunnel1\
--interface if-tunnel2-to-analytics-vpc \
--peer-ip-address 169.254.2.1 \
--peer-asn 65001 \
--region us-central1
Navega a CONECTIVIDAD híbrida → VPN para ver los detalles del túnel VPN.
Valida las rutas aprendidas de analytics-vpc a través de VPN con alta disponibilidad
Debido a que se establecieron los túneles VPN con alta disponibilidad y las sesiones de BGP, las rutas de on-prem-vpc se aprenden desde analytics-vpc. En la consola, ve a Red de VPC → Redes de VPC → analytics-vpc → ROUTES → REGIÓN → us-central1 → VISTA
Observa que analytics-vpc aprendió las rutas de on-prem-vpc database-subnet-us-central1 172.16.10.0/27.
Valida que on-prem-vpc no aprendieron rutas en una VPN con alta disponibilidad
La instancia analytics-vpc no tiene una subred, por lo que Cloud Router no anunciará ninguna subred a on-prem-vpc . En la consola, ve a Red de VPC → Redes de VPC → on-prem-vpc → ROUTES → REGIÓN → us-central1 → VISTA
10. Anuncia la subred de Looker a un entorno local
El Cloud Router analytics-cr-us-central1 no anuncia automáticamente la subred de acceso privado a servicios (PSA) de Looker porque la subred está asignada al PSA, no a la VPC.
Deberás crear un anuncio de ruta personalizado desde analytics-cr-central1 para la subred PSA 192.168.0.0/22 (psa-range-looker), que se anunciará en el entorno local y las cargas de trabajo usarán para acceder a Looker.
En la consola, navega a CONECTIVIDAD HÍBRIDA → ROUTERS DE LA NUBE → analytics-cr-us-central1 y, luego, selecciona EDITAR.
En la sección Rutas anunciadas, selecciona la opción Crear rutas personalizadas, actualiza los campos según el siguiente ejemplo, selecciona LISTO y, luego, haz clic en GUARDAR.
11. Validar que on-prem-vpc haya aprendido la subred de Looker
Ahora, on-prem-vpc podrá acceder a la subred del PSA de Looker, ya que se anunció desde analytics-cr-us-central1 como un anuncio de ruta personalizado.
En la consola, ve a RED DE VPC → REDES de VPC → on-prem-vpc → ROUTES → REGIÓN → us-central1 → VISTA
Observa las rutas de Looker anunciadas desde analytics-vpc:
12. Validar el intercambio de tráfico de VPC actual
La conexión entre Looker Cloud Core y analytics-vpc se realiza a través del intercambio de tráfico entre VPC, que permite el intercambio de rutas personalizadas aprendidas a través de BGP. En el instructivo, analytics-vpc deberá publicar en Looker las rutas que aprendió on-prem-vpc. Para habilitar esta funcionalidad, el intercambio de tráfico entre VPC requiere una actualización para exportar rutas personalizadas.
Valida las rutas importadas y exportadas actuales.
Navega a RED DE VPC → PEERING DE RED DE VPC → servicenetworking-googleapis-com
En la siguiente captura de pantalla, se detalla la importación de analytics-vpc que importa el psa-range-looker de las redes de VPC con intercambio de tráfico administradas por Google, servicesnetworking.
La opción RUTAS EXPORTADAS reveló que no se exportaron rutas a la red de VPC con intercambio de tráfico, ya que 1) las subredes no están configuradas en analytics-vpc 2) La exportación de rutas personalizadas no está seleccionada
13. Actualiza el intercambio de tráfico entre VPC
Navega a RED DE VPC → PEERING DE RED DE VPC → servicenetworking-googleapis-com → EDITAR
Selecciona EXPORTAR RUTAS PERSONALIZADAS → GUARDAR.
14. Valida el intercambio de tráfico de VPC actualizado
Valida las rutas exportadas.
Navega a RED DE VPC → PEERING DE RED DE VPC → servicenetworking-googleapis-com
Si seleccionas RUTAS EXPORTADAS, se mostrarán las rutas on-prem-vpc (subred de base de datos 172.16.10.0/27) que analytics-vpc exporta a las redes de VPC con intercambio de tráfico que alojan Looker.
15. Creación de bases de datos de PostgreSQL de Looker
En la siguiente sección, realizarás una conexión SSH a la VM de postgres-database con Cloud Shell.
Dentro de Cloud Shell, realiza una conexión SSH a la instancia postgres-database**.**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
Dentro del SO, identifica y anota la dirección IP (ens4) de la instancia de postgres-database.
ip a
Ejemplo:
user@postgres-database:~$ ip a
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
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:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
altname enp0s4
inet 172.16.10.2/32 metric 100 scope global dynamic ens4
valid_lft 84592sec preferred_lft 84592sec
inet6 fe80::4001:acff:fe10:a02/64 scope link
valid_lft forever preferred_lft forever
En el SO, accede a postgresql.
sudo -u postgres psql postgres
Dentro del SO, ingresa la solicitud de contraseña.
\password postgres
En el 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 dirección IP de la instancia de postgres-database y la subred de Acceso privado a Google de Looker (192.168.0.0/22) en el archivo pg_hba.conf debajo de las conexiones locales IPv4, como se muestra en la siguiente captura de pantalla:
sudo nano /etc/postgresql/15/main/pg_hba.conf
En la siguiente sección, quita el comentario de postgresql.conf para escuchar todos los “*” direcciones IP según la siguiente captura de pantalla:
sudo nano /etc/postgresql/15/main/postgresql.conf
Antes:
Después:
Dentro del SO, reinicia el servicio de postgresql.
sudo service postgresql restart
En el SO, valida el estado de postgresql como activo.
sudo service postgresql status
Ejemplo:
En el SO, valida el estado de postgresql como 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 Sat 2023-07-01 23:40:59 UTC; 7s ago
Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 4073 (code=exited, status=0/SUCCESS)
CPU: 2ms
Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.
16. 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 usa para validar Looker a la conectividad 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, enumera la base de datos.
\l
Dentro del SO, crea el Looker de usuarios con el Looker de contraseñas.
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 de looker-schema y sal al prompt de Cloud Shell.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Ejemplo:
user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
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 SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit
Sal del SO y vuelve a Cloud Shell.
\q
exit
17. Crea un firewall en on-prem-vpc
En la siguiente sección, crearás un firewall de Ingress con registro que permita que la subred de Looker se comunique con la instancia de postgres-database.
En Cloud Shell, crea el firewall on-prem-vpc.
gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging
18. Crea un DNS privado en analytics-vpc
Aunque Looker está implementado en una VPC administrada por Google, se admite el acceso al DNS privado analytics-vpc mediante el intercambio de tráfico con redes de servicios.
En la siguiente sección, crearás una zona de DNS privado en analytics-vpc que consta de un registro A de la instancia de postgres-database el nombre de dominio completamente calificado (postgres.analytics.com)
y la dirección IP).
En Cloud Shell, crea la zona privada analytics.com.
gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"
En Cloud Shell, identifica la dirección IP de la instancia de postgres-database.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
Ejemplo:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
En Cloud Shell, crea el registro A y asegúrate de agregar la dirección IP que se identificó previamente.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
Ejemplo:
user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2
Desde Cloud Shell, intercambia el tráfico de dns-suffix analytics.com. a las redes de servicios, lo que permite que Looker acceda a la zona privada analytics-vpc.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. Integra Looker a la base de datos Postgres de Postgres
En la siguiente sección, usarás la consola de Cloud para crear una conexión de base de datos a la instancia local de postgres-database.
En la consola de Cloud, navega a Looker y selecciona la URL de tu instancia para abrir la IU de Looker.
Después del lanzamiento, verás la página de destino como se muestra en la siguiente captura de pantalla.
Navega a ADMINISTRADOR → BASE DE DATOS → CONEXIONES → Selecciona AGREGAR CONEXIÓN.
Completa los detalles de la conexión según la siguiente captura de pantalla y selecciona CONECTAR
Se estableció correctamente la conexión
20. Valida la conectividad de Looker
En la siguiente sección, aprenderás a validar la conectividad de Looker a la base de datos postgres-database en on-prem-vpc con la “prueba” de Looker. y TCPDUMP.
En Cloud Shell, inicia sesión en postgres-database si se agotó el tiempo de espera de la sesión.
Dentro de Cloud Shell, realiza lo siguiente:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
Desde el SO, crea un filtro TCPDUMP con la subred psa-range-looker 192.168.0.0/22.
sudo tcpdump -i any net 192.168.0.0/22 -nn
Navega a Conexión de datos ADMINISTRADOR → BASE DE DATOS → CONEXIONES → Seleccionar → Prueba
Una vez que se seleccione Test, Looker se conectará correctamente a postgres-database como se indica a continuación:
Regresa a la terminal del SO y valida que TCPDUMP haya identificado que psc-range-looker se está conectando a la instancia local de postgres-database.
Agrega una nota para indicar que se mostrará cualquier IP del rango del PSA desde Looker
user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4 In IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4 Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0
21. Recomendaciones de seguridad
Hay algunas recomendaciones de seguridad y prácticas recomendadas relacionadas con la protección de la base de datos de Looker y Postgres. Esas son algunas opciones:
- Configurar los permisos de la cuenta de base de datos con menos privilegios para Looker que aún le permita realizar las funciones necesarias
- Datos en tránsito entre el cliente y la IU de Looker, y de Looker a la base de datos encriptados con TLS 1.2 y versiones posteriores
- Los datos en reposo están encriptados de forma predeterminada. El cliente también puede aprovechar CMEK para instancias de Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) y Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek).
- Control de acceso de Looker: Los administradores de Looker pueden controlar lo que un principio o grupo de usuarios puede ver y hacer en Looker otorgando acceso al contenido, a los datos y a las funciones. Estas opciones permiten que el administrador de Looker defina roles específicos, como el modelo y el conjunto de permisos, y cree un control de acceso detallado a los datos.
- Looker admite registros de auditoría y de acceso a los datos, que capturan quién hizo qué, cuándo y dónde. Los registros de auditoría están habilitados de forma predeterminada, mientras que los registros de acceso a los datos deben habilitarse de forma explícita.
- Actualmente, VPC-SC admite instancias de Incorporación y Enterprise que están configuradas solo con IP privada.
22. Limpia
Borra la instancia de Looker Cloud Core y ve a:
BUSCAR → Instructivo de Looker → BORRAR
En Cloud Shell, borra los componentes del instructivo.
gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet
gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet
gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet
gcloud compute instances delete postgres-database --zone=us-central1-a --quiet
gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet
gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet
gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
gcloud dns managed-zones delete gcp-private-zone
gcloud compute networks delete on-prem-vpc --quiet
gcloud compute addresses delete psa-range-looker --global --quiet
gcloud compute networks delete analytics-vpc --quiet
23. Felicitaciones
Felicitaciones, configuraste y validaste correctamente la conectividad de Looker mediante redes híbridas, lo que permite la comunicación de datos en entornos locales y de múltiples nubes.
También pudiste probar con éxito la conectividad de Looker Cloud Core a la base de datos postgres con la “prueba” de Looker Connect y TCPDUMP en la instancia de postgres-database.
Cosmopup cree que los instructivos son increíbles.
Lecturas adicionales y Videos
- Presentamos la próxima evolución de Looker
- ¿Quieres migrar a GCP? Lo primero es lo primero: las VPC
- Enrutamiento dinámico con Cloud Router
Documentos de referencia
- Documentación de Looker (Google Cloud Core)
- Crea una instancia de Looker (Google Cloud Core)
- Crea una conexión de IP privada para Looker (Google Cloud Core)
- VPN con alta disponibilidad entre redes de Google Cloud
- Configura y administra la traducción de direcciones de red con Cloud NA
- Opciones para intercambiar rutas dinámicas