API-Verwaltungsrichtlinien mit dem Apigee APIM-Operator für Kubernetes verwenden

Diese Seite gilt für Apigee, aber nicht für Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Auf dieser Seite wird beschrieben, wie Sie das in Ihrem Cluster ausgeführte GKE-Gateway (Google Kubernetes Engine) ändern, um Apigee API-Verwaltungsrichtlinien mit dem Apigee APIM-Operator für Kubernetes (Vorabversion) anzuwenden.

Hinweise

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

Erforderliche Rollen

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

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

Übersicht

In den folgenden Abschnitten wird beschrieben, wie Sie Ihr GKE-Gateway so ändern, dass Apigee-Richtlinien mit dem APIM-Operator verwendet werden. In dieser Anleitung lernen Sie Folgendes:

  1. APIM-Erweiterungsrichtlinie definieren
  2. Definieren Sie das API-Produkt.
  3. Definieren Sie den API-Vorgangssatz.
  4. Testen Sie die Apigee-Diensterweiterung.
  5. Apigee API Analytics in der Google Cloud Console aufrufen

APIM-Erweiterungsrichtlinie definieren

In diesem Schritt definieren Sie die APIM-Erweiterungsrichtlinie und wenden sie auf das GKE-Gateway an, das in Ihrem Cluster ausgeführt wird. Diese Richtlinie gilt für alle Zugriffe, die über das Gateway und die zugehörige HTTPRoutes erfolgen. Sie funktioniert ähnlich wie ein Flowhook auf Umgebungsebene in Apigee.

Definieren Sie die APIM-Erweiterungsrichtlinie:

  1. Erstellen Sie im Namespace apim eine neue Datei mit dem Namen global-ext-lb1-apim-policy.yaml.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei:
    # global-ext-lb1-apim-policy.yaml
    apiVersion: apim.googleapis.com/v1alpha1
    kind: APIMExtensionPolicy
    metadata:
      name: global-ext-lb1-apim-policy 
      namespace: apim
    spec:
      apigeeenv: ENV_NAME # optional
      location: global
      failOpen: false
      timeout: 1000ms
      targetRef: # identifies the Gateway where the extension should be applied
        name: global-ext-lb1 
        kind: Gateway
        namespace: default

    Dabei ist ENV_NAME der Name der Apigee-Umgebung, die Sie im Installationsschritt Apigee-Umgebung erstellen erstellt haben.

    Alle verfügbaren Umgebungen finden Sie in der Google Cloud Console auf der Seite Apigee-Umgebungen:

    Zur Seite Umgebungen“

  3. Wenden Sie die Richtlinie an:
    kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml

    Nachdem die yaml angewendet wurde, erstellt der APIM-Operator im Hintergrund Netzwerkressourcen.

  4. Prüfen Sie den Status der API-Erweiterungsrichtlinie mit dem folgenden Befehl:
    kubectl -n apim get APIMExtensionPolicy

    Die Ausgabe sollte in etwa so aussehen, mit einem State von RUNNING:

    NAME                         STATE      ERRORMESSAGE
    global-ext-lb1-apim-policy   RUNNING  
  5. Verwenden Sie den folgenden Befehl, um eine Anfrage an das Gateway zu senden:
    curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME"

    Wobei:

    • GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways. Sie können die Gateway-IP-Adresse mit dem folgenden Befehl abrufen, wobei GATEWAY_NAME der Name des Gateways ist:
      kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
    • HOST_NAME ist der Hostname, der im HTTPRoute des Gateways definiert ist.
  6. Die Anfrage sollte mit einer Antwort wie der folgenden fehlschlagen:
    {"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}

    Dies bedeutet, dass die Apigee-Erweiterungsrichtlinie aktiv ist und die Erzwingung von API-Schlüsseln und die Überprüfung von Zugriffstokens aktiv sind.

API-Produkt definieren

Definieren Sie das API-Produkt:

  1. Erstellen Sie im Namespace apim eine neue Datei mit dem Namen api-product.yaml.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1alpha1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: APIMExtensionPolicy
            group: apim.googleapis.com
            namespace: apim
        attributes:
          - name: access
            value: private
  3. Wenden Sie die Datei mit dem folgenden Befehl auf das Gateway an:
    kubectl -n apim apply -f api-product.yaml

API-Vorgangssatz definieren

Definieren Sie den API-Vorgangssatz für das im vorherigen Schritt erstellte API-Produkt:

  1. Erstellen Sie im Namespace apim eine neue Datei mit dem Namen apim-policies.yaml.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei. In dieser Datei werden eine Kontingentrichtlinie und die verfügbaren REST-Vorgänge für das im vorherigen Schritt definierte API-Produkt festgelegt:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1alpha1
      kind: APIOperationSet
      metadata:
        name: item-set
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: apim
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. Wenden Sie die Datei auf das Gateway an:
    kubectl -n apim apply -f apim-policies.yaml

Apigee-Diensterweiterung testen

In diesem Schritt verwenden Sie die Apigee-Benutzeroberfläche in der Google Cloud Console, um die Apigee-Diensterweiterung und die Apigee-Erweiterungsrichtlinie zu testen, die auf Ihr Gateway angewendet wird.

Einrichtung testen

Richten Sie die API-Ressourcen ein, die Sie für das Testen benötigen:

  1. Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:

    API-Verwaltung mit Apigee

  2. Wählen Sie die Apigee-Organisation aus, in der Sie den APIM-Operator installiert haben.
  3. Erstellen Sie einen Entwickler:
    1. Wählen Sie Distribution > Entwickler aus.
    2. Klicken Sie auf der Seite Entwickler auf + Erstellen.
    3. Geben Sie auf der Seite Entwickler hinzufügen die erforderlichen Informationen ein.
    4. Klicken Sie auf Hinzufügen.
  4. App erstellen:
    1. Wählen Sie Distribution> Apps aus.
    2. Klicken Sie auf der Seite Apps auf + Erstellen.
    3. Geben Sie auf der Seite App erstellen im Abschnitt App-Details die folgenden Werte in die erforderlichen Felder ein:
      • App-Name: demo-app
      • Entwickler: Wählen Sie den Entwickler aus, den Sie im vorherigen Schritt erstellt haben, oder einen anderen Entwickler aus der Liste.
    4. Klicken Sie im Abschnitt App-Anmeldedaten auf + Anmeldedaten hinzufügen.
    5. Geben Sie im Abschnitt Anmeldedaten die erforderlichen Felder im Abschnitt Anmeldedatendetails mit den folgenden Werten aus:
      • Name der Anmeldedaten: demo-credential
      • Anmeldedatentyp: Wählen Sie API-Schlüssel aus.
    6. Klicken Sie auf Erstellen.
    7. Klicken Sie im Bereich Produkte auf + Produkte hinzufügen.
    8. Wählen Sie die api-product-1 aus, die Sie im vorherigen Schritt erstellt haben.
    9. Klicken Sie auf Hinzufügen.
    10. Klicken Sie auf Erstellen.
  5. Klicken Sie auf der Seite App-Details im Abschnitt Anmeldedaten auf , um den Wert des Schlüssels aufzurufen.

    Kopieren Sie den Wert Key. Mit diesem Schlüssel führen Sie in einem späteren Schritt API-Aufrufe an Ihren Dienst aus.

  6. Klicken Sie auf der Seite App-Details im Abschnitt Anmeldedaten auf , um den Wert des App-Secrets aufzurufen.

    Kopieren Sie den Wert für App-Secret. Sie verwenden diesen Wert in einem späteren Schritt, um ein Zugriffstoken zu generieren.

API-Schlüsselerzwingung testen

Senden Sie mit dem folgenden Befehl eine Anfrage an Ihr Gateway mit dem API-Schlüssel, den Sie in einem früheren Schritt abgerufen haben:

curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Wobei:

  • GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways. Sie können die Gateway-IP-Adresse mit dem folgenden Befehl abrufen, wobei GATEWAY_NAME der Name des Gateways ist:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME ist der Hostname, der im HTTPRoute des Gateways definiert ist.
  • API_KEY ist der API-Schlüsselwert, der unter Einrichtung testen abgerufen wurde.

Die Anfrage sollte erfolgreich sein und eine Antwort ähnlich der folgenden zurückgeben:

{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Host": "apigee-apim-operator-test.apigee.net", 
    "User-Agent": "curl/8.7.1", 
    "X-Api-Key": "f0N6sXXXclGXXXe0oP5XXXdA20PjgrP2x8xXXh7z4XXXKiYt", 
    "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739"
  }, 
  "origin": "34.54.193.72", 
  "url": "https://34.54.193.72/get"
}

