SMTP NEG internet HTTPS associato a sud Looker PSC

1. Introduzione

In questo codelab creerai una connessione verso sud al servizio SMTP di Lookers utilizzando un bilanciatore del carico proxy tcp interno e un gruppo di endpoint di rete internet (NEG) con il nome di dominio completo notifications-pa.googleapis.com richiamato da Looker PSC as a Service Consumer.

Private Service Connect è una funzionalità di networking di Google Cloud che consente ai consumer di accedere ai servizi gestiti in privato dall'interno della propria 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.

145ea4672c3a3b14.png

L'accesso in uscita, noto anche come PSC inverso, consente al consumer di creare un servizio pubblicato come produttore per consentire a Looker di accedere agli endpoint on-premise, in un VPC, ai servizi gestiti e a internet. Il deployment delle connessioni verso sud può essere eseguito in qualsiasi regione, indipendentemente da dove viene eseguito il deployment di Looker PSC, come evidenziato nella Figura 2.

Figura 2.

259493afd914f68b.png

Cosa imparerai a fare

  • Requisiti di rete
  • Creare un servizio producer di Private Service Connect
  • Crea un endpoint Private Service Connect in Looker
  • Stabilisci la connettività al servizio SMTP di Lookers

Che cosa ti serve

def88091b42bfe4d.png

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 impostazioni di posta SMTP

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 in modalità personalizzata

Subnet NAT PSC

I pacchetti della rete VPC consumer vengono convertiti utilizzando il protocollo NAT (SNAT) di origine, in modo che gli indirizzi IP di origine originali vengano convertiti in indirizzi IP di origine dalla subnet NAT nella rete VPC del producer.

Subnet della regola di inoltro 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 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 bridge 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 del codelab

a4eb7693cbdbdfd4.png

5. Configurazione e requisiti

Configurazione dell'ambiente da seguire in modo 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 al progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi sempre aggiornarla.
  • L'ID progetto è univoco in 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.
  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 dopo questo tutorial, puoi eliminare le risorse che hai creato o eliminare 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 qualche istante 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 all'interno di 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

In Cloud Shell, svolgi i seguenti passaggi:

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

Creare subnet

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

In Cloud Shell, crea la subnet NAT del 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 da internet con l'opzione di configurazione –endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB, pertanto lo stesso NATGW non supporterà il traffico Internet in uscita da 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

All'interno di Cloud Shell, crea il gateway Cloud NAT che abilita il traffico in 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

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 smtp-internet-neg \
    --network-endpoint-type=INTERNET_FQDN_PORT \
    --network=looker-psc-demo \
    --region=$region

In Cloud Shell, aggiorna il NEG di internet smtp-internet-neg con il FQDN notifications-pa.googleapis.com e la porta 443

gcloud compute network-endpoint-groups update smtp-internet-neg \
    --add-endpoint="fqdn=notifications-pa.googleapis.com,port=443" \
    --region=$region

Creare criteri firewall di rete e regole firewall

All'interno di Cloud Shell, esegui queste 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 della subnet NAT del PSC a tutte le istanze della 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

Creare 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=smtp-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, svolgi i seguenti passaggi:

gcloud compute forwarding-rules create producer-smtp-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

Creare un collegamento al servizio

In Cloud Shell, crea il collegamento al servizio, smtp-svc-attachment:

gcloud compute service-attachments create smtp-svc-attachment --region=$region --producer-forwarding-rule=producer-smtp-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

All'interno di Cloud Shell, esegui queste operazioni:

gcloud compute service-attachments describe smtp-svc-attachment --region=$region

Esempio:

connectionPreference: ACCEPT_AUTOMATIC
creationTimestamp: '2024-10-04T14:56:50.409-07:00'
description: ''
enableProxyProtocol: false
fingerprint: KUPXTZjrGkw=
id: '8947818105173563981'
kind: compute#serviceAttachment
name: smtp-svc-attachment
natSubnets:
- https://www.googleapis.com/compute/v1/projects/$project/regions/$region/subnetworks/producer-psc-nat-subnet
pscServiceAttachmentId:
  high: '23100082169578472'
  low: '8947818105173563981'
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/smtp-svc-attachment
targetService: https://www.googleapis.com/compute/v1/projects/$project/regions/$region/forwardingRules/producer-smtp-fr

In Cloud Console, vai a:

Servizi di rete → Private Service Connect → Servizi pubblicati

b847b5ee22e3582e.png

b9a7d46c8dea4476.png

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.

All'interno di Cloud Shell, crea l'associazione psc aggiornando i parametri seguenti in modo che corrispondano al tuo ambiente:

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

All'interno di Cloud Shell, esegui queste 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=notifications-pa.googleapis.com,attachment=projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment \
--region=$region

In Cloud Shell, convalida che lo stato di connessione dei collegamenti a un servizio sia "ACCEPTED", aggiornalo 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:

{
...........................
    "serviceAttachments": [
      {
        "connectionStatus": "ACCEPTED",
        "localFqdn": "notifications-pa.googleapis.com",
        "targetServiceAttachmentUri": "projects/$project/regions/$region/serviceAttachments/smtp-svc-attachment"
      }
    ]
  },
  "pscEnabled": true,
  "state": "ACTIVE",
  "updateTime": "2024-10-04T22:02:31.445761128Z"
}

Convalida l'endpoint PSC nella console Cloud

Dalla console Cloud puoi convalidare la connessione al PSC

In Cloud Console, vai a:

Looker → Istanza Looker → Dettagli

2d4684d722d31e4b.png

a7593db722f86642.png

10. Verifica la connettività SMTP

Nei passaggi seguenti, utilizzerai la console Looker per convalidare la connettività SMTP generando un test SMTP e report.

Email di prova

Looker invia le email utilizzando il server SMTP predefinito notifications-pa.googleapis.com. In questo caso non sono necessari passaggi aggiuntivi. Se vuoi utilizzare un server SMTP diverso per le notifiche, consulta la sezione relativa alla configurazione SMTP personalizzata.

Apri la console Looker e vai a:

Amministrazione → Piattaforma → SMTP → Seleziona Invia email di prova

aacb31e399cec9b7.png

Di seguito è riportata l'email di test ottenuta da Looker:

ff75669fb6993d58.png

Email con report generato

Vai a quanto segue:

Esplora → Attività di sistema → Utilizzo delle API → Tipo di query API → Esegui

788f6d6d08f5f055.png

Output di esempio:

cebecdf5f2e968d1.png

Per inviare i risultati al tuo indirizzo e-mail, seleziona l'icona a forma di ingranaggio

c6ddb0b234b58ed4.png

Seleziona Invia per aprire una nuova finestra.

15b45c5c1bc1b09b.png

Inserisci il tuo indirizzo email e seleziona Invia

86970bb94247ed62.png

Di seguito è riportata l'email di test ottenuta da Looker:

c925c8917f8078b3.png

11. Configurazione SMTP personalizzata

In questo tutorial il server SMTP di Looker viene utilizzato per inviare notifiche email attraverso il nome di dominio completo notifications-pa.googleapis.com e Cloud NAT per il traffico in uscita da internet. Per utilizzare il tuo server SMTP, crea un nuovo collegamento al servizio con le seguenti modifiche:

Aggiorna il NEG internet con il tuo nome di dominio completo del server SMTP:

gcloud compute network-endpoint-groups update smtp-internet-neg \
    --add-endpoint="fqdn=<your SMTP FQDN>,port=443" \
    --region=$region

Specifica il tuo dominio SMTP quando aggiorni l'istanza PSC di Looker:

  • INSTANCE_NAME: il nome della tua istanza di Looker (Google Cloud core).
  • DOMAIN_1: <FQDN del tuo server SMTP>
  • SERVICE_ATTACHMENT_1: URI acquisito durante la descrizione del collegamento al servizio, smtp-svc-attachment
  • REGIONE: la regione in cui è ospitata l'istanza di Looker (Google Cloud core).
gcloud looker instances update INSTANCE_NAME \
--psc-service-attachment  domain=DOMAIN_1,attachment=SERVICE_ATTACHMENT_URI_1 \
--region=REGION

Per utilizzare un servizio email diverso, seleziona Utilizza impostazioni email personalizzate.

a3fe7a0b66c80402.png

12. Esegui la pulizia

Eliminare i componenti del lab da un singolo terminale Cloud Shell

gcloud compute service-attachments delete smtp-svc-attachment --region=$region -q

gcloud compute forwarding-rules delete producer-smtp-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 smtp-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

13. Complimenti

Congratulazioni, hai configurato e convalidato la connettività al servizio SMTP di Lookers utilizzando la console Looker basata su Private Service Connect.

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

Cosmopup pensa che i codelab siano straordinari.

c911c127bffdee57.jpeg

Passaggi successivi

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

Letture e video di approfondimento

Documenti di riferimento