Service Extensions lets i bilanciatori del carico delle applicazioni supportati 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 di Cloud Load Balancing.
Prima di iniziare
Assicurati di disporre del ruolo di proprietario o editor del progetto o dei seguenti ruoli IAM di Compute Engine:
- Per creare istanze:
compute.instanceAdmin.v1 - Per creare componenti di Cloud Load Balancing:
compute.networkAdmin
- Per creare istanze:
Abilita queste API: API Compute Engine e API Network Services.
Console
Nella Google Cloud console, 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 supporti le estensioni. Per questo esempio, configura un bilanciatore del carico delle applicazioni interno regionale con backend di gruppi di istanze VM. Utilizza i valori di esempio indicati.
Solo per le estensioni di route. 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 - Tags:
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 gestito.
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 Istanze VM, specifica
l7-ilb-backend2-vm.Nella Google Cloud console, vai alla pagina Bilanciamento del carico.
Aggiorna il bilanciatore del carico creando un servizio di backend e aggiungendovi 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à di 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
gcloud compute instances createcomando con 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
gcloud compute instance-groups unmanaged createcomando con 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
gcloud compute instance-groups unmanaged add-instancescomando con 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
gcloud compute backend-services createcomando con 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
gcloud compute backend-services add-backendcomando con 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
gcloud compute url-maps add-path-matchercomando con 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
Configurare 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 container Docker con questo server è
disponibile 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 server ext_proc in Python e Go per eseguire attività come la mutazione di intestazioni e la mutazione del corpo.
Per creare e configurare un servizio di backend di callout:
Crea un'istanza di macchina virtuale (VM) per il servizio di backend di callout che esegue il server di estensione Python di esempio.
Console
Crea un'istanza utilizzando un'immagine container.
Nella Google Cloud console, 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 - Tags:
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
gcloud compute instances create-with-containercomando con 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 gestito.
Console
Crea un gruppo di istanze non gestito.
Nella Google Cloud console, 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 Istanze VM, specifica
callouts-vm.
gcloud
Crea un gruppo di istanze non gestito. Utilizza il
gcloud compute instance-groups unmanaged createcomando con 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
gcloud compute instance-groups unmanaged set-named-portscomando con 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 gestito. Utilizza il
gcloud compute instance-groups unmanaged add-instancescomando con 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 di callout che utilizzi il protocollo HTTP/2 e abbia un controllo di integrità HTTP.
Nella Google Cloud console, 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 del 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à di bilanciamento:
Utilization
- Gruppo di istanze:
gcloud
Crea un controllo di integrità HTTP di base per l'istanza. Utilizza il
gcloud compute health-checks create httpcomando con 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
gcloud compute backend-services createcomando.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 ilgcloud compute backend-services add-backendcomando con 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 route, authorization e traffic estensioni.
Passaggi successivi
- Configurare un'estensione di route
- Configurare un'estensione di autorizzazione
- Configurare un'estensione di traffico