1. Introduzione
Solo le istanze di Looker (Google Cloud core) che utilizzano l'accesso privato ai servizi per la connessione privata supportano una configurazione con IP privato e IP pubblico.
Un'istanza di Looker (Google Cloud core) con una connessione IP privata (accesso privato ai servizi) e una connessione IP pubblica ha un URL pubblico e tutto il traffico in entrata passerà attraverso la connessione IP pubblica. Il traffico in uscita viene instradato tramite il VPC, che può essere configurato per consentire solo il traffico IP privato, come illustrato nella figura 1.
Figure1

La comunicazione con github.com viene risolta in un indirizzo IP pubblico, pertanto non è raggiungibile da un'istanza di Looker di cui è stato eseguito il deployment come privata o pubblica+privata.
In questo codelab eseguirai una connessione HTTPS in uscita a GitHub utilizzando un bilanciatore del carico proxy TCP interno e un gruppo di endpoint di rete (NEG) internet richiamato da Looker PSA.
Cosa imparerai a fare
- Requisiti di rete
- Stabilisci la connettività a GitHub da Looker utilizzando un test di connessione
Che cosa ti serve
- Progetto Google Cloud con autorizzazioni di proprietario
- Account e repository GitHub
- Token di accesso personale (classico) di GitHub
- Istanza PSA di Looker esistente con IP pubblico + privato o solo privato abilitato

2. Cosa creerai
Esegui il deployment di un bilanciatore del carico proxy TCP interno e di un NEG internet configurato con l'indirizzo IP risolto di github.com che utilizza Cloud NAT per il traffico internet in uscita verso le organizzazioni github.com risolte da Looker.
3. Requisiti di rete
Di seguito è riportata la suddivisione dei requisiti di rete:
Componenti | Descrizione |
VPC ($vpc_network) | VPC in modalità personalizzata |
subnet della regola di forwarding | Utilizzato per allocare un indirizzo IP per il bilanciatore del carico del proxy TCP regionale interno |
Subnet solo proxy | A ognuno dei proxy del bilanciatore del carico viene assegnato un indirizzo IP interno. I pacchetti inviati da un proxy a una VM o a un endpoint di backend hanno un indirizzo IP di origine dalla subnet solo proxy. |
NEG Internet | Una risorsa utilizzata per definire un backend esterno per il bilanciatore del carico. L'endpoint non può essere raggiungibile solo tramite Cloud VPN o Cloud Interconnect. |
Servizio di backend | Un servizio di backend funge da ponte tra il bilanciatore del carico e le risorse di backend. Nel tutorial, il servizio di backend è associato al NEG internet. |
Router Cloud | Cloud NAT si basa sui router Cloud per le funzionalità del control plane, ma non per la gestione delle sessioni BGP. |
Cloud NAT | Il NEG internet a livello di regione utilizza Cloud NAT per l'uscita da internet. |
4. Topologia del codelab

5. Configurazione e requisiti
Configurazione dell'ambiente autonomo
- Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.



- Il nome del progetto è il nome visualizzato per i partecipanti a questo progetto. È una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarlo.
- L'ID progetto è univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo l'impostazione). La console Cloud genera automaticamente una stringa univoca, di solito non ti interessa di cosa si tratta. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere identificato come
PROJECT_ID). Se l'ID generato non ti piace, puoi generarne un altro casuale. In alternativa, puoi provare a crearne uno e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimane per tutta la durata del progetto. - Per tua informazione, esiste un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, devi abilitare la fatturazione in Cloud Console per utilizzare le risorse/API Cloud. Completare questo codelab non costa molto, se non nulla. Per arrestare le risorse ed evitare addebiti oltre a quelli previsti in questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere gestito da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Nella console Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere un risultato simile a questo:

