NEG internet HTTPS verso sud di PSA di Looker

Informazioni su questo codelab
schedule38 minuti
subjectUltimo aggiornamento: 2 aprile 2025
account_circleScritto da: Deepak Michael, Emanuele Mazza

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

9f587c14791dd92e.png

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

5348de53f0a78a50.png

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

c5871e5418d37f13.png

5. Configurazione e requisiti

Configurazione dell'ambiente a tuo ritmo

  1. 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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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:

55efc1aaa7a4d3ad.png

Dovrebbe richiedere solo pochi istanti per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere qualcosa di simile a questo:

7ffe5cbb04455448.png

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"

7b41b2f44609e5ed.png

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".

70c9ded749decfbe.png

Creare un nuovo progetto

In Cloud Console, vai a:

Sviluppa → Progetti

e8ae11e0392a776d.png

Seleziona Nuovo progetto LookML

65a3c2573e97e1e9.png

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

9185808e001fa540.png

Seleziona Configura Git

42f5e51ce70642ad.png

Configurare Git

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

f5c448f6659b8fc1.png

Esempio:

4065ab1d196589f.png

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

1dc44d63c555a9ae.png

Seleziona Azioni Git

b5903668a50a99ca.png

Seleziona Testa connessione Git

51b722e84f2df38c.png

Convalidare il test di connessione Git

8fb7386b739f60be.png

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.

c911c127bffdee57.jpeg

Passaggi successivi

Letture e video di approfondimento

Documentazione di riferimento