Edge-Erweiterung konfigurieren

Mit Service Extensions können unterstützte Application Load Balancer Plug-ins verwenden, um benutzerdefinierte Verarbeitung in den Verarbeitungspfad einzufügen. Edge-Erweiterungen werden im Anfrageverarbeitungspfad ausgeführt, wenn der Load-Balancer Anfrageheader empfängt und bevor er die URL-Zuordnung auswertet oder Cloud CDN aufruft. So können Sie das Caching und Routing beeinflussen. Auf dieser Seite wird beschrieben, wie Sie Edge-Erweiterungen konfigurieren.

Eine Übersicht über Application Load Balancer-Erweiterungen finden Sie unter Übersicht über Cloud Load Balancing-Erweiterungen.

Eine Erweiterung für einen Application Load Balancer verweist auf die folgenden Ressourcen:

  • Eine Weiterleitungsregel, an die angehängt werden soll
  • Plug‑in

Die Erweiterung verweist auf die Weiterleitungsregel des Load-Balancers, an die sie angehängt werden soll. Nachdem Sie die Ressource konfiguriert haben, beginnt der Load Balancer, passende Anfragen an Erweiterungsdienste zu senden. Sie können nur eine Edge-Erweiterung an eine Weiterleitungsregel anhängen und nur ein Plug-in in eine Edge-Erweiterungskette einfügen.

Informationen zu den Limits für Application Load Balancer-Erweiterungen finden Sie auf der Seite Kontingente und Limits.

Mit Plug-ins konfigurieren

In diesem Abschnitt wird anhand eines Beispiels gezeigt, wie Sie eine Edge-Erweiterung konfigurieren, indem Sie ein Plug-in verwenden, das den :host-Anfrageheader in service-extensions.com umschreibt, wenn der Pfad mit /extensions übereinstimmt. Der frühere Host und der neu konfigurierte Host werden Backend-Diensten in verschiedenen Regionen zugeordnet, was das Routingverhalten veranschaulicht.

Alle Erweiterungsressourcen, die auf ein bestimmtes Plug-in verweisen, müssen vom selben Typ sein. Die Erweiterungen müssen auch dasselbe Load Balancing-Schema haben. Sie können Cloud Load Balancing-Erweiterungen nicht mit Plug-ins konfigurieren, die bereits in Media CDN-Erweiterungen verwendet werden.

Hinweise

  1. Erstellen Sie ein Plug‑in, das Ihren benutzerdefinierten Code enthält.

  2. Erstellen und konfigurieren Sie einen Application Load Balancer, der Edge-Erweiterungs-Plug-ins unterstützt.

    Folgen Sie der Anleitung auf der Seite Globalen externen Application Load Balancer mit VM-Instanzgruppen-Back-Ends einrichten für alle Schritte, mit Ausnahme der folgenden:

    • Geben Sie dem Backend-Dienst den Namen service-one.
    • Weisen Sie service-one einer VM-Instanz in der Region A zu.
    • Standardmäßig wird gl7-gxlb-url-map auf service-one verwiesen.
  3. Richten Sie einen zusätzlichen Backend-Dienst (service-two) ein und verweisen Sie ihn auf eine VM in der Region B.

  4. Fügen Sie der URL-Zuordnung einen Pfad-Matcher hinzu, der auf service-two verweist. Verwenden Sie den Befehl gcloud compute url-maps add-path-matcher mit den folgenden Beispielwerten:

    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. Richten Sie eine Möglichkeit ein, Testanfragen an Ihren Dienst zu senden (z. B. durch Ausführen von curl).

