ApigeeBackendService erstellen

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Auf dieser Seite wird beschrieben, wie Sie ein ApigeeBackendService und die erforderliche Traffic-Erweiterung für das GKE-Gateway (Google Kubernetes Engine) erstellen, das in Ihrem Cluster ausgeführt wird.

Dieser Ansatz ist eine Alternative zur Verwendung von APIMExtensionPolicy, um die Apigee-Datenebene als Policy Decision Point (PDP) für das GKE-Gateway zu identifizieren. Wenn Sie ein ApigeeBackendService erstellen, erstellt der Apigee-Operator für Kubernetes automatisch ein APIMExtensionPolicy mit demselben Namen und Namespace wie das ApigeeBackendService. Dies ist die zugrunde liegende APIMExtensionPolicy.

Wir empfehlen diesen Ansatz, wenn Sie Cloud Load Balancing-Traffic-Erweiterungen erstellen und verwalten und Apigee als Erweiterung in Ihrer Traffic-Erweiterungsressource hinzufügen möchten. Sie müssen ApigeeBackendService verwenden, wenn die Apigee-Traffic-Erweiterung in Verbindung mit anderen Traffic-Erweiterungen funktioniert.

Hinweise

Führen Sie die folgenden Schritte aus, bevor Sie mit dieser Aufgabe beginnen:

  • Prüfen Sie, ob in Ihrer GKE-Implementierung GKE-Version 1.34.x oder höher verwendet wird.
  • Prüfen Sie, ob für Ihren GKE-Cluster eine Workload Identity konfiguriert ist. Die erforderlichen Schritte finden Sie unter Workload Identity erstellen.
  • Prüfen Sie, ob für Ihren Cluster ein GKE Gateway konfiguriert ist und funktioniert. Weitere Informationen finden Sie unter Gateways bereitstellen.
  • Installieren Sie den Apigee-Operator für Kubernetes. Eine Installationsanleitung finden Sie unter Apigee Operator für Kubernetes installieren.

Erforderliche Rollen

Wenn Sie Ihrem Dienstkonto die erforderlichen Rollen zugewiesen haben, wie unter Apigee Operator für Kubernetes installieren beschrieben, sind keine zusätzlichen IAM-Rollen oder Berechtigungen erforderlich, um diese Aufgaben auszuführen.

Sie können Aktionen für Ressourcen in Ihrem Google Kubernetes Engine-Cluster mithilfe des integrierten Mechanismus für rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) in Kubernetes autorisieren. Weitere Informationen finden Sie unter Aktionen in Clustern mit rollenbasierter Zugriffssteuerung autorisieren.

ApigeeBackendService-Ressource erstellen

Wenn Sie eine Traffic Service-Erweiterung für Ihr GKE-Gateway konfigurieren möchten, erstellen Sie zwei Hauptressourcen:

  • ApigeeBackendService:Mit dieser benutzerdefinierten Ressource wird die Apigee-Datenebene als Policy Decision Point (PDP) angegeben und Netzwerkdetails für Private Service Connect-Netzwerk-Endpunktgruppen (PSC-NEGs) konfiguriert.
  • GCPTrafficExtension:Diese GKE Gateway API-Ressource definiert die Erweiterungskette, einschließlich der Weiterleitung von Traffic an den ApigeeBackendService.

ApigeeBackendService erstellen

Die ApigeeBackendService-Ressource gibt die Apigee-Datenebene als PDP für eine GCPTrafficExtension an.

So erstellen Sie ein ApigeeBackendService:

  1. Erstellen Sie eine YAML-Datei mit dem Namen apigee-backend-service.yaml und dem folgenden Inhalt:
  2. # apigee-backend-service.yaml
    kind: ApigeeBackendService
    apiVersion:  apim.googleapis.com/v1
    metadata:
      name: my-apigee-extension-backend-service
    spec:
      apigeeEnv: ENV_NAME # optional for Apigee, required for hybrid
      defaultSecurityEnabled: SECURITY_ENABLED
      locations: # required field
      - name: REGION_NAME_1
        network: NETWORK_NAME_1
        subnet: SUBNET_NAME_1
      - name: REGION_NAME_2
        network: NETWORK_NAME_2
        subnet: SUBNET_NAME_2

    Wobei:

    • ENV_NAME ist die zu verwendende Apigee-Umgebung. Dies ähnelt dem Feld apigeeEnv in der APIMExtensionPolicy. Dieses Feld ist für Apigee optional und für Hybrid erforderlich.
    • SECURITY_ENABLED (Optional) gibt an, ob die standardmäßigen Apigee-Richtlinien für die API-Schlüsselvalidierung und Kontingentprüfungen automatisch aktiviert werden. Wenn keine Angabe gemacht wird, ist der Standardwert true.
    • REGION_NAME_1 gibt die Region an, in der Sie das GKE Gateway bereitstellen.
    • NETWORK_NAME_1 und SUBNET_NAME_1 geben die vollständigen Ressourcen-URIs des Netzwerks und Subnetzwerks an, in denen die PSC-NEGs erstellt werden. Beispiel: projects/my-project/global/networks/my-default und projects/my-project/regions/us-central1/subnetworks/my-default. In der Regel sind sie mit dem Netzwerk und Subnetzwerk des GKE-Cluster identisch.
    • REGION_NAME_2, NETWORK_NAME_2 und SUBNET_NAME_2 sind optional. Sie benötigen sie, wenn Sie die Apigee-Traffic-Erweiterung in mehreren Regionen bereitstellen.

  3. Wenden Sie die YAML-Datei auf Ihren Cluster im Namespace default an:
    kubectl apply -f apigee-backend-service.yaml
  4. Prüfen Sie, ob ApigeeBackendService erfolgreich erstellt wurde:
    kubectl get apigeebackendservice

    Die Ausgabe sollte in etwa so aussehen:

    NAMESPACE   NAME                          STATE     ERRORMESSAGE
    default     default-ext-lb1-apim-policy   CREATED   

