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

Hinweise

Bevor Sie mit dieser Aufgabe beginnen, müssen Sie die folgenden Schritte ausführen:

Erforderliche Rollen

Wenn Sie Ihrem Dienstkonto die erforderlichen Rollen zugewiesen haben, wie unter Apigee APIM Operator für Kubernetes installieren beschrieben, sind für diese 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 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 werden Sie:

  1. APIM-Erweiterungsrichtlinie definieren
  2. API-Produkt definieren:
  3. API-Vorgangssatz definieren
  4. Apigee-Diensterweiterung testen
  5. Apigee API Analytics in der Google Cloud Konsole ansehen.

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 regelt den gesamten Traffic, der über das Gateway und die zugehörige HTTPRoutes läuft. Sie funktioniert ähnlich wie ein Flowhook auf Umgebungsebene in Apigee.

APIM-Erweiterungsrichtlinie definieren:

  1. Erstellen Sie eine neue Datei mit dem Namen global-ext-lb1-apim-policy.yaml im Namespace apim.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei:
    # global-ext-lb1-apim-policy.yaml
    apiVersion: apim.googleapis.com/v1
    kind: APIMExtensionPolicy
    metadata:
      name: global-ext-lb1-apim-policy
      namespace: apim
    spec:
      apigeeenv: ENV_NAME # optional
      location: global
      failOpen: false
      timeout: 1000ms
      defaultSecurityEnabled: true
      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 im Installationsschritt Apigee-Umgebung erstellen erstellt wurde.

    Sie können alle verfügbaren Umgebungen auf der Seite Apigee-Umgebungen in der Google Cloud aufrufen:

    Zur Seite Umgebungen“

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

    Sobald 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 fehlschlagen, da die Standardsicherheit durch Festlegen von defaultSecurityEnabled: true in der API-Erweiterungsrichtlinienressource aktiviert ist. Die Antwort sieht ungefähr so aus:
    {"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}

    Das 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 eine neue Datei mit dem Namen api-product.yaml im Namespace apim.
  2. Kopieren Sie den folgenden Inhalt in die neue Datei:
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      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 die API-Vorgänge für das API-Produkt, das Sie im vorherigen Schritt erstellt haben:

  1. Erstellen Sie eine neue Datei mit dem Namen apim-policies.yaml im Namespace apim.
  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 definiert:
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: apim
      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-UI in der Google Cloud -Konsole, um die Apigee-Diensterweiterung und die auf Ihr Gateway angewendete Apigee-Erweiterungsrichtlinie zu testen.

Einrichtung testen

Richten Sie die API-Ressourcen ein, die Sie zum 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. Entwickler erstellen:
    1. Wählen Sie Vertrieb > Entwickler aus.
    2. Klicken Sie auf der Seite Entwickler auf + Erstellen.
    3. Füllen Sie auf der Seite Entwickler hinzufügen die erforderlichen Felder mit beliebigen Werten aus.
    4. Klicken Sie auf Hinzufügen.
  4. App erstellen:
    1. Wählen Sie Vertrieb> Apps aus.
    2. Klicken Sie auf der Seite Apps auf + Erstellen.
    3. Füllen Sie auf der Seite App erstellen die erforderlichen Felder im Bereich App-Details mit den folgenden Werten aus:
      • 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. Füllen Sie im Abschnitt Anmeldedaten die erforderlichen Felder im Abschnitt Anmeldedaten mit den folgenden Werten aus:
      • Name der Qualifikation: 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 Credential auf , um den Wert von Key anzuzeigen.

    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 unter App-Secret. Sie benötigen diesen Wert, um in einem späteren Schritt ein Zugriffstoken zu generieren.

API-Schlüssel erzwingen

Mit dem folgenden Befehl senden Sie eine Anfrage an Ihr Gateway. Verwenden Sie dazu den API-Schlüssel, den Sie in einem früheren Schritt erhalten 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 in 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": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt",
    "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 Skript 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 in Einrichtung testen abgerufen wurde.

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

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

Erzwingung von REST-Vorgängen testen

Um die Durchsetzung der REST-Vorgänge zu testen, senden Sie mit dem folgenden Befehl eine Anfrage an das Gateway über eine URL, die nicht im API-Vorgangssatz 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 in Einrichtung testen abgerufen wurde.

Die Anfrage sollte mit einer Antwort ähnlich der folgenden fehlschlagen:

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

Apigee API Analytics in der Google Cloud Konsole ansehen

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 ansehen:

  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-Operator während der Installation erstellt wurde. Der Name der Umgebung beginnt mit dem Präfix apigee-ext-proc-enabled-env.
  5. Beobachten Sie den aufgezeichneten API-Traffic.

Fehlerbehebung

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

Nächste Schritte