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 configuraciones 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 interna de nube privada virtual (VPC) alojada por 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 VPC local a través de una VPN con alta disponibilidad que se pueda replicar para satisfacer 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 Embedded.
Qué compilarás
En este instructivo, crearás una implementación integral de red privada de Looker en una VPC independiente que tenga conectividad híbrida a múltiples nubes y a la infraestructura 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 indican los pasos principales del instructivo.
- Crea una VPC independiente en us-central1
- Asigna una subred IP al acceso a servicios privados
- Implementa la instancia de Looker en la VPC independiente
- Crea la red híbrida y de VPC local
- Anuncia y valida el rango de IP de Looker a través de BGP
- Integra y valida la comunicación de datos de Looker y Postgresql
Figura 1
Qué aprenderás
- Cómo crear una VPC y redes híbridas asociadas
- Cómo implementar Looker en una VPC independiente
- Cómo crear una VPC local y una red híbrida asociada
- Conecta el on-prem-vpc con el analytics-vps a través de la VPN con alta disponibilidad
- Cómo publicar anuncios de subredes de Looker en 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.
En Cloud Shell, haz 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
En Cloud Shell, haz 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 de 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 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.
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 los destinos de las 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.
En 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 autenticarte y acceder a la instancia.
En la siguiente sección, deberás usar el ID de cliente y el secreto de OAuth para crear la instancia de Looker.
No se requieren orígenes de JavaScript ni URIs de redireccionamiento autorizados.
En la consola de Cloud, crea una instancia basada en las capturas de pantalla proporcionadas.
Navega a LOOKER → CREATE AN INSTANCE.
Completa el ID de cliente y el secreto de OAuth que creaste anteriormente.
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 tu 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 en el 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 instancia. Anota la URL.
6. Actualiza el ID de cliente de OAuth 2.0
En la siguiente sección, deberás actualizar el URI de redireccionamiento autorizado del ID de cliente de OAuth que creaste anteriormente. Para ello, agrega /oauth2callback
a la URL de la instancia.
Cuando termines, puedes usar la URL de la instancia para acceder a la IU de Looker.
En la consola de Cloud, navega a APIS Y 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 Cloud Console, 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. Anota 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 de forma automática dos direcciones IPv4 externas, una para cada interfaz de puerta de enlace. Anota 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 CONEXIÓN HÍBRIDA → VPN → PUERTAS DE ENLACE 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. Establece 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 la VPN con alta disponibilidad
Debido a que se establecen los túneles de VPN con alta disponibilidad y las sesiones de BGP, las rutas de on-prem-vpc se aprenden de 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 haya aprendido rutas a través de la 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 la infraestructura 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 de PSA 192.168.0.0/22 (psa-range-looker) que se anunciará al entorno local y que usarán las cargas de trabajo 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. Valida 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 → INTERCAMBIO DE TRÁFICO ENTRE REDES DE VPC → servicenetworking-googleapis-com.
En la siguiente captura de pantalla, se detalla el analytics-vpc que importa el psa-range-looker desde la red de VPC administrada por Google, servicesnetworking.
Si seleccionas RUTA EXPORTADA, no se mostrarán rutas exportadas a la red de VPC con intercambio de tráfico, ya que 1) las subredes no están configuradas en analytics-vpc 2) no se seleccionó la opción para exportar rutas personalizadas.
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 → INTERCAMBIO DE TRÁFICO ENTRE REDES 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, establecerá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
Dentro del SO, accede a postgresql.
sudo -u postgres psql postgres
Dentro del SO, ingresa el mensaje 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 todas las direcciones IP de "*" 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
Dentro del 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 usará para validar la conectividad de Looker a la infraestructura local.
Dentro del SO, accede a postgres.
sudo -u postgres psql postgres
Crea la base de datos dentro del SO.
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 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
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, crea un firewall de entrada con registro que permita la comunicación de la subred de Looker con la instancia de la base de datos de Postgres.
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 la base de datos postgres.
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 identificada anteriormente.
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 con los servicios de redes, 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
La conexión se estableció correctamente
20. Valida la conectividad de Looker
En la siguiente sección, aprenderás a validar la conectividad de Looker a postgres-database en on-prem-vpc con la acción “test” 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 la conexión de datos ADMIN → BASE DE DATOS → CONEXIONES → Seleccionar → Probar
Una vez que se seleccione Prueba, Looker se conectará correctamente a la base de datos de PostgreSQL, 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 cuenta de base de datos con los privilegios mínimos para Looker que aún le permitan 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 para 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 a contenido, datos y 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 empresariales y de incorporación que se configuran solo con IP privada.
22. Limpia
Borra la instancia de Looker Cloud Core y ve a:
LOOKER → looker-tutorial → DELETE
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 a través de redes híbridas, lo que permite la comunicación de datos entre entornos locales y de múltiples nubes.
También pudiste probar correctamente la conectividad de Looker Cloud Core con la base de datos de Postgres con la herramienta "Test" de Looker Connect y TCPDUMP en la instancia de la base de datos de Postgres.
Cosmopup cree que los instructivos son increíbles.
Lecturas y videos adicionales
- Presentamos la siguiente evolución de Looker
- ¿Quieres migrar a GCP? Primero, lo primero: 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 NAT
- Opciones para intercambiar rutas dinámicas