Configurare un'estensione edge

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 influenzare la memorizzazione nella cache e il 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 di Cloud Load Balancing.

Un'estensione per un bilanciatore del carico delle applicazioni rimanda alle seguenti risorse:

  • Una regola di forwarding da collegare
  • 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 edge a una regola di forwarding e includere un solo plug-in in una catena di estensioni edge.

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 mostrarti 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 anche avere lo stesso schema di bilanciamento del carico. Non puoi configurare le estensioni di Cloud Load Balancing con i plug-in già utilizzati nelle estensioni di Media CDN.

Prima di iniziare

  1. Crea un plug-in che contenga il tuo codice personalizzato.

  2. Crea e configura un bilanciatore del carico delle applicazioni che supporti i plug-in di estensione edge.

    Segui le istruzioni riportate nella pagina Configurare un bilanciatore del carico delle applicazioni esterno globale con backend di gruppi di istanze VM per tutti i passaggi, tranne i seguenti:

    • Assegna al servizio di backend il nome service-one.
    • Imposta service-one in modo che rimandi a un'istanza di macchina virtuale (VM) nella regione A.
    • Imposta gl7-gxlb-url-map in modo che rimandi a service-one per impostazione predefinita.
  3. Configura un servizio di backend aggiuntivo, service-two e impostalo in modo che rimandi a una VM nella regione B.

  4. Aggiungi alla mappa URL un matcher di percorso che rimandi a service-two. Utilizza il gcloud compute url-maps add-path-matcher comando con 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=global
    
  5. Configura un modo per inviare richieste di test al tuo servizio (ad esempio, eseguendo curl).

