Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
Auf dieser Seite wird beschrieben, wie Sie Apigee-Richtlinien auf Traffic anwenden, der ein Kubernetes-Gateway durchläuft. Dazu erstellen Sie eine benutzerdefinierte APIMExtensionPolicy-Ressource. Der Apigee Operator für Kubernetes überwacht APIMExtensionPolicy-Ressourcen und konfiguriert das Gateway entsprechend.
Apigee
Führen Sie diese Schritte aus, wenn Sie Apigee verwenden.
Hinweise
Führen Sie die folgenden Schritte aus, bevor Sie mit dieser Aufgabe beginnen:
- Prüfen Sie, ob Workload Identity für Ihren GKE-Cluster konfiguriert ist. Die erforderlichen Schritte finden Sie unter Identitätsföderation von Arbeitslasten für GKE konfigurieren.
- Prüfen Sie, ob für Ihren Cluster ein GKE Gateway konfiguriert ist und funktioniert. Weitere Informationen finden Sie unter Gateways bereitstellen.
- Installieren Sie den Apigee-Operator für Kubernetes. Eine Installationsanleitung finden Sie unter Apigee-Operator für Kubernetes installieren.
APIMExtensionPolicy erstellen
Erstellen Sie in diesem Schritt die APIMExtensionPolicy-Datei und wenden Sie sie auf das GKE-Gateway an, das in Ihrem Cluster ausgeführt wird. Diese Richtlinie regelt den gesamten Traffic, der das Gateway und die zugehörigen HTTPRoutes durchläuft. Sie funktioniert ähnlich wie ein Flowhook auf Umgebungsebene in Apigee.
So erstellen Sie APIMExtensionPolicy:
- Erstellen Sie eine Datei mit dem Namen
global-ext-lb1-apim-policy.yamlund dem folgendem Inhalt:# 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 - Ersetzen Sie
ENV_NAMEdurch den Namen der Apigee-Umgebung, die im Installationsschritt Apigee-Umgebung erstellen erstellt wurde.Hinweis:Wenn Sie den Apigee Operator für Kubernetes mit dem Flag
generateEnv=TRUEinstallieren, ist das FeldapigeeEnvnicht erforderlich.Alle verfügbaren Umgebungen finden Sie auf der Seite „Umgebungen“ in der Google Cloud Console.
- Wenden Sie die Richtlinie an:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlSobald die Richtlinie angewendet wurde, erstellt der Apigee Operator für Kubernetes im Hintergrund Netzwerkressourcen.
- Prüfen Sie den Status von
APIMExtensionPolicymit dem folgenden Befehl:kubectl -n apim get APIMExtensionPolicyDie Ausgabe sollte in etwa so aussehen, mit einem
STATEvonRUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
Richtlinie testen
Verwenden Sie den folgenden Befehl, um eine Anfrage an das Gateway zu senden:
- Rufen Sie die IP-Adresse des Gateways ab:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IPErsetzen Sie
GATEWAY_NAMEdurch den Namen des Gateways, z. B.global-ext-lb1. - Senden Sie eine Anfrage an einen in Ihrer
HTTPRoutekonfigurierten Endpunkt:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"Ersetzen Sie
HOST_NAMEdurch den imHTTPRoutedes Gateways definierten Hostnamen, z. B.example.httpbin.com. - Die Anfrage sollte fehlschlagen, da
defaultSecurityEnabled: truein derAPIMExtensionPolicy-Ressource festgelegt wurde. Dadurch wird die Überprüfung von API-Schlüssel und Zugriffstoken aktiviert. 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.
Nächste Schritte
Apigee Hybrid
Führen Sie diese Schritte aus, wenn Sie Apigee Hybrid verwenden.
Hinweise
Bei dieser Anleitung wird davon ausgegangen, dass Sie den Apigee Operator for Kubernetes installiert haben. Folgen Sie dazu der Anleitung unter Apigee Operator for Kubernetes für Apigee Hybrid installieren.
TLS-Zertifikat-Secret erstellen
Für APIMExtensionPolicy ist das base64-codierte öffentliche Zertifikat erforderlich, das dem Hostnamen der Umgebungsgruppe zugeordnet ist. Sie haben dieses Zertifikat in Apigee Hybrid-Umgebung mit Helm installieren erstellt.
Stellen Sie dieses Zertifikat dem Operator zur Verfügung, indem Sie ein Kubernetes-Secret im Namespace apim erstellen.
- Rufen Sie den base64-codierten Zertifikatsstring aus der Datei ab, die Sie während der Installation erstellt haben:
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_ENV_GROUP.pem.base64 - Erstellen Sie eine Datei mit dem Namen
secret-cert.yamlund dem folgendem Inhalt:# secret-cert.yaml apiVersion: v1 kind: Secret metadata: name: apigee-conf namespace: apim data: ca.crt: BASE64_ENCODED_CERT_STRING - Ersetzen Sie
BASE64_ENCODED_CERT_STRINGdurch die Ausgabe descat-Befehls in Schritt 1. - Wenden Sie das Secret auf Ihren Cluster an:
kubectl apply -f secret-cert.yaml
APIMExtensionPolicy definieren und anwenden
Definieren Sie eine APIMExtensionPolicy-Ressource und wenden Sie sie auf das Istio-Gateway an, das in Ihrem Cluster ausgeführt wird. Diese Richtlinienerweiterung fängt Traffic ab, der vom Gateway und dem zugehörigen HTTPRoutes verwaltet wird, und wendet Apigee-Richtlinien an, bevor Anfragen an das Back-End-Ziel weitergeleitet werden.
- Erstellen Sie eine Datei mit dem Namen
istio-gateway-apim-policy.yamlund dem folgendem Inhalt:# istio-gateway-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: istio-gateway-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME ingressCertSecret: apigee-conf apigeeAuthority: HOST_NAME apigeeIngressIP: INGRESS_IP_ADDRESS location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied group: gateway.networking.k8s.io kind: Gateway name: istio-gateway namespace: default - Ersetzen Sie die folgenden Variablen:
ENV_NAME: Der Name der Apigee Hybrid-Umgebung, die Sie mit aktivierten Dienst-Extensions erstellt haben, z. B.my-hybrid-env.HOST_NAME: Der Domainname, der für die Umgebungsgruppe verwendet wird, z. B.my-proxies.example.com.INGRESS_IP_ADDRESS: Die Ingress-IP-Adresse für den Apigee Hybrid-Laufzeit-Ingress. Weitere Informationen zum Abrufen dieser IP-Adresse finden Sie unter Apigee-Ingress freigeben.
- Wenden Sie die Richtlinie auf Ihren Cluster an:
kubectl -n apim apply -f istio-gateway-apim-policy.yaml - Sobald die Ressource angewendet wurde, beginnt der Apigee Operator für Kubernetes mit der Konfiguration der Gateway-Netzwerkressourcen. Prüfen Sie den Status des
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - Warten Sie, bis
STATEden WertRUNNINGhat. Die Ausgabe sollte in etwa so aussehen:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Richtlinie testen
Im APIMExtensionPolicy, das im vorherigen Schritt erstellt wurde, wurde defaultSecurityEnabled auf true gesetzt. Dadurch werden automatisch Richtlinien zur Überprüfung von API-Schlüsseln und OAuth2-Tokens für Traffic aktiviert, der diesem Gateway entspricht.
Testen Sie dies, indem Sie eine nicht authentifizierte Anfrage an den Beispiel-httpbin-Dienst senden, den Sie beim Überprüfen der Istio Gateway-Einrichtung in Istio Gateway-Einrichtung überprüfen konfiguriert haben.
- Rufen Sie die IP-Adresse des Gateways ab:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io istio-gateway -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IP - Senden Sie eine Anfrage an den in Ihrer HTTPRoute konfigurierten
/get-Endpunkt:curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - Da für
defaultSecurityEnabled: trueeine Authentifizierung (z. B. ein gültiger API-Schlüssel) erforderlich ist, sollte Apigee die Anfrage mit einem Authentifizierungsfehler ablehnen. Die Antwort sollte in etwa so aussehen:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Diese Ausgabe bestätigt, dass
APIMExtensionPolicyaktiv ist und Apigee-Richtlinien vom Istio-Gateway erzwungen werden.
Nächste Schritte
Hier erfahren Sie, wie Sie API-Produkte, Entwickler und Apps erstellen, um API-Schlüssel für authentifizierte Anfragen zu erhalten: