Configura i servizi perimetrali di rete con gruppi di endpoint di rete con connettività ibrida
Google offre vari servizi perimetrali di rete che possono aumentare funzionalità e sicurezza dei servizi basati al di fuori di Google Cloud (servizi on-premise e multi-cloud), ad esempio in un ambiente o in un altro cloud pubblico.
Questi servizi sul perimetro della rete ti consentono di:
Accetta e instrada il traffico dei clienti esterni a livello globale con un singolo VIP Anycast.
Riduci il carico del server terminando il traffico TLS a livello perimetrale con un Application Load Balancer esterno e Certificati SSL gestiti da Google.
Attiva le regole WAF (Web Application Firewall) preconfigurate e applica consentite e bloccate al traffico in entrata con Google Cloud Armor.
Controlla l'accesso degli utenti alle tue applicazioni e risorse con Identity-Aware Proxy (IAP).
Ottimizza la distribuzione dei contenuti e la latenza dell'utente finale con Cloud CDN.
Per offrire questi vantaggi ai tuoi servizi privati, on-premise o multi-cloud, esegui il deployment di un bilanciatore del carico delle applicazioni esterno per ricevere il traffico dal pubblico internet. Il bilanciatore del carico delle applicazioni esterno inoltra il traffico a un proxy centrale che Cloud Service Mesh esegue la configurazione. Questo proxy intermedio instrada il traffico ai tuoi ambienti on-premise o un ambiente non Google Cloud utilizzando Cloud VPN e Cloud Interconnect.
Questo tutorial illustra un esempio end-to-end che utilizza Google Cloud Armor sul perimetro di Google per consentire selettivamente ai client di accedere a il servizio on-premise in modo privato. Ai client viene consentito l'accesso in base al loro IP .
Completa le seguenti attività:
- Esegui il deployment di Envoy come proxy intermedio in un gruppo di istanze gestite. Questo Envoy viene connesso automaticamente a Cloud Service Mesh.
- Crea un'istanza di una macchina virtuale (VM) privata simulata on-premise. In un un esempio reale, probabilmente avrai già una VM on-premise.
- Configura Cloud Service Mesh per instradare tutte le richieste che raggiungono il centro il proxy alla VM on-premise simulata.
- Crea un bilanciatore del carico delle applicazioni esterno per ricevere il traffico a internet pubblico e la inoltra al proxy centrale.
- Collega un criterio di sicurezza di Google Cloud Armor al bilanciatore del carico delle applicazioni esterno.
Dopo aver completato queste attività, puoi facoltativamente esplorare e funzionalità avanzate di gestione del traffico.
Prerequisiti
Prima di configurare il proxy centrale, completa le seguenti attività:
Rivedi Preparati a configurare Cloud Service Mesh con Envoy e completare tutte le attività preliminari, tra cui la concessione delle autorizzazioni e ruoli e abilitare l'API Cloud Service Mesh.
Assicurati che gli endpoint privati on-premise siano raggiungibili dall'interno alla tua rete Virtual Private Cloud (VPC) di Google Cloud Cloud VPN o Cloud Interconnect. L'esempio utilizzato in questo tutorial instrada solo il traffico a un endpoint in Google Cloud, perciò non devi configurare connettività ibrida per continuare. In un contesto reale di deployment, sarebbe necessaria la configurazione della connettività ibrida.
Assicurati che gli intervalli CIDR delle subnet VPC non siano in conflitto con gli intervalli CIDR remoti. Quando gli indirizzi IP si sovrappongono, le route di subnet con priorità rispetto alla connettività remota.
Per questa dimostrazione, ottieni il autorizzazioni necessarie per creare e aggiornare i criteri di sicurezza di Google Cloud Armor. Le autorizzazioni potrebbe variare se vuoi utilizzare un servizio diverso, come Cloud CDN.
Esegui il deployment del proxy intermedio sulle VM di Compute Engine
Questa sezione descrive come eseguire il deployment di Envoy come proxy intermedio su Compute Engine per ricevere traffico dal bilanciatore del carico esterno lo inoltra alla destinazione remota.
Crea il modello di istanza per il proxy centrale
Un modello di istanza specifica la configurazione delle VM all'interno di un'istanza gestita (MIG).
Utilizza il modello seguente per creare istanze VM con un proxy Envoy connesso a Cloud Service Mesh:
gcloud compute instance-templates create td-middle-proxy \ --service-proxy=enabled \ --tags=allow-hc
Per personalizzare il deployment di Envoy, ad esempio specificando il nome della rete, impostare un percorso di log o abilitare il tracciamento, consulta Guida alle opzioni di deployment automatizzato di Envoy.
Crea il gruppo di istanze gestite per il proxy intermedio
Crea il gruppo di istanze gestite in base al modello. In questo esempio, puoi mantenere 1 per il deployment di una singola istanza. Per l'utilizzo in produzione, abilita la scalabilità automatica, basato sull'utilizzo della CPU, per evitare di creare un collo di bottiglia se il proxy centrale deve gestire molto traffico.
gcloud compute instance-groups managed create td-middle-proxy-us-central1-a \ --zone=us-central1-a \ --template=td-middle-proxy \ --size=1
Per le configurazioni e le verifiche future, identifica e archivia i dati Indirizzo IP dell'istanza in
MIDDLE_PROXY_IP
:MIDDLE_PROXY_IP=$(gcloud compute instances list \ --filter="name~'td-middle-proxy-us-central1-a-.*'" \ --zones=us-central1-a \ --format="value(networkInterfaces.networkIP)")
In questo esempio, creiamo il gruppo di istanze gestite che contiene istanze VM che eseguono Envoy
us-central1-a
. Più avanti in questo tutorial creerai un bilanciatore del carico esterno
gestire il traffico internet pubblico proveniente dai tuoi clienti.
Perché il bilanciatore del carico esterno può instradare automaticamente il traffico alla regione più vicina ai tuoi clienti e al gruppo di istanze gestite all'interno della regione, potresti valuta la creazione di più gruppi di istanze gestite. Per un elenco completo di Google Cloud le regioni e le zone disponibili, consulta Regioni e zone.
Esegui il deployment del servizio on-premise simulato
Questa sezione descrive il deployment di un gruppo di endpoint di rete con connettività ibrida
(NEG). In un deployment di produzione, questo NEG conterrà un endpoint
(IP:port
) che si risolve nel server on-premise. In questo esempio,
una VM di Compute Engine raggiungibile su un IP:port
. Questo
La VM funge da server on-premise simulato.
Crea la VM on-premise simulata
Esegui il deployment di una singola istanza VM per simulare un server on-premise privato:
gcloud compute instances create on-prem-vm \ --zone=us-central1-a \ --metadata startup-script='#! /bin/bash ## Installs apache and a custom homepage sudo su - apt-get update apt-get install -y apache2 cat <<EOF > /var/www/html/index.html <html><body><h1>Hello world from on-premises!</h1></body></html> EOF'
Identificare e archiviare il proprio indirizzo IP interno per le configurazioni future verifica. Il server su questa VM rimane in ascolto delle richieste in entrata sulla porta
80
:ON_PREM_IP=$(gcloud compute instances describe on-prem-vm \ --zone=us-central1-a \ --format="value(networkInterfaces.networkIP)" | sed "s/['\[\]]*//g")
Crea il NEG
Crea il NEG per questa configurazione dimostrativa specificando il
Tipo di endpoint di rete non-gcp-private-ip-port
. Aggiungi l'indirizzo IP e la porta
per la VM on-premise simulata come endpoint per questo NEG. A seguire
passaggio precedente, l'indirizzo IP è archiviato nella variabile di ambiente ON_PREM_IP
.
Crea il NEG:
gcloud compute network-endpoint-groups create td-on-prem-neg \ --network-endpoint-type=non-gcp-private-ip-port \ --zone=us-central1-a
Aggiungi
IP:port
al nuovo NEG:gcloud compute network-endpoint-groups update td-on-prem-neg \ --zone=us-central1-a \ --add-endpoint="ip=$ON_PREM_IP,port=80"
Configura Cloud Service Mesh con i componenti di Cloud Load Balancing
Questa sezione mostra come configurare Cloud Service Mesh e abilitare il tuo mesh per inoltrare il traffico al tuo servizio on-premise privato. Configura i seguenti componenti:
Un controllo di integrità. Questo controllo di integrità si comporta in modo leggermente diverso e i controlli di integrità configurati per altri tipi di NEG.
Un servizio di backend. Per ulteriori informazioni, consulta Panoramica dei servizi di backend.
Una mappa di regole di routing. Questo passaggio include la creazione di una regola di forwarding, proxy e una mappa URL. Per ulteriori informazioni, vedi Mappe di regole di routing.
Crea il controllo di integrità
I controlli di integrità verificano che gli endpoint siano integri e in grado di ricevere richieste. Il controllo di integrità per questo tipo di NEG si basa su Meccanismo di controllo di integrità distribuito di Envoy.
Altri tipi di NEG utilizzano il controllo di integrità centralizzato di Google Cloud di sistema:
gcloud compute health-checks create http td-on-prem-health-check
Crea il servizio di backend
Crea un servizio di backend con il bilanciamento del carico
INTERNAL_SELF_MANAGED
da utilizzare con Cloud Service Mesh. Quando crei questo backend specifica il controllo di integrità creato in precedenza:gcloud compute backend-services create td-on-prem-backend-service \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --health-checks=td-on-prem-health-check
Aggiungi il NEG che hai creato in precedenza come backend di questo servizio di backend:
gcloud compute backend-services add-backend td-on-prem-backend-service \ --global \ --network-endpoint-group=td-on-prem-neg \ --network-endpoint-group-zone=us-central1-a \ --balancing-mode=RATE \ --max-rate-per-endpoint=5
Crea la mappa di regole di routing
La mappa di regole di routing definisce il modo in cui Cloud Service Mesh instrada il traffico al tuo di servizio di backend.
Crea una mappa URL che utilizza il servizio di backend definito in precedenza:
gcloud compute url-maps create td-hybrid-url-map \ --default-service=td-on-prem-backend-service
Crea un file denominato
target_proxy.yaml
con i seguenti contenuti:name: td-hybrid-proxy proxyBind: true urlMap: global/urlMaps/td-hybrid-url-map
Utilizza il comando
import
per creare il proxy HTTP di destinazione (per altre le informazioni, vedi Proxy di destinazione per Cloud Service Mesh):gcloud compute target-http-proxies import td-hybrid-proxy \ --source=target_proxy.yaml
Crea una regola di forwarding che faccia riferimento a questo proxy HTTP di destinazione. Imposta il parametro l'indirizzo IP della regola di forwarding a
0.0.0.0
. Impostando l'indirizzo IP della regola su0.0.0.0
instrada il traffico in base alla porta in entrata, al nome host HTTP e al percorso configurate nella mappa URL. L'indirizzo IP specificato nel prompt viene ignorata.gcloud compute forwarding-rules create td-hybrid-forwarding-rule \ --global \ --load-balancing-scheme=INTERNAL_SELF_MANAGED \ --address=0.0.0.0 \ --target-http-proxy=td-hybrid-proxy \ --ports=8080 \ --network=default
Verifica che il proxy centrale possa instradare le richieste al servizio on-premise simulato
Cloud Service Mesh è ora configurato per instradare il traffico attraverso il centro al tuo servizio on-premise privato simulato. Puoi verificarlo configurazione mediante la creazione di una VM client di test, l'accesso a quella VM e l'invio di al proxy centrale che esegue Envoy. Dopo aver verificato il la VM del client di test.
Recupera l'indirizzo IP del proxy centrale. Queste informazioni sono necessarie solo per passaggio di verifica:
gcloud compute instances list
Annota o annota in altro modo l'indirizzo IP dell'istanza nella
td-middle-proxy-us-central1-a
gruppo di istanze gestiteCrea un'istanza client di test:
gcloud compute instances create test-client \ --zone=us-central1-a
Usa
ssh
per accedere al client di test:gcloud compute ssh test-client --zone=us-central1-a
Invia una richiesta alla VM proxy centrale, sostituendo l'indirizzo IP ottenuti in precedenza per
MIDDLE_PROXY_IP
:curl $MIDDLE_PROXY_IP:8080
Dovresti vedere l'output seguente:
Hello world from on-premises!
Esci dalla VM client di test. Quando esci, puoi eliminare la VM:
gcloud compute instances delete test-client \ --zone=us-central1-a
Esegui il deployment del bilanciatore del carico delle applicazioni esterno
In questa sezione eseguirai il deployment di un bilanciatore del carico delle applicazioni esterno che invia il traffico in entrata il proxy centrale. Questo deployment è una configurazione di un bilanciatore del carico delle applicazioni esterno standard.
Prenotare un indirizzo IP esterno
Crea un indirizzo IP esterno statico globale (external-lb-vip
) a cui
i client invieranno il traffico. Puoi recuperare questo indirizzo IP esterno durante
di verifica più avanti in questo tutorial.
gcloud compute addresses create external-lb-vip \ --ip-version=IPV4 \ --global
configura il bilanciatore del carico HTTP esterno
Configura il bilanciatore del carico esterno per instradare i clienti Internet il traffico verso il proxy centrale già configurato.
Crea un controllo di integrità utilizzato per determinare se il gruppo di istanze gestite in esecuzione il proxy centrale è integro e può ricevere traffico:
gcloud compute health-checks create tcp tcp-basic-check \ --port=8080
Crea una regola firewall per consentire il controllo di integrità. Riutilizzi Tagga
allow-hc
qui per applicare la regola firewall alle VM proxy centrali:gcloud compute firewall-rules create fw-allow-health-checks \ --network=default \ --action=ALLOW \ --direction=INGRESS \ --source-ranges=35.191.0.0/16,130.211.0.0/22 \ --target-tags=allow-hc \ --rules=tcp
Crea un servizio di backend:
gcloud compute backend-services create td-middle-proxy-backend-service \ --protocol=HTTP \ --health-checks=tcp-basic-check \ --global
Aggiungi il gruppo di istanze gestite centrale come backend di questo servizio di backend:
gcloud compute backend-services add-backend td-middle-proxy-backend-service \ --instance-group=td-middle-proxy-us-central1-a \ --instance-group-zone=us-central1-a \ --global
Crea una mappa URL per instradare le richieste in entrata al proxy centrale come il servizio di backend predefinito:
gcloud compute url-maps create lb-map-http \ --default-service=td-middle-proxy-backend-service
Creare un proxy HTTP di destinazione in modo che le richieste al bilanciatore del carico esterno gli indirizzi IP virtuali (VIP) delle regola di forwarding vengono gestiti in base alla mappa URL:
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=lb-map-http
Crea una regola di forwarding globale per instradare le richieste in entrata al proxy HTTP di destinazione:
gcloud compute forwarding-rules create http-forwarding-rule \ --address=external-lb-vip\ --global \ --load-balancing-scheme=EXTERNAL \ --target-http-proxy=http-lb-proxy \ --ports=80
Imposta la porta denominata del gruppo di istanze gestite
Imposta una porta denominata per il gruppo di istanze per consentire al proxy centrale di ricevere Traffico HTTP dal bilanciatore del carico esterno:
gcloud compute instance-groups managed set-named-ports td-middle-proxy-us-central1-a \ --named-ports=http:8080 \ --zone=us-central1-a
Verifica la configurazione del bilanciatore del carico delle applicazioni esterno
In questo passaggio verificherai che il bilanciatore del carico esterno sia configurato correttamente.
Dovresti essere in grado di inviare una richiesta al VIP del bilanciatore del carico e ottenere risposta dalla VM on-premise simulata:
PUBLIC_VIP=gcloud compute addresses describe external-lb-vip \ --format="get(address)" \ --global
Invia una richiesta
curl
all'indirizzo IP esterno (PUBLIC_VIP
) e verifica di aver ricevuto il messaggioHello world
:curl $PUBLIC_VIP
Verrà visualizzato l'output seguente:
Hello world from on-premises!
Abilita Google Cloud Armor
Configura i criteri di sicurezza di Google Cloud Armor per consentire solo l'accesso ai tuoi
servizio di CLIENT_IP_RANGE
, che dovrebbe includere il traffico esterno
Indirizzo IP del dispositivo client su cui intendi eseguire il test, ad esempio
"192.0.2.0/24"
.
Questi criteri vengono applicati al servizio di backend
bilanciatore del carico esterno (in questo esempio, td-hybrid-backend-service
che punta a
il proxy centrale). Per ulteriori informazioni sulle autorizzazioni richieste per impostare
queste regole, consulta
Configura i criteri di sicurezza di Google Cloud Armor.
Crea il criterio di sicurezza di Google Cloud Armor:
gcloud compute security-policies create external-clients-policy \ --description="policy for external clients"
Aggiorna la regola predefinita del criterio di sicurezza per negare tutto il traffico:
gcloud compute security-policies rules update 2147483647 \ --security-policy=external-clients-policy \ --action="deny-404"
Aggiungi una regola di priorità più alta per consentire il traffico proveniente da un intervallo IP specifico:
gcloud compute security-policies rules create 1000 \ --security-policy=external-clients-policy \ --description="allow traffic from CLIENT_IP_RANGE" \ --src-ip-ranges="CLIENT_IP_RANGE" \ --action="allow"
Collega i criteri di sicurezza di Google Cloud Armor al tuo servizio di backend:
gcloud compute backend-services update td-middle-proxy-backend-service \ --security-policy=external-clients-policy
Verifica finale
Invia una richiesta
curl
all'IP virtuale pubblico del bilanciatore del carico delle applicazioni esterno . Se l'indirizzo IP del dispositivo client è compreso traCLIENT_IP_RANGE
specificati in precedenza, dovresti ricevere la risposta prevista.curl $PUBLIC_VIP
Verrà visualizzato l'output seguente:
Hello world from on-premises!
Emetti la stessa richiesta
curl
da un altro dispositivo client il cui indirizzo IP si trova all'esterno diCLIENT_IP_RANGE
oppure aggiorna regola del criterio di sicurezza in modo da non includere più il tuo indirizzo IP client. Dovresti ora ricevi un errore404 Not Found
.
Risoluzione dei problemi
Le seguenti istruzioni descrivono come risolvere i problemi di configurazione.
Il mio servizio on-premise non è accessibile tramite l'indirizzo IP del bilanciatore del carico delle applicazioni esterno globale
Supponendo che il servizio on-premise sia già accessibile alle VM Google Cloud su cui sono in esecuzione gli Envoy, segui questi passaggi per risolvi i problemi della configurazione:
Assicurati che il gruppo di istanze gestite di Google Cloud Envoy sia segnalato come integro. Nella console Google Cloud, vai a Servizi di rete > Bilanciamento del carico e fai clic su
url-map lb-map-http
per visualizzare i dettagli. Dovresti essere in grado di vedrai che 1/1 dell'istanza intd-middle-proxy-us-central1-a
è integro.Se non è integro, controlla se è stata configurata una regola firewall per consentire del traffico del controllo di integrità in entrata verso le VM Google Cloud in esecuzione Envoy:
gcloud compute firewall-rules describe fw-allow-health-check
Dovresti vedere l'output seguente:
allowed: ‑ IPProtocol: tcp ... direction: INGRESS disabled: false ... ... sourceRanges: ‑ 130.211.0.0/22 ‑ 35.191.0.0/16 targetTags: ‑ allow-hc
Passaggi successivi
Per trovare criteri di routing più complessi per i tuoi ambienti on-premise o multi-cloud consulta la documentazione di Cloud Service Mesh funzionalità avanzate di gestione del traffico.
Per eseguire il deployment di Cloud Service Mesh, consulta Panoramica della guida alla configurazione.
Per abilitare servizi sul perimetro della rete aggiuntivi, consulta le seguenti guide: