1. Introduzione
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 PSC come consumatore di servizi.
Private Service Connect è una funzionalità della rete di Google Cloud che consente ai consumer di accedere ai servizi gestiti in privato dall'interno della loro rete VPC. Analogamente, consente ai producer di servizi gestiti di ospitare questi servizi nelle proprie reti VPC separate e di offrire una connessione privata ai loro consumer. Ad esempio, quando utilizzi Private Service Connect per accedere a Looker, sei il consumer del servizio e Google è il producer del servizio, come evidenziato nella Figura 1.
Figura 1.
L'accesso in uscita, noto anche come PSC inversa, consente al consumer di creare un servizio pubblicato come producer per consentire a Looker di accedere agli endpoint on-premise, in un VPC, ai servizi gestiti e a internet. Le connessioni in uscita possono essere implementate in qualsiasi regione, indipendentemente da dove è implementato Looker PSC, come evidenziato nella Figura 2.
Figura 2.
Cosa imparerai a fare
- Requisiti di rete
- Creare un servizio producer di Private Service Connect
- Crea un endpoint Private Service Connect in Looker
- 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 di GitHub (versione classica)
- Istanza Looker PSC esistente
2. Cosa creerai
Stabilirai una rete di produttori, looker-psc-demo, per implementare il bilanciatore del carico proxy TCP interno e il NEG di internet pubblicato come servizio tramite Private Service Connect (PSC). Una volta pubblicata, dovrai eseguire le seguenti azioni per convalidare l'accesso al servizio Producer:
- Crea un endpoint PSC in Looker associato al collegamento del servizio producer
- Utilizza la console di Looker per creare un nuovo progetto e testare la connettività HTTPS a GitHub.com
3. Requisiti di rete
Di seguito è riportata un'analisi dettagliata dei requisiti di rete per la rete Producer. Il consumer in questo codelab è l'istanza PSC di Looker.
Componenti | Descrizione |
VPC (looker-psc-demo) | VPC modalità personalizzata |
Subnet NAT PSC | I pacchetti della rete VPC del consumer vengono tradotti utilizzando il NAT di origine (SNAT) in modo che i relativi indirizzi IP di origine originali vengano convertiti in indirizzi IP di origine della subnet NAT nella rete VPC del producer. |
Subnet della regola di inoltro PSC | Utilizzato per allocare un indirizzo IP per il bilanciatore del carico proxy TCP interno regionale |
Subnet NEG PSC | Utilizzato per allocare un indirizzo IP per il gruppo di endpoint di rete |
Subnet solo proxy | A ogni 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 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 il traffico in uscita da internet. |
4. Topologia codelab
5. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo 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 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 informazione, c'è un terzo valore, il numero di 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
Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.
Dalla 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 di rete e l'autenticazione. Tutto il lavoro in questo codelab può essere svolto in un browser. Non occorre 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]
echo $project
echo $region
Abilita tutti i servizi necessari:
gcloud services enable compute.googleapis.com
7. Crea la rete VPC del producer
Rete VPC
All'interno di Cloud Shell, esegui queste operazioni:
gcloud compute networks create looker-psc-demo --subnet-mode custom
Creare subnet
La subnet PSC verrà associata al collegamento del servizio PSC ai fini della traduzione degli indirizzi di rete.
In Cloud Shell, crea la subnet NAT PSC:
gcloud compute networks subnets create producer-psc-nat-subnet --network looker-psc-demo --range 172.16.10.0/28 --region $region --purpose=PRIVATE_SERVICE_CONNECT
In Cloud Shell, crea la subnet della regola di inoltro del produttore:
gcloud compute networks subnets create producer-psc-fr-subnet --network looker-psc-demo --range 172.16.20.0/28 --region $region --enable-private-ip-google-access
In Cloud Shell, crea la subnet solo proxy a livello di regione del producer:
gcloud compute networks subnets create $region-proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=$region \
--network=looker-psc-demo \
--range=10.10.10.0/24
Crea il gateway Public NAT
Il gateway NAT viene utilizzato dal bilanciatore del carico 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 looker-psc-demo-cloud-router --network looker-psc-demo --region $region
In Cloud Shell, crea il gateway Cloud NAT che attiva l'uscita a internet per il bilanciatore del carico del proxy TCP:
gcloud compute routers nats create looker-psc-demo-natgw \
--router=looker-psc-demo-cloud-router \
--endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \
--nat-custom-subnet-ip-ranges=$region-proxy-only-subnet \
--auto-allocate-nat-external-ips \
--region=$region
Prenota l'indirizzo IP del bilanciatore del carico
All'interno di Cloud Shell, prenota un indirizzo IP interno per il bilanciatore del carico:
gcloud compute addresses create internet-neg-lb-ip \
--region=$region \
--subnet=producer-psc-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
Configura il NEG internet
Crea un NEG internet e imposta il valore –network-endpoint-type su internet-fqdn-port (il nome host e la porta su cui è possibile raggiungere il backend esterno).
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=looker-psc-demo \
--region=$region
All'interno di Cloud Shell, aggiorna il NEG internet github-internet-neg con il nome di dominio completo github.com e la porta 443
gcloud compute network-endpoint-groups update github-internet-neg \
--add-endpoint="fqdn=github.com,port=443" \
--region=$region
Crea criterio firewall di rete e regole firewall
In Cloud Shell, svolgi i seguenti passaggi:
gcloud compute network-firewall-policies create looker-psc-demo-policy --global
gcloud compute network-firewall-policies associations create --firewall-policy looker-psc-demo-policy --network looker-psc-demo --name looker-psc-demo --global-firewall-policy
La seguente regola firewall consente il traffico dall'intervallo di subnet NAT PSC a tutte le istanze nella rete.
In Cloud Shell, svolgi i seguenti passaggi:
gcloud compute network-firewall-policies rules create 2001 --action ALLOW --firewall-policy looker-psc-demo-policy --description "allow traffic from PSC NAT subnet" --direction INGRESS --src-ip-ranges 172.16.10.0/28 --global-firewall-policy --layer4-configs=tcp
8. Crea servizio producer
Crea i componenti del bilanciatore del carico
All'interno di Cloud Shell, esegui queste operazioni:
gcloud compute backend-services create producer-backend-svc --protocol=tcp --region=$region --load-balancing-scheme=INTERNAL_MANAGED
gcloud compute backend-services add-backend producer-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=producer-backend-svc \
--region=$region
Nella sintassi seguente, crea una regola di forwarding (bilanciatore del carico proxy tcp interno).
In Cloud Shell, esegui queste operazioni:
gcloud compute forwarding-rules create producer-github-fr \
--load-balancing-scheme=INTERNAL_MANAGED \
--network-tier=PREMIUM \
--network=looker-psc-demo \
--subnet=producer-psc-fr-subnet \
--address=internet-neg-lb-ip \
--target-tcp-proxy=producer-lb-tcp-proxy \
--target-tcp-proxy-region=$region \
--region=$region \
--ports=443
Crea collegamento al servizio
All'interno di Cloud Shell, crea il collegamento al servizio, github-svc-attachment-https:
gcloud compute service-attachments create github-svc-attachment-https --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet
Successivamente, ottieni e prendi nota del collegamento al servizio elencato nell'URI selfLink a partire dai progetti per configurare l'endpoint PSC in Looker.
selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-https
In Cloud Shell, svolgi i seguenti passaggi:
gcloud compute service-attachments describe github-svc-attachment-https --region=$region
Esempio:
connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-30T09:44:03.883-07:00'
description: ''
enableProxyProtocol: false
fingerprint: RfKh3blWZE0=
id: '2897904404386302012'
kind: compute#serviceAttachment
name: github-svc-attachment-https
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
high: '19348441121424360'
low: '2897904404386302012'
reconcileConnections: false
region: https://www.googleapis.com/compute/v1/projects/$project/regions/$region
selfLink: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-github-fr
In Cloud Console, vai a:
Servizi di rete → Private Service Connect → Servizi pubblicati
9. Stabilisci una connessione di endpoint PSC in Looker
Nella sezione seguente, assocerai il collegamento del servizio Producers a Looker Core PSC tramite i flag uso –psc-service-attachment in Cloud Shell per un singolo dominio.
In Cloud Shell, crea l'associazione psc aggiornando i seguenti parametri in base al tuo ambiente:
- INSTANCE_NAME: il nome dell'istanza di Looker (Google Cloud core).
- DOMAIN_1: github.com
- SERVICE_ATTACHMENT_1: URI acquisito durante la descrizione del collegamento al servizio, github-svc-attachment-https.
- REGIONE: la regione in cui è ospitata l'istanza di Looker (Google Cloud core).
In Cloud Shell, svolgi i seguenti passaggi:
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION
Esempio:
gcloud looker instances update looker-psc-instance \
--psc-service-attachment domain=github.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https \
--region=$region
All'interno di Cloud Shell, verifica che lo stato della connessione serviceAttachments sia "ACCEPTED" e aggiorna con la tua Looker PSC INSTANCE_NAME.
gcloud looker instances describe [INSTANCE_NAME] --region=$region --format=json
Esempio:
gcloud looker instances describe looker-psc-instance --region=$region --format=json
Esempio:
{
"adminSettings": {},
"createTime": "2024-08-23T00:00:45.339063195Z",
"customDomain": {
"domain": "cosmopup.com",
"state": "AVAILABLE"
},
"encryptionConfig": {},
"lookerVersion": "24.12.28",
"name": "projects/$project/locations/$region/instances/looker-psc-instance",
"platformEdition": "LOOKER_CORE_ENTERPRISE_ANNUAL",
"pscConfig": {
"allowedVpcs": [
"projects/$project/global/networks/looker-psc-demo",
"projects/$project/global/networks/looker-shared-vpc"
],
"lookerServiceAttachmentUri": "projects/t7ec792caf2a609d1-tp/regions/$region/serviceAttachments/looker-psc-f51982e2-ac0d-48b1-91bb-88656971c183",
"serviceAttachments": [
{
"connectionStatus": "ACCEPTED",
"localFqdn": "github.com",
"targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-https"
}
]
},
"pscEnabled": true,
"state": "ACTIVE",
"updateTime": "2024-08-30T17:47:33.440271635Z"
}
Convalida l'endpoint PSC nella console Cloud
Dalla console Cloud puoi convalidare la connessione PSC
Nella console Cloud, vai a:
Looker → Istanza Looker → Dettagli
10. Testa la connettività a GitHub
Nei passaggi successivi, utilizzerai la console di Looker per creare un progetto per convalidare la connettività HTTPS a github.com.
11. Crea un nuovo progetto
Abilitare la modalità Sviluppo
In Looker Console, vai a:
Attiva la modalità di sviluppo (pagina in basso a sinistra), dopo aver selezionato 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 per il 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 finalizza la configurazione.
Seleziona Azioni Git
Seleziona Testa connessione Git
Convalidare il test di connessione di Git
Esegui la pulizia
Elimina i componenti del lab da un singolo terminale Cloud Shell
gcloud compute service-attachments delete github-svc-attachment-https --region=$region -q
gcloud compute forwarding-rules delete producer-github-fr --region=$region -q
gcloud compute target-tcp-proxies delete producer-lb-tcp-proxy --region=$region -q
gcloud compute backend-services delete producer-backend-svc --region=$region -q
gcloud compute network-firewall-policies rules delete 2001 --firewall-policy looker-psc-demo-policy --global-firewall-policy -q
gcloud compute network-firewall-policies associations delete --firewall-policy=looker-psc-demo-policy --name=looker-psc-demo --global-firewall-policy -q
gcloud compute network-firewall-policies delete looker-psc-demo-policy --global -q
gcloud compute routers nats delete looker-psc-demo-natgw --router=looker-psc-demo-cloud-router --router-region=$region -q
gcloud compute routers delete looker-psc-demo-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 producer-psc-fr-subnet producer-psc-nat-subnet $region-proxy-only-subnet --region=$region -q
gcloud compute networks delete looker-psc-demo -q
12. Complimenti
Congratulazioni, hai configurato e convalidato la connettività a GitHub utilizzando la console Looker basata su Private Service Connect.
Hai creato l'infrastruttura del producer, hai imparato a creare un endpoint NEG internet, un servizio producer e un endpoint PSC di Looker che consentisse la connettività al servizio producer.
Cosmopup pensa che i codelab siano straordinari.
Passaggi successivi
Dai un'occhiata ad alcuni di questi codelab…
- Utilizzo di Private Service Connect per pubblicare e utilizzare servizi
- Connettersi ai servizi on-premise tramite Hybrid Networking utilizzando Private Service Connect e un bilanciatore del carico proxy TCP interno
- Accesso a tutti i codelab di Private Service Connect pubblicati
Letture e video di approfondimento
- Configurazione e test di una connessione Git | Looker | Google Cloud
- Panoramica di Private Service Connect