Service Extensions consente ai bilanciatori del carico delle applicazioni supportati di inviare callout dal percorso di elaborazione dei dati ai servizi di backend di callout gestiti dall'utente. In questo modo, i bilanciatori del carico delle applicazioni possono utilizzare la logica personalizzata nel percorso di elaborazione. Questa pagina descrive come configurare un servizio di backend di callout gestito dall'utente.
Per una panoramica delle estensioni del bilanciatore del carico delle applicazioni, consulta la panoramica delle estensioni Cloud Load Balancing.
Prima di iniziare
Assicurati di disporre del ruolo di proprietario o editor del progetto oppure dei seguenti ruoli IAM di Compute Engine:
- Per creare istanze:
compute.instanceAdmin.v1 - Per creare i componenti di Cloud Load Balancing:
compute.networkAdmin
- Per creare istanze:
Abilita le seguenti API: API Compute Engine e API Network Services.
Console
Nella console Google Cloud , vai alla pagina Abilita l'accesso alle API.
Segui le istruzioni.
gcloud
Utilizza il comando
gcloud services enable:gcloud services enable compute.googleapis.com networkservices.googleapis.com
Crea e configura un bilanciatore del carico delle applicazioni che supporta le estensioni. Per questo esempio, configura un bilanciatore del carico delle applicazioni interno regionale con backend di gruppi di istanze VM. Utilizza i valori campione indicati.
Solo per le estensioni dell'itinerario. Configura un servizio di backend aggiuntivo e aggiorna la mappa URL per aggiungere un matcher host che instrada il traffico a questo servizio di backend per tutto il traffico con l'host HTTP che corrisponde alla condizione specificata.
Console
Nella console Google Cloud , vai alla pagina Crea un'istanza.
Specifica i seguenti valori di esempio:
- Nome:
l7-ilb-backend2-vm - Tag:
allow-ssheload-balanced-backend - Zona:
us-west1-a - Rete:
lb-network - Subnet:
backend-subnet - Immagine:
debian-11 - Famiglia:
debian-cloud Opzioni avanzate > Gestione > Automazione:
'#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'
- Nome:
Crea un gruppo di istanze non gestite.
Specifica i seguenti valori di esempio:
- Nome:
l7-ilb-backend-service2-ig - Zona:
us-west1-a
- Nome:
Aggiungi la nuova VM al gruppo di istanze.
Per le istanze VM, specifica
l7-ilb-backend2-vm.Nella console Google Cloud , vai alla pagina Bilanciamento del carico.
Aggiorna il bilanciatore del carico creando un servizio di backend e aggiungendo un backend.
Per il servizio di backend, specifica i seguenti valori di esempio:
- Nome:
l7-ilb-backend-service2 - Protocollo:
HTTP - Controllo di integrità > Nome:
l7-ilb-basic-check - Controllo di integrità > Regione:
us-west1
Per il backend, specifica i seguenti valori di esempio:
- Gruppo di istanze:
l7-ilb-backend-service2-ig - Modalità Bilanciamento:
Utilization
- Nome:
Aggiungi un matcher host alla mappa URL del servizio di backend.
Specifica i seguenti valori di esempio:
- Nome:
l7-ilb-map - Host:
service-extensions.com - Percorso:
callouts - Protocollo:
HTTP - Backend:
l7-ilb-backend-service2
- Nome:
gcloud
Crea un'istanza VM. Utilizza il comando
gcloud compute instances createcon i seguenti valori di esempio:gcloud compute instances create l7-ilb-backend2-vm \ --zone=us-west1-a \ --network=lb-network \ --subnet=backend-subnet \ --tags=allow-ssh,load-balanced-backend \ --image-family=debian-11 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl echo "Page served from second backend service" | tee /var/www/html/index.html systemctl restart apache2'Crea un gruppo di istanze non gestito. Utilizza il comando
gcloud compute instance-groups unmanaged createcon i seguenti valori di esempio:gcloud compute instance-groups unmanaged create l7-ilb-backend-service2-ig \ --zone us-west1-a
Aggiungi la nuova VM al gruppo di istanze. Utilizza il comando
gcloud compute instance-groups unmanaged add-instancescon i seguenti valori di esempio:gcloud compute instance-groups unmanaged add-instances l7-ilb-backend-service2-ig \ --zone=us-west1-a \ --instances=l7-ilb-backend2-vm
Crea un servizio di backend. Utilizza il comando
gcloud compute backend-services createcon i seguenti valori di esempio:gcloud compute backend-services create l7-ilb-backend-service2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP \ --health-checks=l7-ilb-basic-check \ --health-checks-region=us-west1 \ --region=us-west1
Aggiungi un backend al servizio di backend. Utilizza il comando
gcloud compute backend-services add-backendcon i seguenti valori di esempio:gcloud compute backend-services add-backend l7-ilb-backend-service2 \ --balancing-mode=UTILIZATION \ --instance-group=l7-ilb-backend-service2-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
Aggiungi un matcher host alla mappa URL del servizio di backend. Utilizza il comando
gcloud compute url-maps add-path-matchercon i seguenti valori di esempio:gcloud compute url-maps add-path-matcher l7-ilb-map \ --path-matcher-name=callouts \ --default-service=l7-ilb-backend-service2 \ --new-hosts=service-extensions.com \ --region=us-west1
Configura un servizio di backend di callout
Per questo esempio, è disponibile un server di estensione di base basato su Python che implementa l'API gRPC ext_proc di Envoy. Un contenitore Docker con questo server si trova
all'indirizzo us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main
nel repository GitHub di Service Extensions
di Google Cloud. Questo repository contiene diversi altri esempi di Python e Go
di server ext_proc per eseguire attività come la mutazione di intestazioni e corpi.
Per creare e configurare un servizio di backend callout:
Crea un'istanza di macchina virtuale (VM) per il servizio di backend callout che esegue il server di estensione Python di esempio.
Console
Crea un'istanza utilizzando un'immagine container.
Nella console Google Cloud , vai alla pagina Crea un'istanza.
Specifica i seguenti valori di esempio:
- Nome:
callouts-vm - Zona:
us-west1-a - Rete:
lb-network - Subnet:
backend-subnet - Tag:
allow-ssheload-balanced-backend - Immagine container:
us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main
- Nome:
gcloud
Crea un'istanza utilizzando un'immagine container. Utilizza il comando
gcloud compute instances create-with-containercon i seguenti valori di esempio:gcloud compute instances create-with-container callouts-vm \ --container-image=us-docker.pkg.dev/service-extensions-samples/callouts/python-example-basic:main \ --network=lb-network \ --subnet=backend-subnet \ --zone=us-west1-a \ --tags=allow-ssh,load-balanced-backend
Aggiungi la VM a un gruppo di istanze non gestite.
Console
Crea un gruppo di istanze non gestite.
Nella console Google Cloud , vai alla pagina Gruppi di istanze.
Specifica i seguenti valori di esempio:
- Nome:
callouts-ig - Zona:
us-west1-a
- Nome:
Imposta una porta per il gruppo di istanze.
Per Mappatura delle porte, specifica i seguenti nomi e valori delle porte:
http:80egrpc:443.Aggiungi la nuova VM al gruppo di istanze.
Per le istanze VM, specifica
callouts-vm.
gcloud
Crea un gruppo di istanze non gestito. Utilizza il comando
gcloud compute instance-groups unmanaged createcon i seguenti valori di esempio:gcloud compute instance-groups unmanaged create callouts-ig \ --zone=us-west1-a
Imposta una porta per il gruppo di istanze. Utilizza il comando
gcloud compute instance-groups unmanaged set-named-portscon i seguenti valori di esempio:gcloud compute instance-groups unmanaged set-named-ports callouts-ig \ --named-ports=http:80,grpc:443 \ --zone=us-west1-a
Aggiungi la nuova istanza VM al gruppo di istanze non gestite. Utilizza il comando
gcloud compute instance-groups unmanaged add-instancescon i seguenti valori di esempio:gcloud compute instance-groups unmanaged add-instances callouts-ig \ --zone=us-west1-a \ --instances=callouts-vm
Crea un servizio di backend di callout e aggiungi un backend. Come altri server di backend, i server di callout potrebbero richiedere regole firewall per consentire il traffico proxy.
Console
Crea un servizio di backend callout che utilizzi il protocollo HTTP/2 e che abbia un controllo di integrità HTTP.
Nella console Google Cloud , vai alla pagina Backend di Cloud Load Balancing.
Aggiungi un servizio di backend regionale con i seguenti valori di esempio:
- Nome:
l7-ilb-callout-service - Regione:
us-west1 - Tipo di bilanciatore del carico:
Regional external Application Load Balancer (EXTERNAL_MANAGED) - Protocollo:
HTTP2 - Nome porta:
grpc - Controllo di integrità > Nome:
callouts-hc - Controllo di integrità > Numero di porta:
80 - Policy di sicurezza di backend di Cloud Armor:
None
- Nome:
Aggiungi il gruppo di istanze con il server di estensione come backend al servizio di backend. Il gruppo di istanze esegue il servizio
ext_proc.Specifica i seguenti valori di esempio:
- Gruppo di istanze:
callouts-ig - Modalità Bilanciamento:
Utilization
- Gruppo di istanze:
gcloud
Crea un controllo di integrità HTTP di base per l'istanza. Utilizza il comando
gcloud compute health-checks create httpcon i seguenti valori di esempio:gcloud compute health-checks create http callouts-hc \ --region=us-west1 \ --port=80
Crea un servizio di backend di callout che utilizzi il protocollo HTTP/2. Utilizza il comando
gcloud compute backend-services create.gcloud compute backend-services create l7-ilb-callout-service \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=HTTP2 \ --port-name=grpc \ --health-checks=callouts-hc \ --health-checks-region=us-west1 \ --region=us-west1
Aggiungi il gruppo di istanze con il server di estensione come backend al servizio di backend. Il gruppo di istanze esegue il servizio
ext_proc. Utilizza il comandogcloud compute backend-services add-backendcon i seguenti valori di esempio:gcloud compute backend-services add-backend l7-ilb-callout-service \ --balancing-mode=UTILIZATION \ --instance-group=callouts-ig \ --instance-group-zone=us-west1-a \ --region=us-west1
Dopo aver configurato un servizio di backend, puoi configurare le estensioni route, authorization e traffic.
Passaggi successivi
- Configurare un'estensione di percorso
- Configurare un'estensione di autorizzazione
- Configurare un'estensione del traffico