Kontingenterzwingung testen

Um die in Ihrer APIM-Erweiterungsrichtlinie definierte Kontingenterzwingung zu testen, senden Sie die Anfrage aus dem vorherigen Schritt innerhalb einer Minute zehnmal an das Gateway.

Sie können das folgende Script ausführen, um die Anfragen zu generieren:

#!/bin/sh
for i in $(seq 1 11); do
    curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
    sleep 1
done

Wobei:

  • GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways. Sie können die Gateway-IP-Adresse mit dem folgenden Befehl abrufen, wobei GATEWAY_NAME der Name des Gateways ist:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME ist der Hostname, der im HTTPRoute des Gateways definiert ist.
  • API_KEY ist der API-Schlüsselwert, der unter Einrichtung testen abgerufen wurde.

Diese Aktion sollte einen Kontingentverstoß auslösen und einen Fehler ähnlich dem folgenden verursachen:

{"fault":{"faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}

Erzwingung von REST-Vorgängen testen

Um die Erzwingung von REST-Vorgängen zu testen, senden Sie mit dem folgenden Befehl eine Anfrage an das Gateway mit einer URL, die nicht im Satz von API-Vorgängen enthalten ist:

curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

Wobei:

  • GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways. Sie können die Gateway-IP-Adresse mit dem folgenden Befehl abrufen, wobei GATEWAY_NAME der Name des Gateways ist:
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME ist der Hostname, der im HTTPRoute des Gateways definiert ist.
  • API_KEY ist der API-Schlüsselwert, der unter Einrichtung testen abgerufen wurde.

Die Anfrage sollte mit einer Antwort wie der folgenden fehlschlagen:

{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}

Apigee API Analytics in der Google Cloud Console aufrufen

Sie können den API-Traffic, der vom GKE-Gateway und der von Ihnen installierten APIMExtensionPolicy verarbeitet wird, mit Apigee API Analytics in der Google Cloud Console aufrufen:

  1. Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:

    API-Verwaltung mit Apigee

  2. Wählen Sie die Apigee-Organisation aus, in der Sie den APIM-Operator installiert haben.
  3. Wählen Sie im seitlichen Navigationsmenü Analysen > API-Messwerte aus.
  4. Wählen Sie auf dem Tab API-Proxy-Leistung die Umgebung aus, die Sie im optionalen Installationsschritt Apigee-Umgebung erstellen erstellt haben, oder die Umgebung, die vom APIM-Betreiber während der Installation erstellt wurde. Der Name der Umgebung beginnt mit dem Präfix apigee-ext-proc-enabled-env.
  5. Sehen Sie sich den aufgezeichneten API-Traffic an.

Fehlerbehebung

Wenn bei der Verwendung von API-Verwaltungsrichtlinien mit APIM Operator Probleme auftreten, finden Sie unter Fehlerbehebung für APIM Operator Lösungen für häufige Fehler.

Nächste Schritte