1. Introduzione
Looker (Google Cloud core) fornisce provisioning, configurazione e gestione semplificati e senza problemi di un'istanza di Looker dalla console Google Cloud. Alcune attività di amministrazione dell'istanza possono essere eseguite anche dalla console.
Esistono tre configurazioni di rete disponibili per le istanze di Looker (Google Cloud core):
- Pubblico: la connessione di rete utilizza un indirizzo IP esterno accessibile da internet.
- Privata: la connessione di rete utilizza un indirizzo IP interno di Virtual Private Cloud (VPC) ospitato da Google.
- Pubblico e privato: la connessione di rete utilizza sia un indirizzo IP pubblico sia un indirizzo IP privato, in cui il traffico in entrata verrà instradato tramite IP pubblico e quello in uscita tramite IP privato.
Nel tutorial eseguirai il deployment di una rete privata completa end-to-end per supportare la connettività di Looker a un VPC on-premise tramite VPN ad alta disponibilità che può essere replicata per soddisfare i tuoi requisiti di connettività multi cloud e on-premise.
Looker (Google Cloud core) supporta l'IP privato per le istanze che soddisfano i seguenti criteri:
- Le versioni dell'istanza devono essere Enterprise o Embed.
Cosa creerai
In questo tutorial, creerai un deployment di rete privato Looker completo in un VPC autonomo con connettività ibrida a multi-cloud e on-premise.
Configurerai una rete VPC denominata on-prem-vpc
per rappresentare un ambiente on-premise. Per il tuo deployment, la VPN on-prem non esisterebbe, ma verrebbe utilizzata il networking ibrido con il data center on-premise o il cloud provider.
Di seguito sono riportati i passaggi principali del tutorial
- Crea un VPC autonomo in us-central1
- Alloca una subnet IP all'accesso ai servizi privati
- Esegui il deployment dell'istanza di Looker nel VPC autonomo
- Crea la rete on-prem-vpc e il networking ibrido
- Pubblicizza e convalida l'intervallo IP di Looker su BGP
- Integra e convalida la comunicazione dei dati di Looker e PostgreSQL
Figure1
Obiettivi didattici
- Come creare un VPC e il networking ibrido associato
- Come eseguire il deployment di Looker in una VPC autonoma
- Come creare una VPN on-prem e il networking ibrido associato
- Connetti la VPC on-prem all'vps di analisi tramite VPN ad alta disponibilità
- Come pubblicizzare le subnet Looker sul networking ibrido
- Come monitorare l'infrastruttura di rete ibrida
- Come integrare un database PostgreSQL con Looker Cloud Core
Che cosa ti serve
- Progetto Google Cloud
Autorizzazioni IAM
2. Prima di iniziare
Aggiornare il progetto per supportare il tutorial
Questo tutorial utilizza $variables per facilitare l'implementazione della configurazione di gcloud in Cloud Shell.
All'interno di Cloud Shell, esegui queste operazioni:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
3. Configurazione VPC
Crea analytics-vpc
All'interno di Cloud Shell, esegui queste operazioni:
gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom
Crea la VM on-prem-vpc
All'interno di Cloud Shell, esegui queste operazioni:
gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom
Crea la subnet del database PostgreSQL
All'interno di Cloud Shell, esegui queste operazioni:
gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1
Configurazione di Cloud Router e NAT
Nel tutorial viene utilizzato Cloud NAT per l'installazione dei pacchetti software perché l'istanza VM del database non ha un indirizzo IP esterno.
In Cloud Shell, crea il router Cloud.
gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1
In Cloud Shell, crea il gateway 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 l'istanza di test del database
Crea un'istanza del database Postgres che verrà utilizzata per testare e convalidare la connettività a Looker.
In Cloud Shell, crea l'istanza.
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 regole firewall
Per consentire a IAP di connettersi alle tue istanze VM, crea una regola firewall che:
- Si applica a tutte le istanze VM a cui vuoi accedere tramite IAP.
- Consente il traffico in entrata dall'intervallo IP 35.235.240.0/20. Questo intervallo contiene tutti gli indirizzi IP che utilizzati da IAP per l'inoltro TCP.
Da 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. Accesso ai servizi privato
L'accesso privato ai servizi è una connessione privata tra la tua rete VPC e una rete di proprietà di Google o di terze parti. Google o la terza parte, entità che forniscono servizi, sono noti anche come producer di servizi. Looker Cloud Core è un producer di servizi.
La connessione privata consente alle istanze VM nella tua rete VPC e ai servizi a cui accedi di comunicare esclusivamente mediante indirizzi IP interni.
A livello generale, per utilizzare l'accesso privato ai servizi, devi allocare un intervallo di indirizzi IP (blocco CIDR) nella rete VPC e quindi creare una connessione privata a un producer di servizi.
Alloca l'intervallo di indirizzi IP per i servizi
Prima di creare una connessione privata, devi allocare un intervallo di indirizzi IPv4 che verrà utilizzato dalla rete VPC del producer di servizi. In questo modo non si verificano collisioni di indirizzi IP tra la rete VPC e la rete del producer di servizi.
Quando allochi un intervallo nella tua rete VPC, questo intervallo non è idoneo per le subnet (intervalli principali e secondari) e le destinazioni delle route statiche personalizzate.
L'utilizzo di intervalli di indirizzi IPv6 con l'accesso ai servizi privati non è supportato.
Abilita l'API Service Networking per il tuo progetto nella console Google Cloud. Quando abiliti l'API, potrebbe essere necessario aggiornare la pagina della console per verificare che l'API sia stata abilitata.
Creare un'allocazione IP
Per specificare un intervallo di indirizzi e la lunghezza del prefisso (subnet mask), utilizza gli indirizzi e i flag lunghezza prefisso. Ad esempio, per allocare il blocco CIDR 192.168.0.0/22, specifica 192.168.0.0 come indirizzo e 22 per la lunghezza del prefisso.
In Cloud Shell, crea l'allocazione IP per 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
In Cloud Shell, convalida l'allocazione IP.
gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
Esempio:
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
Creare una connessione privata
Dopo aver creato un intervallo allocato, puoi creare una connessione privata a un producer di servizi, Looker Cloud Core. La connessione privata stabilisce una connessione di peering di rete VPC tra la tua rete VPC e la rete del producer di servizi una volta stabilita l'istanza Looker.
Le connessioni private sono una relazione uno a uno tra la tua rete VPC e un producer di servizi. Se un singolo producer di servizi offre più servizi, è necessaria una sola connessione privata per tutti i servizi del producer.
Se ti connetti a più producer di servizi, utilizza un'allocazione univoca per ogni producer di servizi. In questo modo puoi gestire le impostazioni di rete, come route e regole firewall, per ciascun producer di servizi.
In Cloud Shell, crea una connessione privata e prendi nota del nome dell'operazione.
gcloud services vpc-peerings connect \
--service=servicenetworking.googleapis.com \
--ranges=psa-range-looker \
--network=analytics-vpc
Esempio:
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.
In Cloud Shell, controlla se l'operazione è andata a buon fine, sostituisci OPERATION_NAME con il nome generato nel passaggio precedente.
gcloud services vpc-peerings operations describe \
--name=OPERATION_NAME
Esempio:
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 un'istanza di Looker (Google Cloud core)
Prima di iniziare
Abilita l'API Looker per il tuo progetto nella console Google Cloud. Quando abiliti l'API, potrebbe essere necessario aggiornare la pagina della console per verificare che l'API sia stata abilitata.
Configura un client OAuth per eseguire l'autenticazione e accedere all'istanza.
Nella sezione seguente, dovrai utilizzare il client secret e l'ID client OAuth per creare l'istanza di Looker.
Le origini JavaScript e gli URI di reindirizzamento autorizzati non sono obbligatori.
All'interno della console Cloud, crea un'istanza basata sugli screenshot forniti.
Vai a CERCA → CREA UN'ISTANZA
Compila il client secret e l'ID client OAuth creati in precedenza.
Seleziona CREA.
Durante la creazione dell'istanza, il sistema ti reindirizzerà alla pagina Istanze all'interno della console. Potresti dover aggiornare la pagina per visualizzare lo stato della nuova istanza. Puoi anche visualizzare l'attività di creazione delle istanze facendo clic sull'icona delle notifiche nel menu della console Google Cloud. Durante la creazione dell'istanza, l'icona delle notifiche nel menu della console Google Cloud sarà circondata da un'icona di caricamento.
Dopo aver creato l'istanza di Looker, viene generato un URL dell'istanza. Prendi nota dell'URL.
6. Aggiorna l'ID client OAuth 2.0
Nella sezione seguente, dovrai aggiornare l'URI di reindirizzamento autorizzato dell'ID client OAuth creato in precedenza aggiungendo /oauth2callback
all'URL dell'istanza.
Al termine, puoi utilizzare l'URL dell'istanza per accedere alla UI di Looker.
In Cloud Console, vai a API E SERVIZI → CREDENZIALI.
Seleziona il tuo ID client Oauth 2.0 e aggiorna l'URL dell'istanza, come mostrato di seguito:
7. Convalida l'accesso a Looker
In Cloud Console, vai a Looker e seleziona l'URL dell'istanza per aprire l'interfaccia utente di Looker.
Al termine dell'avvio, verrà visualizzata la pagina di destinazione indicata nello screenshot di seguito che conferma il tuo accesso a Looker Cloud Core.
8. Connettività ibrida
Nella sezione seguente creerai un router Cloud che ti consente di scambiare dinamicamente le route tra il tuo virtual private cloud (VPC) e la rete peer utilizzando il Border Gateway Protocol (BGP).
Il router Cloud può configurare una sessione BGP su un tunnel Cloud VPN per connettere le tue reti. Apprende automaticamente i nuovi intervalli di indirizzi IP della subnet e li annuncia alla rete peer.
Nel tutorial eseguirai il deployment della VPN ad alta disponibilità tra analytics-vpc e on-prem-vpc per illustrare la connettività privata a Looker.
Crea il gateway VPN ad alta disponibilità per analytics-vpc
Quando viene creato ogni gateway, vengono assegnati automaticamente due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway. Prendi nota di questi indirizzi IP da utilizzare in seguito durante la procedura di configurazione.
In Cloud Shell, crea il GW VPN ad alta disponibilità
gcloud compute vpn-gateways create analytics-vpn-gw \
--network=analytics-vpc\
--region=us-central1
Crea il gateway VPN ad alta disponibilità per on-prem-vpc
Quando viene creato ciascun gateway, vengono automaticamente allocati due indirizzi IPv4 esterni, uno per ogni interfaccia del gateway. Prendi nota di questi indirizzi IP da utilizzare in seguito nei passaggi di configurazione.
All'interno di Cloud Shell, crea il GW VPN ad alta disponibilità.
gcloud compute vpn-gateways create on-prem-vpn-gw \
--network=on-prem-vpc\
--region=us-central1
Convalida la creazione di un GW VPN ad alta disponibilità
Nella console, vai a CONNESSIBILITÀ IBRIDA → VPN → GATEWAY VPN CLOUD.
Crea il router Cloud per la VPC analytics
In Cloud Shell, crea il router Cloud che si trova in us-central1
gcloud compute routers create analytics-cr-us-central1 \
--region=us-central1 \
--network=analytics-vpc\
--asn=65001
Crea il router Cloud per la VPN on-prem-vpc
In Cloud Shell, crea il router Cloud in us-central1
gcloud compute routers create on-prem-cr-us-central1 \
--region=us-central1 \
--network=on-prem-vpc \
--asn=65002
Crea i tunnel VPN per analytics-vpc
Creerai due tunnel VPN su ciascun gateway VPN ad alta disponibilità.
Crea tunnel VPN0
In 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
Crea tunnel VPN1
In 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 i tunnel VPN per on-prem-vpc
Creerai due tunnel VPN su ciascun gateway VPN ad alta disponibilità.
Crea tunnel VPN0
In 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
Crea tunnel VPN1
In 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
Convalida la creazione del tunnel VPN
Utilizzando la console, vai a CONNETTIVITÀ IBRIDA → VPN → TUNNEL DI CLOUD VPN.
9. Stabilire i vicini BGP
Crea sessioni BGP
In questa sezione configurerai le interfacce del router Cloud e i peer BGP.
Crea un'interfaccia BGP e il peering per analytics-vpc
In Cloud Shell, crea l'interfaccia 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
In Cloud Shell, crea il peer 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
In Cloud Shell, crea l'interfaccia 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
In Cloud Shell, crea il peer 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 un'interfaccia BGP e il peering per on-prem-vpc
In Cloud Shell, crea l'interfaccia 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
In Cloud Shell, crea il peer 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
In Cloud Shell, crea l'interfaccia 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
In Cloud Shell, crea il peer 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
Vai a CONNEVITÀ IBRIDA → VPN per visualizzare i dettagli del tunnel VPN.
Convalida le route apprese da analytics-vpc tramite VPN ad alta disponibilità
Poiché sono stati stabiliti i tunnel VPN ad alta disponibilità e le sessioni BGP, le route da VPC on-prem vengono apprese da analytics-vpc. Utilizzando la console, vai a Rete VPC → Reti VPC → analytics-vpc → ROUTES → REGIONE → us-central1 → VISUALIZZA
Verifica che il VPC di analisi abbia appreso le route dalla subnet del database VPC on-prem-us-central1 172.16.10.0/27
Verifica che la VPN on-prem non abbia appreso route sulla VPN ad alta disponibilità
analytics-vpc non ha una subnet, pertanto il router Cloud non annuncerà alcuna subnet alla subnet on-prem-vpc . Utilizzando la console, vai a Rete VPC → Reti VPC → on-prem-vpc → ROUTES → REGIONE → us-central1 → VISUALIZZA
10. Annuncia la subnet di Looker per l'on-premise
La subnet di accesso privato ai servizi (PSA) di Looker non viene pubblicizzata automaticamente dal router cloud analytics-cr-us-central1 perché è assegnata a PSA, non al VPC.
Dovrai creare un annuncio di route personalizzato da analytics-cr-central1 per la subnet PSA 192.168.0.0/22 (psa-range-looker) che verrà pubblicizzato nell'ambiente on-premise e utilizzato dai carichi di lavoro per accedere a Looker.
Nella console, vai a CONNETTIVITÀ IBRIDA → ROUTER CLOUD → analytics-cr-us-central1, quindi seleziona MODIFICA.
Nella sezione Route annunciate, seleziona l'opzione Crea route personalizzate, aggiorna i campi in base all'esempio riportato di seguito, seleziona FINE e poi fai clic su SALVA.
11. Verifica che la VPC on-prem abbia appreso la subnet di Looker
Ora la VPC on-prem potrà accedere alla subnet PSA di Looker perché è stata pubblicizzata da analytics-cr-us-central1 come annuncio di route personalizzato.
Nella console, vai a RETE VPC → RETI VPC → on-prem-vpc → ROTTE → REGIONE → us-central1 → VISUALIZZA
Osserva le route di Looker pubblicizzate dalla VPC di analisi:
12. Convalida il peering VPC attuale
La connessione tra Looker Cloud Core e la VPC di analisi avviene tramite il peering VPC che consente lo scambio di route personalizzate apprese tramite BGP. Nel tutorial, il VPC analytics dovrà pubblicare i route appresi dal VPC on-prem in Looker. Per abilitare questa funzionalità, il peering VPC richiede un aggiornamento per esportare le route personalizzate.
Convalida le route correnti importate ed esportate.
Vai a RETE VPC → PEERING RETE VPC → servicenetworking-googleapis-com
Lo screenshot seguente mostra i dettagli dell'importazione di analytics-vpc di psa-range-looker dalla rete VPC gestita da Google, servicesnetworking.
Seleziona ROUTES ESPORTATI non mostra alcuna route esportata nella rete VPC in peering poiché 1) Le subnet non sono configurate in analytics-vpc 2) L'esportazione delle route personalizzate non è selezionata
13. Aggiornamento peering VPC
Vai a RETE VPC → PEERING RETE VPC → servicenetworking-googleapis-com → MODIFICA
Seleziona ESPORTA PERCORSI PERSONALIZZATI → SALVA
14. Convalida il peering VPC aggiornato
Convalida le route esportate.
Vai a RETE VPC → PEERING RETE VPC → servicenetworking-googleapis-com
Se selezioni ROUTES EXPORTED (ROUTES ESPORTATE), vengono visualizzate le route on-prem-vpc (subnet del database 172.16.10.0/27) esportate nella rete VPC in peering che ospita Looker da analytics-vpc.
15. Creazione del database Postgres di Looker
Nella sezione seguente, eseguirai un accesso SSH alla VM postgres-database utilizzando Cloud Shell.
All'interno di Cloud Shell, esegui un'operazione ssh nell'istanza postgres-database**.**
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"
All'interno del sistema operativo, identifica e prendi nota dell'indirizzo IP (ens4) dell'istanza del database postgres.
ip a
Esempio:
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
Nel sistema operativo, accedi a postgresql.
sudo -u postgres psql postgres
Nel sistema operativo, inserisci la richiesta della password.
\password postgres
Nel sistema operativo, imposta la password su postgres (inserisci la stessa password due volte)
postgres
Esempio:
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:
All'interno del sistema operativo, esci da postgres.
\q
Esempio:
postgres=# \q
user@postgres-database:~$
Nella sezione seguente, inserirai l'indirizzo IP dell'istanza postgres-database e la subnet di accesso privato Google di Looker (192.168.0.0/22) nel file pg_hba.conf sotto le connessioni locali IPv4, come illustrato nello screenshot seguente:
sudo nano /etc/postgresql/15/main/pg_hba.conf
Nella sezione seguente, rimuovi il commento da postgresql.conf per rimanere in ascolto di tutti gli indirizzi IP "*" in base allo screenshot seguente:
sudo nano /etc/postgresql/15/main/postgresql.conf
Prima:
Dopo:
All'interno del sistema operativo, riavvia il servizio postgresql.
sudo service postgresql restart
All'interno del sistema operativo, convalida lo stato postgresql come attivo.
sudo service postgresql status
Esempio:
All'interno del sistema operativo, convalida lo stato postgresql come attivo.
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 il database postgres
Nella sezione seguente, creerai un database PostgreSQL denominato postgres_looker e lo schema looker_schema utilizzato per convalidare la connettività di Looker on-premise.
All'interno del sistema operativo, accedi a postgres.
sudo -u postgres psql postgres
All'interno del sistema operativo, crea il database.
create database postgres_looker;
Nel sistema operativo, indica il database.
\l
All'interno del sistema operativo, crea il looker dell'utente con il looker della password
create user postgres_looker with password 'postgreslooker';
Connettiti al database nel sistema operativo.
\c postgres_looker;
Nel sistema operativo, crea lo schema Looker schema ed esci al prompt di Cloud Shell.
create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit
Esempio:
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
Esci dal sistema operativo e torna a Cloud Shell.
\q
exit
17. Crea un firewall in on-prem-vpc
Nella sezione seguente, crea un firewall Ingress con registrazione che consenta la comunicazione della subnet di Looker con l'istanza del database postgres.
Da Cloud Shell, crea il 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 DNS privato in analytics-vpc
Anche se il deployment di Looker è stato eseguito in un VPC gestito da Google, l'accesso al DNS privato analytics-vpc è supportato tramite il peering con il networking dei servizi.
Nella sezione seguente, creerai una zona DNS privata in analytics-vpc composta da un record A del nome di dominio completo dell'istanza postgres-database (postgres.analytics.com)
e dell'indirizzo IP).
Da Cloud Shell, crea la zona privata 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"
Da Cloud Shell, identifica l'indirizzo IP dell'istanza postgres-database.
gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
Esempio:
user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
networkIP: 172.16.10.2
Da Cloud Shell, crea il record A e assicurati di aggiungere l'indirizzo IP identificato in precedenza.
gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"
Esempio:
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
Da Cloud Shell, dal peer dns-suffix analytics.com al networking di servizi, consentendo a Looker di accedere alla zona privata analytics-vpc.
gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.
19. Integrare Looker con il database postgres-database di Postgres
Nella sezione seguente utilizzerai la console Cloud per creare una connessione di database all'istanza postgres-database on-premise.
Nella console Cloud, vai a Looker e seleziona l'URL dell'istanza che aprirà la UI di Looker.
Una volta lanciato, verrà visualizzata la pagina di destinazione indicata nello screenshot di seguito.
Vai ad AMMINISTRAZIONE → DATABASE → CONNESSIONI → seleziona AGGIUNGI CONNESSIONE.
Compila i dettagli della connessione come indicato nello screenshot di seguito, quindi seleziona COLLEGA.
La connessione è riuscita
20. Convalida la connettività di Looker
Nella sezione seguente imparerai a convalidare la connettività di Looker al database postgres-database nella VM on-prem-vpc utilizzando l'azione "test" di Looker e TCPDUMP.
Da Cloud Shell, accedi al database postgres se la sessione ha superato il tempo di attesa.
In Cloud Shell, svolgi i seguenti passaggi:
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"
Dal sistema operativo, crea un filtro TCPDUMP con la subnet psa-range-looker 192.168.0.0/22
sudo tcpdump -i any net 192.168.0.0/22 -nn
Vai alla connessione dati AMMINISTRAZIONE → DATABASE → CONNESSIONI → Seleziona → Test
Dopo aver selezionato Test, Looker si connetterà correttamente al database postgres-database come indicato di seguito:
Torna al terminale del sistema operativo e verifica che TCPDUMP abbia identificato che psc-range-looker si connette all'istanza del database postgres on-premise.
Aggiungi una nota che qualsiasi IP dell'intervallo di PSA verrà visualizzato da 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. Suggerimenti per la sicurezza
Esistono pochi consigli e best practice per la sicurezza relativi alla protezione di Looker e del database Postgres. ad esempio:
- Configurare le autorizzazioni dell'account database con i privilegi minimi per Looker, che consentano comunque di eseguire le funzioni necessarie.
- I dati in transito tra il client e l'interfaccia utente di Looker e da Looker al database sono criptati utilizzando TLS 1.2 o versioni successive
- I dati at-rest sono criptati per impostazione predefinita. Il cliente può anche sfruttare CMEK per le istanze Looker ( https://cloud.google.com/looker/docs/looker-core-cmek) e per Postgres ( https://cloud.google.com/sql/docs/postgres/configure-cmek)
- Controllo dell'accesso a Looker: gli amministratori di Looker possono controllare cosa può vedere e fare un utente o un gruppo di utenti in Looker concedendo l'accesso ai contenuti, ai dati e alle funzionalità. Queste opzioni consentono all'amministratore di Looker di definire ruoli specifici che includono il modello e il set di autorizzazioni e creare un controllo dell'accesso granulare ai dati.
- Looker supporta sia audit log che log di accesso ai dati, che acquisiscono chi ha fatto cosa, quando e dove. Gli audit log sono abilitati per impostazione predefinita, mentre i log di accesso ai dati devono essere abilitati esplicitamente.
- Attualmente VPC-SC supporta le istanze Enterprise e Embed configurate solo con IP privato
22. Esegui la pulizia
Per eliminare l'istanza di Looker Cloud Core, vai a:
LOOKER → looker-tutorial → DELETE
Da Cloud Shell, elimina i componenti del tutorial.
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. Complimenti
Complimenti, hai configurato e convalidato la connettività Looker su networking ibrido, consentendo la comunicazione dati in ambienti on-premise e multi-cloud.
Hai anche potuto testare correttamente la connettività di Looker Cloud Core al database postgres utilizzando lo strumento "Test" di Looker Connect e TCPDUMP nell'istanza del database postgres.
Cosmopup pensa che i tutorial siano fantastici.
Letture e video di approfondimento
- Ti presentiamo la prossima evoluzione di Looker
- Effettuando la migrazione a Google Cloud? Innanzitutto: le VPC
- Routing dinamico con il router Cloud
Documentazione di riferimento
- Documentazione di Looker (Google Cloud core)
- Crea un'istanza di Looker (Google Cloud core)
- Crea una connessione IP privato per Looker (Google Cloud core)
- VPN ad alta disponibilità tra reti Google Cloud
- Configura e gestisci la Network Address Translation con Cloud NAT
- Opzioni per lo scambio di route dinamiche