Edge-Erweiterung mit einem Plug-in konfigurieren

  1. Prüfen Sie das Verhalten, bevor eine Erweiterung konfiguriert wird.

    1. Prüfen Sie, ob eine Anfrage ohne expliziten Pfad an die Region A gesendet wird:

      curl FORWARDING_RULE_IP
      

      Ersetzen Sie FORWARDING_RULE_IP durch die IP-Adresse der Weiterleitungsregel. Verwenden Sie den Befehl gcloud compute forwarding-rules describe, um die IP-Adresse zu ermitteln.

      Die Ausgabe sieht in etwa so aus und gibt an, dass die Seite von einer VM in region A bereitgestellt wird:

      Page served from region-A-vm
      
    2. Prüfen Sie, ob es in der URL-Zuordnung keine Übereinstimmung für /extensions gibt:

      curl FORWARDING_RULE_IP/extensions
      

      Ersetzen Sie FORWARDING_RULE_IP durch die IP-Adresse der Weiterleitungsregel. Verwenden Sie den Befehl gcloud compute forwarding-rules describe, um die IP-Adresse zu ermitteln.

      Die Ausgabe gibt an, dass es in der URL-Zuordnung keine Übereinstimmung für /extensions gibt. Die Ausgabe sieht etwa so aus:

      <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
      <html><head>
      <title>404 Not Found</title>
      </head><body>
      ...
      
  2. Konfigurieren Sie die Edge-Erweiterung.

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Diensterweiterungen auf.

      Zu den Diensterweiterungen

    2. Klicken Sie auf Erweiterung erstellen.

      Ein Assistent wird geöffnet, der Sie durch einige erste Schritte führt.

    3. Wählen Sie für das Produkt Load Balancing aus. Klicken Sie anschließend auf Weiter.

      Eine Liste der unterstützten Application Load Balancer wird angezeigt.

    4. Wählen Sie als Load-Balancer-Typ den globalen externen Application Load Balancer aus. Klicken Sie anschließend auf Weiter.

    5. Wählen Sie als Erweiterungstyp Edge-Erweiterungen aus und klicken Sie dann auf Weiter.

    6. Klicken Sie auf Weiter, um das Formular Erweiterung erstellen zu öffnen.

      Im Formular Erweiterung erstellen sind die vorherigen Auswahlen nicht bearbeitbar.

    7. Führen Sie im Abschnitt Grundlagen folgende Schritte aus:

      1. Geben Sie einen eindeutigen Namen für die Erweiterung an.

        Der Name muss mit einem Kleinbuchstaben beginnen, gefolgt von bis zu 62 Kleinbuchstaben, Ziffern oder Bindestrichen. Er darf nicht mit einem Bindestrich enden.

      2. Optional: Geben Sie eine kurze Beschreibung der Erweiterung mit maximal 1.024 Zeichen ein.

      3. Optional: Klicken Sie im Bereich Labels auf Label hinzufügen. Führen Sie dann in der angezeigten Zeile die folgenden Schritte aus:

        • Geben Sie für Schlüssel einen Schlüsselnamen ein.
        • Geben Sie für Wert einen Wert für den Schlüssel ein.

        Wenn Sie weitere Schlüssel/Wert-Paare hinzufügen möchten, klicken Sie auf Label hinzufügen. Sie können maximal 64 Schlüssel/Wert-Paare hinzufügen.

        Weitere Informationen zu Labels finden Sie unter Labels für Projekte erstellen und aktualisieren.

    8. Wählen Sie unter Weiterleitungsregeln eine oder mehrere Weiterleitungsregeln aus, die mit der Erweiterung verknüpft werden sollen, z. B. cr-xlb-forwarding-rule.

      Weiterleitungsregeln, die bereits mit einer anderen Erweiterung verknüpft sind, können nicht ausgewählt werden und werden deaktiviert angezeigt.

    9. Fügen Sie für Erweiterungsketten eine oder mehrere Erweiterungsketten hinzu, die für eine passende Anfrage ausgeführt werden sollen.

      So fügen Sie eine Erweiterungskette hinzu:

      • Geben Sie für Neue Erweiterungskette einen eindeutigen Namen an.

        Der Name muss RFC-1034 entsprechen, darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten und darf maximal 63 Zeichen lang sein. Außerdem muss das erste Zeichen ein Buchstabe und das letzte Zeichen ein Buchstabe oder eine Ziffer sein.

      • Wenn Sie Anfragen abgleichen möchten, für die die Erweiterungskette ausgeführt wird, geben Sie für Abgleichsbedingung einen CEL-Ausdruck (Common Expression Language) an, z. B. request.path.startsWith("/extensions").

        Bei Edge-Erweiterungen können Sie nur einen regulären Ausdruck pro CEL-Ausdruck verwenden.

        Weitere Informationen zu CEL-Ausdrücken finden Sie unter Syntaxhilfe oder in der CEL-Matcher-Sprachreferenz.

      • Fügen Sie eine Erweiterung hinzu, die für eine passende Anfrage ausgeführt werden soll. Für Edge-Erweiterungen können Sie nur eine Erweiterung angeben.

        Gehen Sie unter Erweiterungen so vor und klicken Sie dann auf Fertig:

        • Wählen Sie für Programmability type (Programmierbarkeitstyp) die Option Plugins aus.

        • Geben Sie unter Name der Erweiterung einen eindeutigen Namen an.

          Der Name muss RFC-1034 entsprechen, darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten und darf maximal 63 Zeichen lang sein. Außerdem muss das erste Zeichen ein Buchstabe und das letzte ein Buchstabe oder eine Ziffer sein.

        • Wählen Sie unter Plug‑in ein Plug‑in aus, das mit Service Extensions für dasselbe Produkt und denselben Erweiterungstyp erstellt wurde.

        • Klicken Sie für Header weiterleiten auf Header hinzufügen und fügen Sie dann HTTP-Header hinzu, die an die Erweiterung weitergeleitet werden sollen (vom Client oder Backend). Wenn kein Header angegeben ist, werden alle Header gesendet.

        • Optional: Wenn Sie für Fail Open (Bei Fehler öffnen) möchten, dass die Erweiterung bei einem Fehler geöffnet wird, wählen Sie Aktiviert aus. Wenn der Aufruf der Erweiterung fehlschlägt oder das Zeitlimit überschritten wird, wird die Verarbeitung von Anfragen oder Antworten ohne Fehler fortgesetzt. Alle nachfolgenden Erweiterungen in der Erweiterungskette werden ebenfalls ausgeführt.

          Standardmäßig ist das Feld Fail open nicht ausgewählt. Wenn in diesem Fall keine Antwortheader an den Downstream-Client gesendet wurden, wird ein generischer HTTP-Statuscode 500 an den Client zurückgegeben. Wenn Antwortheader gesendet wurden, wird der HTTP-Stream zum nachgelagerten Client zurückgesetzt.

    10. Klicken Sie auf Erweiterung erstellen.

    gcloud

    1. Definieren Sie das Plug-in in einer YAML-Datei und verknüpfen Sie es mit einer globalen Weiterleitungsregel, z. B. 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
      EOF
      

      Ersetzen Sie Folgendes:

      • PROJECT_ID: die Projekt-ID
      • WASM_PLUGIN: die ID oder der voll qualifizierte Name des Plug-ins

      Bei Edge-Erweiterungen können Sie nur einen regulären Ausdruck pro CEL-Ausdruck verwenden.

    2. Importieren Sie die Edge-Erweiterung. Verwenden Sie den Befehl gcloud service-extensions lb-edge-extensions import mit den folgenden Beispielwerten:

      gcloud service-extensions lb-edge-extensions import edge-ext \
          --source=edge-plugin.yaml \
          --location=global
      

    Nachdem eine Edge-Erweiterung erstellt wurde, dauert es eine Weile, bis das neue Plug-in an allen Standorten verteilt ist. Die Zeit kann je nach Standort variieren, da das Plug-in nicht gleichzeitig an alle Standorte ausgeliefert wird.

  3. Verwenden Sie denselben curl-Befehl, um zu prüfen, ob die Edge-Erweiterung wie erwartet funktioniert:

    curl FORWARDING_RULE_IP/extensions
    

    Die Ausgabe sieht in etwa so aus und gibt an, dass die Seite von einer VM in region B bereitgestellt wird:

    Page served from region-B-vm
    

    Um zu prüfen, ob das Plug-in nur für Anfragen mit dem Pfadpräfix /extension ausgeführt wird, wiederholen Sie den Befehl curl ohne Pfad.

    curl FORWARDING_RULE_IP
    

    Die Ausgabe sieht etwa so aus:

    Page served from region-A-vm
    

Einschränkungen für Edge-Erweiterungen

  • Sie können einer Weiterleitungsregel nur eine Edge-Erweiterung zuweisen.
  • Edge-Erweiterungen unterstützen keine Verarbeitung von HTTP-Textkörpern.
  • Bei Edge-Erweiterungen können Sie nur einen regulären Ausdruck pro CEL-Ausdruck verwenden.

Einschränkungen, die für alle Erweiterungen gelten, finden Sie unter Einschränkungen für Erweiterungen.

Nächste Schritte