1. Introduzione
Solo le istanze di Looker (Google Cloud core) che utilizzano l'accesso ai servizi privati per la connessione privata supportano una configurazione con IP privato e IP pubblico.
Un'istanza di Looker (Google Cloud core) che dispone sia di una connessione con IP privato (accesso ai servizi privati) sia di una connessione con IP pubblico ha un URL pubblico e tutto il traffico in entrata passerà attraverso la connessione con IP pubblico. 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, quindi 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 southbound a GitHub utilizzando un bilanciatore del carico proxy TCP interno e un gruppo di endpoint di rete (NEG) internet invocato da Looker PSA.
Cosa imparerai a fare
- Requisiti di rete
- Stabilire la connettività a GitHub da Looker utilizzando una connessione di prova
Che cosa ti serve
- Progetto Google Cloud con autorizzazioni di proprietario
- Account e repository GitHub
- Token di accesso personale GitHub (versione classica)
- Istanze PSA di Looker esistenti con Pubblico + Privato o solo Privato abilitati
2. Cosa creerai
Eseguirai il deployment di un bilanciatore del carico proxy TCP interno e di un NEG di internet configurato con l'indirizzo IP risolto di github.com che sfrutta Cloud NAT per il traffico in uscita su internet 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 regola di forwarding | Utilizzato per allocare un indirizzo IP per il Bilanciatore del carico del proxy TCP regionale interno |
Subnet solo proxy | A ciascuno 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 della subnet solo proxy. |
NEG Internet | Una risorsa utilizzata per definire un backend esterno per il bilanciatore del carico. L'endpoint non può essere raggiunto 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 sfrutta Cloud NAT per il traffico in uscita su internet. |
4. Topologia del codelab
5. Configurazione e requisiti
Configurazione dell'ambiente a tuo ritmo
- 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 al progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarlo.
- L'ID progetto è univoco per tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca; di solito non ti interessa quale sia. Nella maggior parte dei codelab, dovrai fare riferimento al tuo ID progetto (in genere identificato come
PROJECT_ID
). Se l'ID generato non ti piace, puoi generarne un altro casuale. In alternativa, puoi provare il tuo e vedere se è disponibile. Non può essere modificato dopo questo passaggio e rimane invariato per tutta la durata del progetto. - Per tua informazione, esiste un terzo valore, un Numero progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le API/risorse Cloud. La partecipazione a questo codelab non ha costi, o quasi. Per arrestare le risorse ed evitare di incorrere in fatturazione al termine di questo tutorial, puoi eliminare le risorse che hai creato o il progetto. I nuovi utenti di Google Cloud sono idonei al programma Prova senza costi di 300$.
Avvia Cloud Shell
Sebbene Google Cloud possa essere utilizzato 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:
Dovrebbe richiedere solo pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere qualcosa di simile a questo:
Questa macchina virtuale contiene tutti gli strumenti di sviluppo 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 di rete. Tutto il lavoro in questo codelab può essere svolto in 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, pertanto il VPC associato è già stato creato.
In Cloud Shell, crea la subnet della regola di inoltro:
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 in uscita su internet con l'opzione di configurazione –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, pertanto lo stesso NATGW non supporterà il traffico in uscita su internet di GCE/GKE. Esegui il deployment di un altro gateway NAT con –endpoint-types=ENDPOINT_TYPE_VM per l'uscita a 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 consente l'uscita su internet per il bilanciatore del carico del 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 seguito 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 pubblico routable su internet. Se viene scelto il formato INTERNET_FQDN_PORT (opzione 2), il FQDN può essere risolto in un indirizzo IP pubblico routable su internet o in un indirizzo IP privato, a seconda dell'ambito dell'endpoint: regionale o globale.
Opzione 1: configura il NEG di internet utilizzando l'indirizzo IP
Il NEG di internet richiede l'indirizzo IP risolto di Github.com, pertanto, per ottenere il massimo rendimento, apri un terminale locale ed esegui un comando dig per ottenere l'indirizzo IP di github.com.
Esempio da un terminale locale che 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 il tipo di endpoint di rete su internet_ip_port.
In Cloud Shell, crea un NEG di 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 di 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 il FQDN
Facoltativamente, puoi creare un NEG internet e impostare il parametro –network-endpoint-type su internet_FQDN_port.
In Cloud Shell, crea un NEG di 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 il 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
Creare componenti del bilanciatore del carico
In Cloud Shell, svolgi i seguenti passaggi:
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 seguente sintassi, crea una regola di inoltro (bilanciatore del carico del proxy TCP interno).
In Cloud Shell, svolgi i seguenti passaggi:
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 un criterio di risposta DNS per GitHub.com con un record A costituito dall'indirizzo IP del bilanciatore del carico proxy TCP interno.
In seguito, 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 di internet e Cloud NAT.
In Cloud Shell, crea la zona del criterio 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 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 in peering per una connessione di servizio privata che invia richieste di record in un determinato spazio dei nomi proveniente dalla rete VPC del producer di servizi alla rete VPC del consumer per la risoluzione.
In Cloud Shell, crea un dominio DNS con peering per cui Looker eseguirà una query su 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 successivi, utilizzerai la console di Looker per creare un progetto per convalidare la connettività HTTPS a github.com.
12. Crea un nuovo progetto
Attivare la modalità di sviluppo
In Looker Console, vai a:
Attiva la modalità di sviluppo (pagina in basso a sinistra). Una volta selezionata, viene visualizzato il banner "Sei in modalità di sviluppo".
Creare un nuovo progetto
In Cloud Console, vai a:
Sviluppa → Progetti
Seleziona Nuovo progetto LookML
Fornisci un nome al progetto, seleziona Progetto vuoto e poi Crea progetto.
Seleziona Configura Git
Configurare Git
Aggiorna l'URL del repository con i dettagli di GitHub HTTPS, assicurati di aggiungere l'URL con .git 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 completa la configurazione.
Seleziona Azioni Git
Seleziona Testa connessione Git
Convalidare il test di connessione 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.