Service Extensions consente ai bilanciatori del carico delle applicazioni supportati di utilizzare i plug-in per inserire l'elaborazione personalizzata nel percorso di elaborazione. Le estensioni edge vengono eseguite nel percorso di elaborazione delle richieste quando il bilanciatore del carico riceve le intestazioni delle richieste e prima di valutare la mappa URL o chiamare Cloud CDN, il che ti consente di influire sulla memorizzazione nella cache e sul routing. Questa pagina descrive come configurare le estensioni edge.
Per una panoramica delle estensioni del bilanciatore del carico delle applicazioni, consulta la panoramica delle estensioni Cloud Load Balancing.
Un'estensione per un bilanciatore del carico delle applicazioni punta alle seguenti risorse:
- Una regola di forwarding a cui collegarsi
- Un plug-in
L'estensione fa riferimento alla regola di forwarding del bilanciatore del carico a cui collegarsi. Dopo aver configurato la risorsa, il bilanciatore del carico inizia a inviare le richieste corrispondenti ai servizi di estensione. Puoi collegare una sola estensione perimetrale a una regola di forwarding e includere un solo plug-in in una catena di estensioni perimetrali.
Per informazioni sui limiti relativi alle estensioni del bilanciatore del carico delle applicazioni, consulta la pagina Quote e limiti.
Configurare utilizzando i plug-in
Questa sezione utilizza un esempio per mostrare come configurare un'estensione edge utilizzando un plug-in che riscrive l'intestazione della richiesta :host in service-extensions.com quando il percorso corrisponde a /extensions. L'host precedente e l'host appena configurato vengono mappati ai servizi di backend in regioni diverse, il che dimostra il comportamento di routing.
Tutte le risorse di estensione che fanno riferimento a un determinato plug-in devono essere dello stesso tipo. Le estensioni devono inoltre avere lo stesso schema di bilanciamento del carico. Non puoi configurare le estensioni Cloud Load Balancing con plug-in già utilizzati nelle estensioni Media CDN.
Prima di iniziare
Crea un plug-in che contenga il tuo codice personalizzato.
Crea e configura un bilanciatore del carico delle applicazioni che supporti i plug-in di estensione edge.
Segui le istruzioni riportate nella pagina Configura un bilanciatore del carico delle applicazioni esterno globale con backend di gruppi di istanze VM per tutti i passaggi, ad eccezione dei seguenti:
- Assegna al servizio di backend il nome
service-one. - Punta
service-onea un'istanza di macchina virtuale (VM) nella regioneA. - Punta
gl7-gxlb-url-mapaservice-oneper impostazione predefinita.
- Assegna al servizio di backend il nome
Configura un servizio di backend aggiuntivo,
service-two, e indirizzalo a una VM nella regioneB.Alla mappa URL, aggiungi un matcher di percorso che rimandi a
service-two. Utilizza il comandogcloud compute url-maps add-path-matchercon i seguenti valori di esempio:gcloud compute url-maps add-path-matcher gl7-gxlb-url-map \ --path-matcher-name=rewrite-host \ --default-service=service-two \ --new-hosts=service-extensions.com \ --location=globalConfigura un modo per inviare richieste di test al tuo servizio (ad esempio eseguendo curl).
Configurare un'estensione edge utilizzando un plug-in
Controlla il comportamento prima di configurare un'estensione.
Verifica che una richiesta senza un percorso esplicito venga inviata alla regione
A:curl FORWARDING_RULE_IP
Sostituisci
FORWARDING_RULE_IPcon l'indirizzo IP della regola di forwarding. Per trovare l'indirizzo IP, utilizza il comandogcloud compute forwarding-rules describe.L'output è simile al seguente e indica che la pagina viene servita da una VM in
region A:Page served from region-A-vmVerifica che non ci sia alcuna corrispondenza per
/extensionsnella mappa URL:curl FORWARDING_RULE_IP/extensions
Sostituisci
FORWARDING_RULE_IPcon l'indirizzo IP della regola di forwarding. Per trovare l'indirizzo IP, utilizza il comandogcloud compute forwarding-rules describe.L'output indica che non esiste alcuna corrispondenza per
/extensionsnella mappa degli URL. L'output è simile al seguente:<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> ...
Configura l'estensione edge.
Console
Nella console Google Cloud , vai alla pagina Estensioni di servizio.
Fai clic su Crea estensione.
Si apre una procedura guidata che ti guiderà attraverso alcuni passaggi iniziali.
Per il prodotto, seleziona Bilanciamento del carico. Quindi, fai clic su Continua.
Viene visualizzato un elenco di bilanciatori del carico delle applicazioni supportati.
Per il tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni esterno globale. Quindi, fai clic su Continua.
Come tipo di estensione, seleziona Estensioni Edge, quindi fai clic su Continua.
Per aprire il modulo Crea estensione, fai clic su Continua.
Nel modulo Crea estensione, nota che le selezioni precedenti non sono modificabili.
Nella sezione Nozioni di base, segui questi passaggi:
Specifica un nome univoco per l'estensione.
Il nome deve iniziare con una lettera minuscola seguita da un massimo di 62 lettere minuscole, numeri o trattini e non deve terminare con un trattino.
(Facoltativo) Inserisci una breve descrizione dell'estensione utilizzando un massimo di 1024 caratteri.
(Facoltativo) Nella sezione Etichette, fai clic su Aggiungi etichetta. Quindi, nella riga visualizzata, procedi nel seguente modo:
- In Chiave, inserisci un nome per la chiave.
- In Valore, inserisci un valore per la chiave.
Per aggiungere altre coppie chiave-valore, fai clic su Aggiungi etichetta. Puoi aggiungere un massimo di 64 coppie chiave-valore.
Per saperne di più sulle etichette, consulta Creare e aggiornare le etichette per i progetti.
Per Regole di forwarding, seleziona una o più regole di forwarding da associare all'estensione, ad esempio
cr-xlb-forwarding-rule.Le regole di inoltro già associate a un'altra estensione non possono essere selezionate e vengono visualizzate come disattivate.
Per Estensione, per aggiungere un'estensione da eseguire per una richiesta corrispondente, procedi nel seguente modo:
Per trovare le richieste per le quali viene eseguita la catena di estensioni, specifica un'espressione Common Expression Language (CEL) per Condizione di corrispondenza, ad esempio
request.path.startsWith("/extensions").Le estensioni perimetrali consentono di utilizzare una sola espressione regolare per ogni espressione CEL.
Per ulteriori informazioni sulle espressioni CEL, fai clic su Guida alla sintassi o consulta il riferimento al linguaggio del matcher CEL.
Per Tipo di programmabilità, seleziona Plug-in.
Per Plug-in, seleziona un plug-in creato utilizzando Service Extensions o lo stesso tipo di estensione e prodotto. Puoi includere un solo plug-in in un'estensione per Edge.
In Attributi di inoltro, seleziona gli attributi di richiesta, connessione e posizione che vuoi che il bilanciatore del carico inoltri al plug-in Wasm o al callout. Puoi configurare un massimo di 16 attributi per ogni estensione. Per ulteriori informazioni, vedi Attributi supportati.
Per Inoltra intestazioni, fai clic su Aggiungi intestazione e poi aggiungi le intestazioni HTTP da inoltrare all'estensione (dal client o dal backend). Se non viene specificata un'intestazione, vengono inviate tutte le intestazioni.
(Facoltativo) Per Fail open, se vuoi che l'estensione non funzioni correttamente, seleziona Attivato. In questo caso, se la chiamata all'estensione non va a buon fine o si verifica un timeout, l'elaborazione della richiesta o della risposta continua senza errori.
Per impostazione predefinita, il campo Fail open non è selezionato. In questo caso, se le intestazioni della risposta non sono state inviate al client downstream, al client viene restituito un codice di stato HTTP
500generico. Se le intestazioni della risposta sono state recapitate, il flusso HTTP al client downstream viene reimpostato.
Per un'estensione perimetrale, puoi specificare una sola estensione per ogni catena di estensioni.
Se vuoi specificare più di un'estensione o catene di estensioni anziché una sola estensione, fai clic sul pulsante Passa alla modalità avanzata alla fine del modulo e specifica le estensioni e le catene richieste. Le estensioni vengono eseguite nella sequenza in cui sono elencate.
Specifica nomi univoci per ogni estensione e catena di estensioni. I nomi devono essere conformi a RFC-1034, utilizzare solo lettere minuscole, numeri e trattini e avere una lunghezza massima di 63 caratteri. Inoltre, il primo carattere deve essere una lettera e l'ultimo carattere deve essere una lettera o un numero.
Fai clic su Crea estensione.
gcloud
Definisci il plug-in in un file YAML e associalo a una regola di forwarding globale, ad esempio
cr-xlb-forwarding-rule.cat >edge-plugin.yaml <<EOF name: edge-ext forwardingRules: - https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/global/forwardingRules/cr-xlb-forwarding-rule loadBalancingScheme: EXTERNAL_MANAGED extensionChains: - name: "chain1" matchCondition: celExpression: 'request.path.startsWith("/extensions")' extensions: - name: 'ext1' service: projects/PROJECT_ID/locations/global/wasmPlugins/WASM_PLUGIN failOpen: false supportedEvents: - REQUEST_HEADERS forwardAttributes: - request.host - request.path EOFSostituisci quanto segue:
PROJECT_ID: l'ID progettoWASM_PLUGIN: l'ID o il nome completo del plug-in
Le estensioni perimetrali consentono di utilizzare una sola espressione regolare per ogni espressione CEL.
Per ulteriori informazioni sui campi nel file YAML, consulta ExtensionChain nella documentazione dell'API.
Il campo
forwardAttributesti consente di specificare gli attributi di richiesta, connessione e posizione che puoi inoltrare ai plug-in Wasm o ai servizi di callout. Puoi configurare un massimo di 16 attributi per ogni estensione. Per ulteriori informazioni sugli attributi supportati, consulta Attributi supportati.Importa l'estensione Edge. Utilizza il comando
gcloud service-extensions lb-edge-extensions importcon i seguenti valori di esempio:gcloud service-extensions lb-edge-extensions import edge-ext \ --source=edge-plugin.yaml \ --location=global
Dopo la creazione di un'estensione perimetrale, è necessario un po' di tempo prima che il nuovo plug-in venga distribuito in tutte le posizioni. L'ora potrebbe variare a seconda della località perché il plug-in non viene distribuito in tutte le località contemporaneamente.
Per verificare che l'estensione Edge funzioni come previsto, utilizza lo stesso comando
curl:curl FORWARDING_RULE_IP/extensions
L'output è simile al seguente e indica che la pagina viene servita da una VM in
region B:Page served from region-B-vmPer verificare che il plug-in venga eseguito solo per le richieste con il prefisso del percorso
/extension, ripeti il comandocurlsenza un percorso.curl FORWARDING_RULE_IP
L'output è simile al seguente:
Page served from region-A-vm
Limitazioni per le estensioni perimetrali
- Puoi collegare una sola estensione perimetrale a una regola di forwarding.
- Le estensioni perimetrali non supportano l'elaborazione del corpo HTTP.
- Le estensioni perimetrali consentono di utilizzare una sola espressione regolare per ogni espressione CEL.
Per le limitazioni applicabili a tutte le estensioni, consulta Limitazioni per le estensioni.
Passaggi successivi
- Visualizza esempi di plug-in Rust, Go e C++ e strumenti di test nel repository GitHub di Service Extensions per i plug-in.
- Gestire le estensioni