Diese Seite gilt für Apigee, aber nicht für Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Wenn Ihre Anforderungen an die API-Verwaltung steigen und sich ändern, müssen Sie Ihrem Cluster möglicherweise neue Dienste hinzufügen oder vorhandene Routen und Ingress-Optionen aktualisieren. Auf dieser Seite wird beschrieben, wie Sie Ihren Cluster aktualisieren, um die folgenden Aufgaben auszuführen:
- Fügen Sie ein neues Gateway und eine neue HTTPRoute hinzu.
- API-Produkt aktualisieren
- Erstellen Sie ein neues API-Produkt.
- Erstellen Sie einen neuen API-Vorgangssatz.
- Testen Sie die neue Gateway-Konfiguration.
Hinweise
Bevor Sie mit dieser Aufgabe beginnen, müssen Sie die Schritte unter Richtlinie mit dem Apigee APIM-Operator für Kubernetes anwenden ausführen. Auf dieser Seite wird davon ausgegangen, dass Sie einen GKE-Cluster (Google Kubernetes Engine) eingerichtet, den Apigee APIM-Operator für Kubernetes installiert, ein GKE-Gateway erstellt und mindestens eine API-Verwaltungsrichtlinie auf das Gateway angewendet haben.
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.
Neues Gateway und neue HTTPRoute hinzufügen
In diesem Abschnitt fügen Sie Ihrem Cluster ein neues Gateway und eine neue HTTPRoute hinzu. In den vorherigen Aufgabenanleitungen wurde in den Beispielkonfigurationen ein externes GKE-Gateway verwendet. Wenn mehrere Gateways in der gleichen Region bereitgestellt werden, müssen sie vom selben Typ sein (entweder alle extern oder alle intern). Aus diesem Grund wird in der Beispielkonfiguration in diesem Leitfaden auch ein externes Gateway verwendet.
Der APIM-Operator kann mit internen oder externen GKE-Gateways verwendet werden. Sie können jedoch nicht beide Arten von Gateways in derselben Region bereitstellen.
So fügen Sie Ihrem Cluster ein neues Gateway und eine neue HTTPRoute hinzu:
- Richten Sie ein neues externes GKE-Gateway ein. Weitere Informationen und Schritte finden Sie unter Externes Gateway bereitstellen.
- Erstellen Sie im Namespace
apim
eine neue Datei mit dem Namengateway2.yaml
. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# gateway2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: Gateway metadata: name: global-ext-lb2 spec: gatewayClassName: gke-l7-global-external-managed listeners: - name: https protocol: HTTPS allowedRoutes: kinds: - kind: HTTPRoute namespaces: from: All port: 443 tls: options: networking.gke.io/pre-shared-certs: apigee-lb-new-cert-sept
- Fügen Sie derselben Datei eine neue HTTPRoute für
/post
hinzu, wie unten hervorgehoben:# http-route2.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: HTTPRoute metadata: name: http-bin-route-post namespace: http spec: parentRefs: - kind: Gateway name: global-ext-lb2 namespace: default hostnames: - HOST_NAME_2 rules: - matches: - path: type: PathPrefix value: "/post" backendRefs: - name: httpbin kind: Service port: 80 namespace: http
- Wenden Sie das neue Gateway und die neue HTTPRoute an:
kubectl apply -f gateway2.yaml
- Prüfen Sie den Status der HTTPRoute mit dem folgenden Befehl:
kubectl -n http get HttpRoute
Die Ausgabe sollte in etwa so aussehen:
NAME HOSTNAMES AGE http-bin-route ["my-hostname-2"] 12d
- Prüfen Sie den Gateway-Status mit dem folgenden Befehl:
kubectl get gateway global-ext-lb2
Die Ausgabe sollte in etwa so aussehen:
NAME CLASS ADDRESS PROGRAMMED AGE global-ext-lb2 gke-l7-global-external-managed 34.54.193.92 True 11d
Prüfen Sie, ob die Spalte
Address
eine gültige IP-Adresse enthält und der Status vonProgrammed
True
ist. - Beschreiben Sie das Gateway, um sicherzustellen, dass die Route verbunden ist:
kubectl describe gateway global-ext-lb2
Die Ausgabe sollte in etwa so aussehen:
... Listeners: Attached Routes: 1 Conditions: Last Transition Time: 2024-10-03T03:10:17Z ...
Prüfen Sie, ob der Wert für
Attached Routes
1
ist.- Senden Sie eine Anfrage an das Gateway, um zu prüfen, ob die Route funktioniert:
curl -X POST http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME"
Wobei:
GATEWAY_IP_ADDRESS
ist die IP-Adresse des Gateways, wie in der SpalteAddress
der in Schritt 7 zurückgegebenen Antwort angegeben.HOST_NAME
ist der Hostname, der imHTTPRoute
des Gateways definiert ist.
- Die Ausgabe sollte in etwa so aussehen:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701" }, "origin": "67.164.1.10,34.54.193.72", "url": "https://apigee-apim-operator-test.apigee.net/post" }
- Erstellen Sie eine neue APIM-Erweiterungsrichtlinie, die auf die HTTPRoute des neuen Gateways verweist, das Sie in einem früheren Schritt erstellt haben:
- Erstellen Sie im Namespace
apim
eine neue Datei mit dem Namenapim-policy2.yaml
. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# apim-policy2.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIMExtensionPolicy metadata: name: global-ext-lb2-apim-policy-2 namespace: apim spec: location: global failOpen: false timeout: 1000ms targetRef: # identifies the Gateway where the extension should be installed name: global-ext-lb2 kind: Gateway namespace: default
- Wenden Sie die neue APIM-Erweiterungsrichtlinie an:
kubectl apply -f apim-policy2.yaml
Nachdem die Datei angewendet wurde, erstellt der APIM-Betriebssystem-Dienst im Hintergrund Netzwerkressourcen.
- Prüfen Sie den Status der APIM-Erweiterungsrichtlinie:
kubectl -n apim get APIMExtensionPolicy
Die Ausgabe sollte in etwa so aussehen:
NAME STATE ERRORMESSAGE global-ext-lb2-apim-policy-2 RUNNING
Prüfen Sie, ob der Wert für
STATE
RUNNING
ist. - Warten Sie fünf Minuten, damit die Änderungen auf alle Load Balancer-Instanzen angewendet werden. Prüfen Sie dann mit dem folgenden Befehl, ob eine Anfrage an das neue Gateway fehlschlägt:
curl -X POST http://GATEWAY_IP_ADDRESS/post -H "Host: HOSTNAME"
Wobei:
GATEWAY_IP_ADDRESS
ist die IP-Adresse des Gateways, die Sie in einem früheren Schritt ermittelt haben.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" } } }
Das bedeutet, dass die Diensterweiterung auf Apigee aktiv ist und die Überprüfung von API-Schlüsseln und Zugriffstokens erzwungen wird. Eine Anleitung zum Erstellen einer Entwickler-App, zum Abrufen eines API-Schlüssels und zum Testen des neuen Gateways mit dem Schlüssel finden Sie unter Apigee-Diensterweiterung testen.
- Erstellen Sie im Namespace
API-Produkt aktualisieren
Ändern Sie ein vorhandenes API-Produkt, um auf die neue APIM-Erweiterungsrichtlinie zu verweisen:
- Erstellen Sie im Namespace
apim
eine neue Datei mit dem Namenapi-product-2.yaml
. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 EnforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Wenden Sie die neue API-Produktdatei an:
kubectl apply -f api-product-2.yaml
Es dauert etwa drei Minuten, bis die Änderungen im gesamten Cluster übernommen wurden.
In diesem Beispiel wird der Abschnitt EnforcementRefs
des API-Produkts api-product-2
aktualisiert, sodass sowohl auf global-ext-lb1-apim-policy
als auch auf global-ext-lb2-apim-policy
verwiesen wird, wie in den hervorgehobenen Bereichen der yaml
dargestellt.
Neues API-Produkt erstellen
So erstellen Sie ein neues API-Produkt:
- Erstellen Sie im Namespace
apim
eine neue Datei mit dem Namenapi-product-2.yaml
. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIProduct metadata: name: api-product-2 namespace: apim spec: name: api-product-2 approvalType: auto description: Http bin GET calls displayName: api-product-2 enforcementRefs: - name: global-ext-lb2-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Wenden Sie die neue API-Produktdatei an:
kubectl apply -f api-product-2.yaml
Es dauert etwa drei Minuten, bis die Änderungen im gesamten Cluster übernommen wurden.
In diesem Beispiel wird der Bereich EnforcementRefs
des neuen API-Produkts api-product-2
erstellt, um auf global-ext-lb2-apim-policy
zu verweisen, wie in den hervorgehobenen Bereichen der yaml
dargestellt.
Neuen API-Vorgangssatz erstellen
So erstellen Sie einen neuen API-Vorgangssatz:
- Erstellen Sie im Namespace
apim
eine neue Datei mit dem Namenitem-set-post.yaml
. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# item-set-post.yaml apiVersion: apim.googleapis.com/v1alpha1 kind: APIOperationSet metadata: name: item-set-post namespace: apim spec: apiProductRefs: - name: api-product-1 kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 1 interval: 1 timeUnit: minute restOperations: - name: PostItems path: "/post" methods: - POST
- Wenden Sie die neue Datei mit API-Vorgangssätzen an:
kubectl apply -f item-set-post.yaml
Es dauert etwa drei Minuten, bis die Änderungen im gesamten Cluster übernommen wurden.
In diesem Beispiel wird der Wert restOperations
des neuen API-Vorgangssatzes item-set-post
erstellt, um auf den Pfad /post
zu verweisen, wie in den hervorgehobenen Bereichen der Datei dargestellt.
Neue Gateway-Konfiguration testen
Sende zum Testen der neuen Gateway-Konfiguration die folgende Anfrage an den neuen /post
-Pfad:
curl -X POST http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME"
Wobei:
- GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways, die Sie in einem früheren Schritt ermittelt haben.
- HOST_NAME ist der Hostname, der im
HTTPRoute
des Gateways definiert ist.
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/post" }
Fehlerbehebung
Wenn beim Aktualisieren und Erweitern der API-Verwaltungsrichtlinien, die mit APIM Operator verwendet werden, Probleme auftreten, finden Sie unter Fehlerbehebung für APIM Operator Lösungen für häufige Fehler.
Nächste Schritte
- Informationen zum Deinstallieren des Apigee APIM-Betriebssystems für Kubernetes
- Weitere Informationen zu Optionen für das Bereitstellen von Gateways