NEG internet HTTPS verso sud di PSA di Looker

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

9f587c14791dd92e.png

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

5348de53f0a78a50.png

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

c5871e5418d37f13.png

5. Configurazione e requisiti

Configurazione dell'ambiente autonomo

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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"

7b41b2f44609e5ed.png

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

70c9ded749decfbe.png

Creare un nuovo progetto

In Cloud Console, vai a:

Sviluppa → Progetti

e8ae11e0392a776d.png

Seleziona Nuovo progetto LookML

65a3c2573e97e1e9.png

Fornisci un nome per il 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 HTTPS di GitHub, assicurati di aggiungere .git all'URL 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 finalizza la configurazione.

1dc44d63c555a9ae.png

Seleziona Azioni Git

b5903668a50a99ca.png

Seleziona Testa connessione Git

51b722e84f2df38c.png

Convalida il test di connessione di 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

Ulteriori letture e video

Documentazione di riferimento