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:
- Prüfen Sie, ob für Ihren GKE-Cluster eine Workload Identity konfiguriert ist. Eine entsprechende Anleitung finden Sie unter Workload Identity erstellen.
- Prüfen Sie, ob für Ihren Cluster ein GKE-Gateway konfiguriert und funktionsfähig ist. Weitere Informationen finden Sie unter Gateways bereitstellen.
- Installieren Sie den APIM-Operator. Eine Anleitung finden Sie unter Apigee APIM Operator für Kubernetes installieren.
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:
- APIM-Erweiterungsrichtlinie definieren
- Definieren Sie das API-Produkt.
- Definieren Sie den API-Vorgangssatz.
- Testen Sie die Apigee-Diensterweiterung.
- 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:
- Erstellen Sie im Namespace
apim
eine neue Datei mit dem Namenglobal-ext-lb1-apim-policy.yaml
. - 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:
- 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. - 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
vonRUNNING
:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
- 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, wobeiGATEWAY_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 imHTTPRoute
des Gateways definiert ist.
- 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:
- Erstellen Sie im Namespace
apim
eine neue Datei mit dem Namenapi-product.yaml
. - 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
- 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:
- Erstellen Sie im Namespace
apim
eine neue Datei mit dem Namenapim-policies.yaml
. - 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
- 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:
Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:
- Wählen Sie die Apigee-Organisation aus, in der Sie den APIM-Operator installiert haben.
- Erstellen Sie einen Entwickler:
- Wählen Sie Distribution > Entwickler aus.
- Klicken Sie auf der Seite Entwickler auf + Erstellen.
- Geben Sie auf der Seite Entwickler hinzufügen die erforderlichen Informationen ein.
- Klicken Sie auf Hinzufügen.
- App erstellen:
- Wählen Sie Distribution> Apps aus.
- Klicken Sie auf der Seite Apps auf + Erstellen.
- 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.
- Klicken Sie im Abschnitt App-Anmeldedaten auf + Anmeldedaten hinzufügen.
- 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.
- Klicken Sie auf Erstellen.
- Klicken Sie im Bereich Produkte auf + Produkte hinzufügen.
- Wählen Sie die
api-product-1
aus, die Sie im vorherigen Schritt erstellt haben. - Klicken Sie auf Hinzufügen.
- Klicken Sie auf Erstellen.
- Klicken Sie auf der Seite App-Details im Abschnitt Anmeldedaten auf
visibility_off, 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. - Klicken Sie auf der Seite App-Details im Abschnitt Anmeldedaten auf visibility_off, 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, wobeiGATEWAY_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 imHTTPRoute
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, wobeiGATEWAY_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 imHTTPRoute
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, wobeiGATEWAY_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 imHTTPRoute
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:
- Rufen Sie in der Google Cloud Console die Seite Apigee API-Verwaltung auf:
- Wählen Sie die Apigee-Organisation aus, in der Sie den APIM-Operator installiert haben.
- Wählen Sie im seitlichen Navigationsmenü Analysen > API-Messwerte aus.
- 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
. - 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
- Weitere Informationen zum Hinzufügen von Richtlinien zum GKE-Gateway
- Informationen zum Deinstallieren des Apigee APIM-Betriebssystems für Kubernetes