Questa macchina virtuale è caricata con tutti gli strumenti per sviluppatori di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Tutto il lavoro in questo codelab può essere svolto all'interno di un browser. Non devi installare nulla.
6. Prima di iniziare
Abilita API
In Cloud Shell, assicurati che l'ID progetto sia configurato:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
project=[YOUR-PROJECT-ID]
region=[YOUR-REGION]
vpc_network=[VPC Name]
echo $project
echo $region
echo $vpc-network
Attiva tutti i servizi necessari:
gcloud services enable compute.googleapis.com
7. Componenti della rete VPC
Rete VPC
Il prerequisito del tutorial è un'istanza Looker PSA esistente, quindi il VPC associato è già stato creato.
In Cloud Shell, crea la subnet della regola di forwarding:
gcloud compute networks subnets create psa-fr-subnet --network $vpc_network --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
In Cloud Shell, crea la subnet solo proxy regionale:
gcloud compute networks subnets create $region-proxyonly-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=$vpc_network \
--range=10.10.10.0/24
Crea il gateway Public NAT
Il gateway NAT viene utilizzato dal bilanciatore del carico del proxy TCP interno regionale per il traffico internet in uscita con l'opzione di configurazione --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, pertanto lo stesso gateway NAT non supporterà il traffico internet in uscita GCE/GKE. Esegui il deployment di un gateway NAT aggiuntivo con –endpoint-types=ENDPOINT_TYPE_VM per l'uscita da internet di GCE/GKE.
In Cloud Shell, crea il router Cloud:
gcloud compute routers create $vpc_network-cloud-router --network $vpc_network --region $region
In Cloud Shell, crea il gateway Cloud NAT che abilita l'uscita da internet per il bilanciatore del carico proxy TCP:
gcloud compute routers nats create $vpc_network-natgw \
--router=$vpc_network-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxyonly-subnet \
--auto-allocate-nat-external-ips \
--region=$region
Prenota l'indirizzo IP del bilanciatore del carico
In Cloud Shell, prenota un indirizzo IP interno per il bilanciatore del carico che verrà utilizzato in un secondo momento come record A DNS per github.com:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=psa-fr-subnet
In Cloud Shell, visualizza l'indirizzo IP riservato:
gcloud compute addresses describe internet-neg-lb-ip \
--region=$region | grep -i address:
Output di esempio:
user@cloudshell$ gcloud compute addresses describe internet-neg-lb-ip --region=$region | grep -i address:
address: 172.16.20.2
8. NEG Internet
Esistono due modi per configurare l'endpoint esterno a cui fa riferimento il NEG internet : INTERNET_FQDN_PORT o INTERNET_IP_PORT. Se viene scelto il formato INTERNET_IP_PORT (opzione 1), è possibile utilizzare solo un indirizzo IP instradabile su internet pubblico; se viene scelto il formato INTERNET_FQDN_PORT (opzione 2), l'FQDN può essere risolto in un indirizzo IP instradabile su internet pubblico o in un indirizzo IP privato a seconda dell'ambito dell'endpoint: regionale o globale.
Opzione 1: configura il NEG internet utilizzando l'indirizzo IP
Il NEG di internet richiede l'indirizzo IP risolto di Github.com, pertanto per prestazioni ottimali apri un terminale locale, esegui un dig e ottieni l'indirizzo IP di github.com.
L'esempio di un terminale locale genera l'indirizzo IP risolto 140.82.113.4
bash-3.2$ dig github.com ; <<>> DiG 9.10.6 <<>> github.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64801 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;github.com. IN A ;; ANSWER SECTION: github.com. 60 IN A 140.82.113.4 ;; Query time: 409 msec ;; SERVER: ::1#53(::1) ;; WHEN: Thu Sep 26 15:50:45 CDT 2024 ;; MSG SIZE rcvd: 65
Crea un NEG internet e imposta –network-endpoint-type su internet_ip_port.
In Cloud Shell, crea un NEG internet utilizzato per github.com:
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_IP_PORT \
--network=$vpc_network \
--region=$region
In Cloud Shell, aggiorna il NEG internet github-internet-neg con l'indirizzo IP risolto di github.com e la porta 443:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="ip=[your-resolved-ip],port=443" \
--region=$region
Esempio:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="ip=140.82.113.4,port=443" \
--region=$region
Opzione 2: configura il NEG internet utilizzando l'FQDN
Se vuoi, puoi creare un NEG internet e impostare –network-endpoint-type su internet_FQDN_port.
In Cloud Shell, crea un NEG internet utilizzato per github.com:
gcloud compute network-endpoint-groups create github-internet-neg \
--network-endpoint-type=INTERNET_FQDN_PORT \
--network=$vpc_network \
--region=$region
In Cloud Shell, aggiorna il NEG internet github-internet-neg con l'FQDN github.com:
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="fqdn=github.com,port=443" \
--region=$region
9. Crea il servizio GitHub
Crea i componenti del bilanciatore del carico
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute backend-services create psa-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend psa-backend-svc --network-endpoint-group=github-internet-neg --network-endpoint-group-region=$region --region=$region
In Cloud Shell, crea un proxy TCP di destinazione per instradare le richieste al servizio di backend:
gcloud compute target-tcp-proxies create producer-lb-tcp-proxy \
--backend-service=psa-backend-svc \
--region=$region
Nella sintassi seguente, crea una regola di forwarding (bilanciatore del carico proxy TCP interno).
In Cloud Shell, esegui le seguenti operazioni:
gcloud compute forwarding-rules create psa-github-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=$vpc_network \
--subnet=psa-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=443
10. Zona DNS di GitHub
Nella sezione seguente, creerai una policy di risposta DNS per GitHub.com con un record A costituito dall'indirizzo IP del bilanciatore del carico proxy TCP interno.
Dopodiché, il peering DNS condividerà la zona github.com con il PSA di Looker, consentendo la connettività a GitHub tramite il bilanciatore del carico interno in combinazione con il NEG internet e Cloud NAT.
In Cloud Shell, crea la zona della policy di risposta:
gcloud dns --project=$project response-policies create github-com --description="" --networks="$vpc_network"
In Cloud Shell, crea il record A DNS costituito dall'indirizzo IP del bilanciatore del carico del proxy TCP, [insert-your-ip-address]:
gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="[insert-your-ip-address]"
Esempio:
gcloud dns --project=$project response-policies rules create github --response-policy="github-com" --dns-name="github.com." --local-data=name="github.com.",type="A",ttl=300,rrdatas="172.16.20.2"