Wenn Sie ein ApigeeBackendService erstellen, erstellt der Apigee Operator für Kubernetes automatisch ein APIMExtensionPolicy mit demselben Namen und Namespace wie das ApigeeBackendService. Dies ist die zugrunde liegende APIMExtensionPolicy.

Wenn defaultSecurityEnabled auf true festgelegt ist, fügt der Apigee Operator für Kubernetes dem APIMExtensionPolicy automatisch den Standard-API-Schlüssel und die Kontingentrichtlinien hinzu. Informationen zum Hinzufügen zusätzlicher Richtlinien finden Sie unter Richtlinien zum GKE Gateway hinzufügen.

Ressource GCPTrafficExtension erstellen

Mit der Ressource GCPTrafficExtension wird eine Erweiterung für Apigee definiert und auf die im vorherigen Schritt erstellte ApigeeBackendService als backendRef verwiesen. Weitere Informationen zum Konfigurieren einer GCPTrafficExtension finden Sie unter Diensterweiterungen konfigurieren.

Das Feld supportedEvents gibt an, welche Teile des Anfrage- und Antwortzyklus für die Erweiterung verfügbar sind. Der Apigee-Operator für Kubernetes unterstützt die folgenden Ereignisse:

  • RequestHeaders
  • RequestBody
  • RequestTrailers
  • ResponseHeaders
  • ResponseBody
  • ResponseTrailers
Bei Richtlinien, die eine Überprüfung oder Änderung des Anfrage- oder Antwort-Bodys erfordern (z.B. JSONThreatProtection) müssen Sie RequestBody und ResponseBody in die Liste supportedEvents aufnehmen. Weitere Informationen zu unterstützten Ereignissen finden Sie in der Dokumentation zu Cloud Load Balancing-Trafficerweiterungen.

So erstellen Sie ein GCPTrafficExtension:

  1. Erstellen Sie eine YAML-Datei mit dem Namen gcp-traffic-extension.yaml und dem folgenden Inhalt:
    # gcp-traffic-extension.yaml
    kind: GCPTrafficExtension
    apiVersion: networking.gke.io/v1
    metadata:
      name: my-apigee-extension
    spec:
      targetRefs:
      - group: "gateway.networking.k8s.io"
        kind: Gateway
        name: GATEWAY_NAME  # Replace with your GKE Gateway name
      extensionChains:
      - name: EXTENSION_CHAIN_NAME
        matchCondition:
          celExpressions:
          - celMatcher: request.path.startsWith("/")
        extensions:
        - name: EXTENSION_NAME
          metadata:
            # This metadata label must match the name of the ApigeeBackendService
            apigee-extension-processor : APIGEE_BACKEND_SERVICE_NAME
          failOpen: false
          supportedEvents:
          - SUPPORTED_EVENT1
          - SUPPORTED_EVENT2
          timeout: 1s
          requestBodySendMode: FullDuplexStreamed
          backendRef: # References the ApigeeBackendService by kind and name
            kind: ApigeeBackendService
            name: APIGEE_BACKEND_SERVICE_NAME
            Port: 443

    Wobei:

    • GATEWAY_NAME ist der Name des GKE Gateways, für das die Erweiterung gilt.
    • EXTENSION_CHAIN_NAME ist der Name der Erweiterungskette.
    • EXTENSION_NAME ist der Name der Traffic-Diensterweiterung.
    • APIGEE_BACKEND_SERVICE_NAME ist der Name des zuvor erstellten ApigeeBackendService. Dieses Label im extensions-Block muss mit dem metadata.name des zuvor erstellten ApigeeBackendService übereinstimmen.
    • Das Feld supportedEvents gibt an, welche Teile des Anfrage- und Antwortzyklus für die Erweiterung verfügbar sind. Der Apigee Operator für Kubernetes unterstützt die folgenden Ereignisse:
      • RequestHeaders
      • RequestBody
      • RequestTrailers
      • ResponseHeaders
      • ResponseBody
      • ResponseTrailers
      Bei Richtlinien, die eine Überprüfung oder Änderung des Anfrage- oder Antwort-Bodys erfordern (z.B. JSONThreatProtection) müssen Sie RequestBody und ResponseBody in die Liste supportedEvents aufnehmen. Weitere Informationen zu unterstützten Ereignissen finden Sie in der Dokumentation zu Cloud Load Balancing-Trafficerweiterungen.
  2. Wenden Sie die YAML-Datei auf den Cluster an:
    kubectl apply -f gcp-traffic-extension.yaml

Nächste Schritte