NEG internet SSH verso sud di Looker PSC

1. Introduzione

In questo codelab eseguirai una connessione SSH in uscita a GitHub utilizzando un bilanciatore del carico proxy TCP interno e un gruppo di endpoint di rete internet richiamato da Looker PSC come consumer di servizi.

Private Service Connect è una funzionalità di Google Cloud Networking che consente ai consumer di accedere ai servizi gestiti privatamente dall'interno della propria rete VPC. Allo stesso modo, consente ai producer di servizi gestiti di ospitare questi servizi nelle proprie reti VPC separate e di offrire una connessione privata ai propri consumer. Ad esempio, quando utilizzi Private Service Connect per accedere a Looker, tu sei il consumer di servizi e Google è il producer di servizi, come evidenziato nella Figura 1.

Figura 1.

145ea4672c3a3b14.png

L'accesso in uscita, noto anche come PSC inverso, 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 viene implementato Looker PSC, come evidenziato nella Figura 2.

Figura 2.

259493afd914f68b.png

Cosa imparerai a fare

  • Requisiti di rete
  • Crea un servizio producer Private Service Connect
  • Crea un endpoint Private Service Connect in Looker
  • Stabilisci la connettività a GitHub da Looker utilizzando un test di connessione

Che cosa ti serve

def88091b42bfe4d.png

2. Cosa creerai

Creerai una rete di producer, looker-psc-demo, per eseguire il deployment del bilanciatore del carico proxy TCP interno e del NEG di internet pubblicato come servizio tramite Private Service Connect (PSC). Una volta pubblicata, esegui 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à SSH a GitHub.com utilizzando la procedura Connessione a Git tramite SSH.

3. Requisiti di rete

Di seguito è riportata la suddivisione dei requisiti di rete per la rete del produttore. Il consumer in questo codelab è l'istanza PSC di Looker.

Producer Network

Componenti

Descrizione

VPC (looker-psc-demo)

VPC in modalità personalizzata

Subnet NAT PSC

I pacchetti provenienti dalla rete VPC consumer vengono convertiti utilizzando il source NAT (SNAT) in modo che i loro indirizzi IP di origine originali vengano convertiti in indirizzi IP di origine dalla subnet NAT nella rete VPC del producer.

Subnet della regola di forwarding PSC

Utilizzato per allocare un indirizzo IP per il bilanciatore del carico del proxy TCP regionale interno

Subnet NEG PSC

Utilizzato per allocare un indirizzo IP per il gruppo di endpoint di rete

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

dfa4dd1d681a66da.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 non ti piace l'ID generato, 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 usufruire 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]
echo $project
echo $region

Attiva tutti i servizi necessari:

gcloud services enable compute.googleapis.com

7. Crea rete VPC producer

Rete VPC

In Cloud Shell, esegui le seguenti operazioni:

gcloud compute networks create looker-psc-demo --subnet-mode custom

Crea subnet

La subnet PSC verrà associata al collegamento del servizio PSC ai fini della Network Address Translation.

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 forwarding 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 regionale del produttore:

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 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 looker-psc-demo-cloud-router --network looker-psc-demo --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 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

In 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:

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 –network-endpoint-type su internet-fqdn-port (il nome host e la porta su cui è raggiungibile il backend esterno).

In Cloud Shell, crea un NEG internet utilizzato per github.com

gcloud compute network-endpoint-groups create github-internet-neg-ssh \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

In Cloud Shell, aggiorna il NEG internet github-internet-neg-ssh con l'FQDN github.com e la porta 22

gcloud compute network-endpoint-groups update github-internet-neg-ssh \
    --add-endpoint="fqdn=github.com,port=22" \
    --region=$region

Crea policy firewall di rete e regole firewall

In Cloud Shell, esegui le seguenti operazioni:

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 della rete.

In Cloud Shell, esegui le seguenti operazioni:

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

In Cloud Shell, esegui le seguenti 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-ssh --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 le seguenti 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=22

Crea collegamento al servizio

In Cloud Shell, crea il collegamento del servizio github-svc-attachment-ssh:

gcloud compute service-attachments create github-svc-attachment-ssh --region=$region --producer-forwarding-rule=producer-github-fr --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=producer-psc-nat-subnet