Configurare un'estensione edge utilizzando un plug-in

  1. Controlla il comportamento prima di configurare un'estensione.

    1. Verifica che una richiesta senza un percorso esplicito vada alla regione A:

      curl FORWARDING_RULE_IP
      

      Sostituisci FORWARDING_RULE_IP con l'indirizzo IP della regola di forwarding. Per trovare l'indirizzo IP, utilizza il gcloud compute forwarding-rules describe comando.

      L'output è simile al seguente e indica che la pagina viene pubblicata da una VM in region A:

      Page served from region-A-vm
      
    2. Verifica che non esista una corrispondenza per /extensions nella mappa URL:

      curl FORWARDING_RULE_IP/extensions
      

      Sostituisci FORWARDING_RULE_IP con l'indirizzo IP della regola di forwarding. Per trovare l'indirizzo IP, utilizza il gcloud compute forwarding-rules describe comando.

      L'output indica che non esiste una corrispondenza per /extensions nella mappa URL. L'output è simile al seguente:

      <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
      <html><head>
      <title>404 Not Found</title>
      </head><body>
      ...
      
  2. Configura l'estensione edge.

    Console

    1. Nella Google Cloud console vai alla pagina Service Extensions.

      Vai a Service Extensions

    2. Fai clic su Crea estensione.

      Si apre una procedura guidata che ti guida attraverso alcuni passaggi iniziali.

    3. Per il prodotto, seleziona Bilanciamento del carico. Quindi, fai clic su Continua.

      Viene visualizzato un elenco di bilanciatori del carico delle applicazioni supportati.

    4. Per il tipo di bilanciatore del carico, seleziona Bilanciatore del carico delle applicazioni esterno globale. Quindi, fai clic su Continua.

    5. Per il tipo di estensione, seleziona Estensioni edge, quindi fai clic su Continua.

    6. Per aprire il modulo Crea estensione, fai clic su Continua.

      Nel modulo Crea estensione, tieni presente che le selezioni precedenti non sono modificabili.

    7. Nella sezione Informazioni di base, procedi nel seguente modo:

      1. 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.

      2. (Facoltativo) Inserisci una breve descrizione dell'estensione utilizzando un massimo di 1024 caratteri.

      3. (Facoltativo) Nella sezione Etichette, fai clic su Aggiungi etichetta. Quindi, nella riga visualizzata, procedi nel seguente modo:

        • In Chiave, inserisci un nome 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 ulteriori informazioni sulle etichette, consulta Creare e aggiornare le etichette per i progetti.

    8. In Regole di forwarding, seleziona una o più regole di forwarding da associare all'estensione, ad esempio cr-xlb-forwarding-rule.

      Le regole di forwarding già associate a un'altra estensione non possono essere selezionate e vengono visualizzate disattivate.

    9. In Catene di estensioni, aggiungi una o più catene di estensioni da eseguire per una richiesta corrispondente.

      Per aggiungere una catena di estensioni, procedi nel seguente modo, quindi fai clic su Fine:

      • In Nuova catena di estensioni, specifica un nome univoco.

        Il nome deve essere conforme 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.

      • Per determinare le richieste corrispondenti per le quali viene eseguita la catena di estensioni, in Condizione di corrispondenza, specifica un'espressione Common Expression Language (CEL) ad esempio request.path.startsWith("/extensions").

        Le estensioni edge consentono di utilizzare una sola espressione regolare per espressione CEL.

        Per ulteriori informazioni sulle espressioni CEL, fai clic Ricevi assistenza per la sintassi o consulta il riferimento al linguaggio del matcher CEL.

      • Aggiungi un'estensione da eseguire per una richiesta corrispondente. Per le estensioni edge, puoi specificare una sola estensione.

        In Estensioni, procedi nel seguente modo, quindi fai clic su Fine:

        • In Tipo di programmabilità, seleziona Plug-in.

        • In Nome estensione, specifica un nome univoco.

          Il nome deve essere conforme 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 una lettera o un numero.

        • In Plug-in, seleziona un plug-in creato utilizzando Service Extensions per lo stesso tipo di prodotto ed estensione.

        • In Attributi di forwarding, seleziona gli attributi che tu vuoi che l'estensione inoltri. Per ulteriori informazioni, consulta Attributi supportati.

        • In Intestazioni di forwarding, fai clic su Aggiungi intestazione, quindi 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) In Fail open, se vuoi che l'estensione fallisca, 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. Vengono eseguite anche le estensioni successive nella catena di estensioni.

          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 500 generico. Se le intestazioni della risposta sono state recapitate, il flusso HTTP al client downstream viene reimpostato.

    10. Fai clic su Crea estensione.

    gcloud

    1. 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
      EOF
      

      Sostituisci quanto segue:

      • PROJECT_ID: l' ID progetto
      • WASM_PLUGIN: l'ID o il nome completo del plug-in

      Le estensioni edge consentono di utilizzare una sola espressione regolare per espressione CEL.

      Per ulteriori informazioni sui campi del file YAML, consulta ExtensionChain nella documentazione dell'API. Per informazioni sugli attributi supportati, consulta Attributi supportati.

    2. Importa l'estensione edge. Utilizza il gcloud service-extensions lb-edge-extensions import comando con 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 edge, è necessario un po' di tempo prima che il nuovo plug-in venga distribuito in tutte le località. Il tempo può variare a seconda delle località perché il plug-in non viene distribuito contemporaneamente in tutte le località.

  3. 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 pubblicata da una VM in region B:

    Page served from region-B-vm
    

    Per verificare che il plug-in venga eseguito solo per le richieste con il prefisso del percorso /extension, ripeti il comando curl senza un percorso.

    curl FORWARDING_RULE_IP
    

    L'output è simile al seguente:

    Page served from region-A-vm
    

Limitazioni per le estensioni edge

  • Puoi collegare una sola estensione edge a una regola di forwarding.
  • Le estensioni edge non supportano l'elaborazione del corpo HTTP.
  • Le estensioni edge consentono di utilizzare una sola espressione regolare per espressione CEL.

Per le limitazioni applicabili a tutte le estensioni, consulta Limitazioni per le estensioni.

Passaggi successivi