Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Wenn Ihre Anforderungen an die API-Verwaltung wachsen und sich ändern, müssen Sie möglicherweise neue Dienste zu Ihrem Cluster 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
- Neues API-Produkt erstellen
- Erstellen Sie einen neuen Satz von API-Vorgängen.
- Neue Gateway-Konfiguration testen
Hinweise
Bevor Sie mit dieser Aufgabe beginnen, müssen Sie die Schritte unter APIMExtensionPolicy erstellen ausführen. Auf dieser Seite wird davon ausgegangen, dass Sie einen Google Kubernetes Engine-Cluster (GKE) eingerichtet, den Apigee Operator für Kubernetes installiert, ein Google Kubernetes Engine-Gateway (GKE) erstellt und mindestens eine API-Verwaltungsrichtlinie auf das Gateway angewendet haben.
Erforderliche Rollen
Wenn Sie Ihrem Dienstkonto die erforderlichen Rollen wie unter Apigee Operator für Kubernetes installieren beschrieben zugewiesen haben, 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.
Neues Gateway und neue HTTPRoute hinzufügen
In diesem Abschnitt fügen Sie Ihrem Cluster ein neues Gateway und eine neue HTTPRoute hinzu. In früheren Aufgabenanleitungen wurde in den Beispielkonfigurationen ein externes GKE-Gateway verwendet. Wenn mehrere Gateways in derselben Region bereitgestellt werden, müssen sie vom selben Typ sein (entweder beide extern oder beide intern). Aus diesem Grund wird in der Beispielkonfiguration in diesem Leitfaden auch ein externes Gateway verwendet.
Der Apigee Operator für Kubernetes 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 eine von Google verwaltete globale
SslCertificate-Ressource:gcloud compute ssl-certificates create CERT_NAME \ --domains=HOST_NAME \ --global
Wobei:
CERT_NAMEist der Name des Zertifikats, das Sie erstellen möchten.HOST_NAME_2ist der Hostname für das neue Gateway.
- Erstellen Sie eine neue Datei mit dem Namen
gateway2.yamlim Namespaceapim. - 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: CERT_NAME
- Fügen Sie der Datei eine neue HTTPRoute für
/posthinzu, 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 HTTPRoute-Status 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
Addresseine gültige IP-Adresse enthält und der Status vonProgrammedTrueist. - Beschreiben Sie das Gateway, um sicherzustellen, dass die Route angehängt wird:
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
Attached Routes1ist.- Senden Sie eine Anfrage an das Gateway, um zu prüfen, ob die Route funktioniert:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Wobei:
GATEWAY_IP_ADDRESSist die IP-Adresse des Gateways, wie in der SpalteAddressder in Schritt 7 zurückgegebenen Antwort zu sehen ist.HOST_NAME_2ist der Hostname, der imHTTPRoutedes 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 in einem vorherigen Schritt erstellt wurde:
- Erstellen Sie eine neue Datei mit dem Namen
apim-policy2.yamlim Namespaceapim. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# apim-policy2.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb2-apim-policy-2 namespace: apim spec: location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true 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
Sobald die Datei angewendet wurde, erstellt der Apigee Operator für Kubernetes im Hintergrund Netzwerkressourcen.
- Prüfen Sie den Status der APIM Extension Policy:
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
STATERUNNINGist. - Warten Sie fünf Minuten, bis die Änderungen auf alle Load-Balancer-Instanzen übertragen wurden, und prüfen Sie dann mit dem folgenden Befehl, ob eine Anfrage an das neue Gateway fehlschlägt:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Wobei:
GATEWAY_IP_ADDRESSist die IP-Adresse des Gateways, die Sie in einem früheren Schritt abgerufen haben.HOST_NAME_2ist der Hostname, der imHTTPRoutedes Gateways definiert ist.
Die Anfrage sollte mit einer Antwort ähnlich der folgenden fehlschlagen:
{ "fault": { "faultstring": "Raising fault. Fault name : RF-insufficient-request-raise-fault", "detail": { "errorcode": "steps.raisefault.RaiseFault" } } }Das bedeutet, dass die Dienst-Erweiterung für 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 eine neue Datei mit dem Namen
API-Produkt aktualisieren
Ändern Sie ein vorhandenes API-Produkt, damit es auf die neue APIM-Erweiterungsrichtlinie verweist:
- Erstellen Sie eine neue Datei mit dem Namen
api-product-2.yamlim Namespaceapim. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1 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
- Neue API-Produktdatei anwenden:
kubectl apply -f api-product-2.yaml
Es dauert etwa drei Minuten, bis die Änderungen im gesamten Cluster übernommen werden.
In diesem Beispiel wird der Abschnitt EnforcementRefs des API-Produkts api-product-2 aktualisiert, um sowohl auf global-ext-lb1-apim-policy als auch auf global-ext-lb2-apim-policy zu verweisen, wie in den hervorgehobenen Abschnitten von yaml zu sehen ist.
Neues API-Produkt erstellen
So erstellen Sie ein neues API-Produkt:
- Erstellen Sie eine neue Datei mit dem Namen
api-product-2.yamlim Namespaceapim. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# api-product-2.yaml apiVersion: apim.googleapis.com/v1 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
- Neue API-Produktdatei anwenden:
kubectl apply -f api-product-2.yaml
Es dauert etwa drei Minuten, bis die Änderungen im gesamten Cluster übernommen werden.
In diesem Beispiel wird der EnforcementRefs-Abschnitt des neuen API-Produkts api-product-2 erstellt, um auf global-ext-lb2-apim-policy zu verweisen, wie in den hervorgehobenen Teilen des yaml zu sehen ist.
Neue API-Vorgangsgruppe erstellen
So erstellen Sie eine neue API-Vorgangsgruppe:
- Erstellen Sie eine neue Datei mit dem Namen
item-set-post.yamlim Namespaceapim. - Kopieren Sie den folgenden Inhalt in die neue Datei:
# item-set-post.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set-post namespace: apim spec: apiProductRefs: - name: api-product-2 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 dem API-Vorgangssatz an:
kubectl apply -f item-set-post.yaml
Es dauert etwa drei Minuten, bis die Änderungen im gesamten Cluster übernommen werden.
In diesem Beispiel wird der restOperations-Wert des neuen API-Vorgangssatzes item-set-post erstellt, um auf den /post-Pfad zu verweisen, wie in den hervorgehobenen Abschnitten der Datei zu sehen ist.
Neue Gateway-Konfiguration testen
Senden Sie die folgende Anfrage an den neuen /post-Pfad, um die neue Gateway-Konfiguration zu testen:
curl -k -X POST https://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME_2"
Wobei:
- GATEWAY_IP_ADDRESS ist die IP-Adresse des Gateways, die Sie in einem früheren Schritt abgerufen haben.
- HOST_NAME ist der Hostname, der im
HTTPRoutedes 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 dem Apigee Operator für Kubernetes verwendet werden, Probleme auftreten, finden Sie unter Fehlerbehebung für den Apigee Operator für Kubernetes Lösungen für häufige Fehler.
Nächste Schritte
- Apigee Operator für Kubernetes deinstallieren
- Weitere Informationen zu Optionen für die Bereitstellung von Gateways