Successivamente, ottieni e annota l'allegato di servizio elencato nell'URI selfLink che inizia con projects per configurare l'endpoint PSC in Looker.

selfLink: projects/<your-project-id>/regions/<your-region>/serviceAttachments/github-svc-attachment-ssh

In Cloud Shell, esegui le seguenti operazioni:

gcloud compute service-attachments describe github-svc-attachment-ssh --region=$region

Output previsto di esempio

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-08-31T13:43:07.078-07:00'
description: ''
enableProxyProtocol: false
fingerprint: O5OtqHR33v4=
id: '7557641709467614900'
kind: compute#serviceAttachment
name: github-svc-attachment-ssh
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '19348441121424360'
  low: '7557641709467614900'
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-ssh
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

30b1a280966b1f06.png

4eafe698193f5f44.png

9. Stabilisci una connessione dell'endpoint PSC in Looker

Nella sezione seguente, assocerai il collegamento al servizio dei producer a PSC di Looker Core utilizzando i flag --psc-service-attachment in Cloud Shell per un singolo dominio.

In Cloud Shell, crea l'associazione PSC aggiornando i seguenti parametri in modo che corrispondano al tuo ambiente:

  • INSTANCE_NAME: il nome dell'istanza di Looker (Google Cloud core).
  • DOMAIN_1: githubssh.com
  • SERVICE_ATTACHMENT_1: URI acquisito durante la descrizione del collegamento al servizio, github-svc-attachment-ssh.
  • REGIONE: la regione in cui è ospitata l'istanza di Looker (Google Cloud core).

In Cloud Shell, esegui le seguenti operazioni:

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=githubssh.com,attachment=projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh \
--region=$region

In Cloud Shell, verifica che serviceAttachments.connectionStatus sia "ACCEPTED". Aggiorna con il nome dell'istanza PSC di Looker.

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.14.18",
  "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": "githubssh.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/github-svc-attachment-ssh"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-08-31T20:53:04.824018122Z"
}

Convalida l'endpoint PSC in Cloud Console

Dalla console Cloud puoi convalidare la connessione PSC

In Cloud Console, vai a:

Looker → Istanza Looker → Dettagli

2d4684d722d31e4b.png

db670bb008ea3fc4.png

10. Testare la connettività a GitHub

Nei passaggi seguenti, utilizzerai la console Looker per creare un progetto per convalidare la connettività SSH a GitHub.com aggiornando il dominio github.com a githubssh.com nell'interfaccia utente di Looker. Questa azione è necessaria solo per le connessioni SSH a GitHub.

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

dbb890960291aa84.png

Seleziona Configura Git

42f5e51ce70642ad.png

Configurare Git

3962a1fe7ac8da77.png

Dopo aver selezionato Continua, ti verrà chiesto di convalidare l'URL del repository e il servizio di hosting Git.

743e5d963cfe6f82.png

Aggiungi la chiave di deployment al tuo repository GitHub. Assicurati di consentire l'accesso in scrittura. Una volta aggiornato, seleziona Testa e finalizza la configurazione.

4894e0af6421802e.png

Seleziona Azioni Git

e87931dbf7e265f3.png

Seleziona Testa connessione Git

73d90adf267120af.png

Convalidare il test di connessione di Git

f69bc63b9c595aa1.png

12. Esegui la pulizia

Elimina i componenti del lab da un singolo terminale Cloud Shell

gcloud compute service-attachments delete github-svc-attachment-ssh --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 addresses delete internet-neg-lb-ip --region=$region -q

gcloud compute network-endpoint-groups delete github-internet-neg-ssh --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

13. Complimenti

Congratulazioni, hai configurato e convalidato correttamente la connettività a GitHub utilizzando la console Looker basata su Private Service Connect.

Hai creato l'infrastruttura del producer, hai imparato a creare un NEG internet, un servizio producer e un endpoint PSC di Looker che consentiva la connettività al servizio producer.

Cosmopup pensa che i codelab siano fantastici.

c911c127bffdee57.jpeg

Passaggi successivi

Dai un'occhiata ad alcuni di questi codelab...

Ulteriori letture e video

Documentazione di riferimento