Panoramica dei plug-in

Questa pagina fornisce informazioni generali sull'integrazione dei plug-in con i bilanciatori del carico delle applicazioni Cloud Load Balancing e Media CDN.

Questa funzionalità è in anteprima per Media CDN.

I plug-in sono creati utilizzando il formato WebAssembly (Wasm) e utilizzano le API Proxy-Wasm.

  • Wasm è un formato di istruzioni binario aperto e standardizzato che consente a un host di caricare ed eseguire moduli Wasm con codice fornito dal cliente. Wasm offre una serie di vantaggi per l'esecuzione del codice cliente, tra cui il sandboxing per la sicurezza, il supporto di più linguaggi, la portabilità, un supporto ampio e in crescita nel settore e prestazioni migliorate rispetto ad altre opzioni basate su VM come JavaScript.

  • Proxy-Wasm è un progetto open source avviato da Google. Definisce le API che ti consentono di personalizzare il comportamento dei proxy di rete implementando i callback da eseguire durante l'elaborazione di richieste e risposte HTTP.

Come funzionano i plug-in

Puoi utilizzare Service Extensions con i bilanciatori del carico delle applicazioni e Media CDN nel seguente modo:

  1. Prepara il codice del plug-in nel seguente modo:

    1. Crea codice personalizzato utilizzando uno degli SDK Proxy-Wasm:

    2. Compila il codice in un modulo Wasm.

    3. Carica il codice del plug-in compilato in un repository Artifact Registry.

  2. Crea un plug-in che contenga il codice del plug-in caricato.

  3. Configura il plug-in in Estensioni Cloud Load Balancing o Estensioni Media CDN.

Risorse plug-in

Service Extensions ti aiuta a creare le seguenti risorse chiave che ti consentono di aggiungere codice personalizzato nel percorso di elaborazione:

  • Plug-in, che contengono il codice personalizzato che vuoi implementare.

  • Versioni del plug-in, ovvero le versioni del modulo Wasm. Puoi indicare quale versione del modulo Wasm deve essere utilizzata da un plug-in come principale (attiva).

Limitazioni

Questa sezione elenca alcune limitazioni relative ai plug-in.

Limitazioni delle risorse

I plug-in sono strettamente limitati nel numero di risorse che possono utilizzare:

  • Un plug-in può utilizzare fino a 1 ms di vCPU normalizzata per invocazione. Un millisecondo di CPU dipende dalla piattaforma, ma la piattaforma normalizzata è circa uguale a un processore con una velocità di clock di 4 GHz. Un'invocazione è una fase di esecuzione fatturata in modo indipendente, che può essere intestazioni della richiesta, corpo della richiesta, intestazioni della risposta o corpo della risposta.

  • Un plug-in può utilizzare fino a 16 MiB di memoria per istanza VM. Un'istanza deve essere in grado di gestire fino a 1000 richieste simultanee, il che significa che un plug-in può contenere fino a 16 KiB di memoria per stream. Tieni presente che l'utilizzo totale della memoria include lo stato globale e le allocazioni dello stack.

Utilizza il tester dei plug-in per valutare le caratteristiche di CPU e memoria di un plug-in.

Limitazioni delle API

  • I plug-in possono utilizzare un sottoinsieme dell'ABI Proxy-Wasm. I plug-in non supportano timer, metriche personalizzate, dati condivisi, code condivise o chiamate di rete in uscita.

  • Gli eventi trailer HTTP non sono supportati.

Limitazioni relative alla manipolazione delle intestazioni

  • La dimensione massima di qualsiasi mutazione (intestazioni o blocchi del corpo) è 128 KiB.

  • I plug-in non possono eseguire l'override della modalità di elaborazione dello stream ext_proc.

  • La manipolazione delle intestazioni tramite plug-in non è supportata per alcune intestazioni. Il processore ignora qualsiasi modifica apportata a queste intestazioni e continua a elaborare la richiesta.

    Per i plug-in Media CDN, non sono supportati:

    • Intestazioni: CDN-Loop, connection, keep-alive, proxy-authenticate, proxy-authorization, proxy-connection, te, trailers, transfer-encoding, upgrade o X-user-IP.
    • Intestazioni che iniziano con: x-forwarded, x-goog-,x-google, x-gfe o x-amz-.

    Per i plug-in Cloud Load Balancing, non sono supportati:

    • Intestazioni: connection, keep-alive, proxy-authenticate, proxy-authorization, proxy-connection, sec-user-ip, te, trailer, transfer-encoding, upgrade, x-dont-count-ads, x-dont-show-ads, x-gr, x-proxyuser-ip o x-user-ip.

      Inoltre, per LbTrafficExtension, queste intestazioni non sono supportate: method, authority, scheme o intestazioni host.

    • Intestazioni che iniziano con: sec-gfe-, sec-google-, x-amz-, x-forwarded-, x-gfe-, x-goog-, x-google- o x-gproxy-.

Limitazioni con client e backend HTTP/1.1

Quando configuri REQUEST_BODY o RESPONSE_BODY per un'estensione, se il bilanciatore del carico riceve una richiesta corrispondente, rimuove l'intestazione Content-Length dalla risposta e passa alla codifica del corpo in blocchi.

Passaggi successivi