Aggiornare il peering DNS
In questa sezione, utilizzerai la sintassi "gcloud services peered-dns-domains create" che crea un dominio DNS con peering per una connessione di servizio privata che invia richieste di record in un determinato spazio dei nomi provenienti dalla rete VPC del produttore di servizi alla rete VPC consumer da risolvere.
In Cloud Shell, crea un peered-dns-domain che Looker eseguirà una query per github.com:
gcloud services peered-dns-domains create github-com --project=$project --network=$vpc_network --dns-suffix=github.com.
11. Testare la connettività a GitHub
Nei passaggi che seguono, utilizzerai la console Looker per creare un progetto per convalidare la connettività HTTPS a github.com.
12. Crea un nuovo progetto
Attivare la modalità di sviluppo
Nella console Looker, vai a:
Attiva la modalità di sviluppo (in basso a sinistra della pagina). Una volta selezionata, viene visualizzato il banner "Ti trovi in modalità di sviluppo".

Creare un nuovo progetto
In Cloud Console, vai a:
Sviluppa → Progetti

Seleziona Nuovo progetto LookML

Fornisci un nome per il progetto, seleziona Progetto vuoto e poi Crea progetto.

Seleziona Configura Git

Configurare Git
Aggiorna l'URL del repository con i dettagli di HTTPS di GitHub, assicurati di aggiungere .git all'URL e poi seleziona Continua.

Esempio:

Aggiorna la selezione con il tuo nome utente GitHub e il token di accesso personale (classico), quindi seleziona Testa e finalizza la configurazione.

Seleziona Azioni Git

Seleziona Testa connessione Git

Convalida il test di connessione di Git

13. Esegui la pulizia
Da un singolo terminale Cloud Shell, elimina i componenti del lab:
gcloud compute forwarding-rules delete psa-github-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete psa-backend-svc --region=$region -q
gcloud compute routers nats delete $vpc_network-natgw --router=$vpc_network-cloud-router --router-region=$region -q
gcloud compute routers delete $vpc_network-cloud-router --region=$region -q
gcloud compute network-endpoint-groups delete github-internet-neg --region=$region -q
gcloud compute addresses delete internet-neg-lb-ip --region=$region -q
gcloud compute networks subnets delete psa-fr-subnet $region-proxyonly-subnet --region=$region -q
gcloud services peered-dns-domains delete github-com --network=$vpc_network -q
gcloud dns --project=$project response-policies rules delete github --response-policy="github-com" -q
gcloud dns response-policies update github-com --networks= -q
gcloud dns response-policies delete github-com
14. Complimenti
Congratulazioni, hai configurato e convalidato correttamente la connettività a GitHub utilizzando la console di Looker.
Cosmopup pensa che i codelab siano fantastici.
