In diesem Abschnitt wird die Verwendung von Apigee Connect (Beta) für die Kommunikation zwischen der hybriden Verwaltungsebene und dem MART-Dienst auf Laufzeitebene beschrieben.
Einführung
Apigee Connect ermöglicht es der hybriden Verwaltungsebene von Apigee, eine sichere Verbindung zum MART-Dienst auf Laufzeitebene herzustellen, ohne dass Sie den MART-Endpunkt im Internet freigeben müssen. Wenn Sie Apigee Connect verwenden, müssen Sie das MART-Ingress-Gateway nicht mit einem Host-Alias und einem autorisierten DNS-Zertifikat konfigurieren.
Vorbereitung
Apigee Hybrid Version 1.2.0 oder höher muss installiert und konfiguriert sein, bevor Sie Apigee Connect einrichten.
- Wenn Sie Apigee Hybrid zum ersten Mal installieren, folgen Sie der Installationsanleitung in der Apigee-Dokumentation.
- Wenn Sie zurzeit die Apigee-Hybridversion 1.1.x von Apigee verwenden, müssen Sie zuerst Ihre Installation auf Version 1.2.0 aktualisieren, bevor Sie fortfahren. Informationen zu den Upgradeschritten finden Sie unter Upgrade von Apigee Hybrid ausführen.
Apigee Connect zur Hybridlaufzeit hinzufügen
In diesem Abschnitt wird davon ausgegangen, dass Sie Apigee hybrid 1.2.0 oder höher installiert bzw. aktualisiert und konfiguriert haben.
Wenn Apigee Connect konfiguriert und aktiviert ist, wird der eingehende MART-Traffic ignoriert: die Verwaltungsebene verbindet sich nur über Apigee Connect mit MART. Der gesamte MART-Traffic zwischen der Hybridlaufzeitebene durchläuft die sichere Apigee Connect-Verbindung.
Führen Sie die folgenden Schritte aus, um Apigee Connect mit Apigee Hybrid zu aktivieren und zu verwenden:
- Aktivieren Sie die Apigee Connect API in der
Google Cloud API-Bibliothek. Sie können die API in der
Google Cloud (GCP) Console oder mit
gcloud
aktivieren. Informationen zum Aktivieren von APIs in der Google Cloud Console finden Sie unter Schritt 3: APIs aktivieren. So aktivieren Sie die API mitgcloud
:
$ gcloud config set project YOUR_GCP_PROJECT_ID $ gcloud services enable apigeeconnect.googleapis.com
Dabei istYOUR_GCP_PROJECT_ID
dasselbe GCP-Projekt, für das Apigee aktiviert und eine Apigee-Organisation bereitgestellt wurde. - Fügen Sie die Rolle des Apigee Connect-Agents zu dem MART-Dienstkonto hinzu, das Sie im Schritt Dienstkonten erstellen gemäß der Apigee Hybrid-Installationsanleitung erstellt haben:
$ gcloud projects add-iam-policy-binding YOUR_GCP_PROJECT_ID --member serviceAccount:YOUR_MART_SERVICE_ACCOUNT_EMAIL --role roles/apigeeconnect.Agent
Dabei istYOUR_GCP_PROJECT_ID
dasselbe GCP-Projekt, für das Apigee aktiviert und eine Apigee-Organisation bereitgestellt wurde, undYOUR_MART_SERVICE_ACCOUNT_EMAIL
ist der Name des MART-Dienstkontos. Der Name hat das Format einer E-Mail-Adresse. Beispiel:apigee-mart@my-project.iam.gserviceaccount.com
.
Die Rolle Apigee Connect-Agent ist vordefiniert und hat die folgende Berechtigung:
Permission Beschreibung apigeeconnect.endpoints.connect
Dies ist die Berechtigung zum Einrichten des Apigee Connect-Agents. Weitere Informationen zum Zuweisen von Zugriffsberechtigungen über die GCP Console oder APIs finden Sie unter:
- Achten Sie darauf, dass sich die Schlüsseldatei des MART-Dienstkontos im Verzeichnis
hybrid_files/service_accounts
befindet, wie unter Dienstkonten erstellen beschrieben. - Öffnen Sie die Überschreibungsdatei und fügen Sie die folgenden Stanzas hinzu. Für die Konfiguration müssen Sie den Pfad zum heruntergeladenen Dienstkontoschlüssel angeben. Der Schlüssel muss für ein Dienstkonto mit der Rolle Apigee Connect Agent sein.
# Apigee Connect Agent connectAgent: enabled: true serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
Fügen Sie die Stanza unter der Überschrift k8sCluster hinzu. Beispiel:
k8sCluster: name: your_cluster_name region: your_cluster_region # Apigee Connect Agent connectAgent: enabled: true serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
# Apigee Connect Agent connectAgent: enabled: true replicaCountMin: 3 serviceAccountPath: ./service-accounts/connect_agent_sa_key.json
- Suchen Sie den Dienstkontoschlüssel mit der Rolle Apigee-Organisationsadministrator, die Sie bei der ursprünglichen Installation von Apigee hybrid verwendet haben, wie im Abschnitt Synchronisierungszugriff aktivieren beschrieben. Sie benötigen diesen Schlüssel, um ein Token zu generieren, das für einen API-Aufruf erforderlich ist, wie unten erläutert.
- Führen Sie die folgenden beiden Befehle aus, um ein Token abzurufen:
$ export GOOGLE_APPLICATION_CREDENTIALS=org-admin-service-account-file $ export TOKEN=$(gcloud auth application-default print-access-token)
Dabei ist org-admin-service-account-file der Pfad in Ihrem System zum Dienstkontoschlüssel, den Sie mit der Rolle Apigee-Administrator der Organisation heruntergeladen haben. - Rufen Sie die folgende Apigee API auf, um Apigee Connect für Ihre Organisation zu aktivieren:
curl -v -X PUT \ https://apigee.googleapis.com/v1/organizations/your_org_name \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d '{ "name" : "your_org_name", "properties" : { "property" : [ { "name" : "features.hybrid.enabled", "value" : "true" }, { "name" : "features.mart.connect.enabled", "value" : "true" } ] } }'
- Starten Sie den Apigee Connect-Agent im Cluster.
$ $APIGEECTL_HOME/apigeectl apply -f your_overrides_file.yaml -c connect-agent
- Prüfen Sie das Log des Apigee Connect-Agents. Wenn keine Fehler gemeldet wurden, ist das Upgrade erfolgreich:
$ kubectl logs -n namespace apigee-connect-agent-pod-name
Der Apigee Connect-Agent meldet die folgenden Logkategorien:Audit-Logkategorie Vorgänge DATA_READ ConnectionService.ListConnections
DATA_WRITE Tether.Egress
- Installation testen
mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-project-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key
Mit diesem Upgrade kommuniziert die hybride Laufzeitebene mit Apigee Connect mit der Verwaltungsebene.
Siehe auch: Apigee Connect entfernen.
Installation testen
- Öffnen Sie die Hybrid-Benutzeroberfläche von Apigee.
- Prüfen Sie, ob alle zuvor erstellten Entwickler und Entwickler-Apps auf der Benutzeroberfläche vorhanden sind. Da diese Entitäten vom MART-Server abgefragt werden, sind sie nur vorhanden, wenn die Kommunikation zwischen den Verwaltungs- und Laufzeitebenen korrekt konfiguriert ist.
- Um sicherzustellen, dass Anfragen über Apigee Connect und nicht über den MART-Eingang geleitet werden, prüfen Sie das Log des MART-Servers. Sie sollten Einträge für den Apigee Connect-Agent mit dem Namen
apigee-connect-agent-1.0
sehen:
$ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart | grep connect
Beispiele:
"2019-12-11 04:59:52,321 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576040392317 /v1/organizations/apigee-connect-hybrid-prod/developers/ count=100&expand=true&startKey=4ee9e8f7-12b2-4cde-bf10-32d991469876 200 GET apigee-connect-hybrid-prod 10.40.11.3 10.40.0.5 apigee-connect-agent-1.0 null"
- Erstellen Sie in der Hybrid-UI ein API-Produkt, einen Entwickler und eine Entwickler-App. Prüfen Sie dann im MART-Dienstlog, ob die Einträge an die Laufzeitebene gesendet wurden. Der folgende Logeintrag zeigt beispielsweise, dass das API-Produkt
foo-product
empfangen wurde:
$ kubectl logs -n apigee apigee-mart-orgname-rc101-q72tl -c apigee-mart
2019-12-16 22:15:29,572 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534529566 /v1/organizations/myorg/apiproducts/foo-product/ -NA- 201 CREATE myorg 10.16.1.61 10.16.1.64 apigee-connect-agent-1.0 null 2019-12-16 22:15:30,412 org: env: target: action: context-id: mode: pool-1-thread-1 INFO MART_AUDITLOG - MartAuditListener.eventOccurred() : Type:Audit edge-gaambo-controlplane@system.gserviceaccount.com 1576534530407 /v1/organizations/myorg/apps/ apiProduct=foo-product&expand=false 200 GET myorg 10.16.1.61 10.16.1.64 apigee-connect-agent-1.0 null
- Versuchen Sie, einen neuen Proxy zu erstellen und bereitzustellen, wie unter Proxy erstellen und bereitstellen beschrieben.
- Konfigurieren Sie Ihren Proxy mit der API-Schlüsselprüfung. Folgen Sie dazu den Schritten unter API-Proxy durch Anforderung von API-Schlüsseln schützen. Die Laufzeit erhält die Daten, die zum Prüfen eines API-Schlüssels von der Verwaltungsebene über Apigee Connect erforderlich sind. Wenn die API-Schlüsselüberprüfung funktioniert, wissen Sie also, dass Apigee Connect ordnungsgemäß funktioniert. Sie können auch die Apigee Connect-Logs aufrufen, um einen Bericht der Datenübertragungen zu sehen.
Apigee Connect entfernen
Wenn Sie die Apigee Connect-Bereitstellung löschen, kann der Pod bis zu sieben Minuten im Status "Wird beendet" bleiben. Diese Zeitspanne wird erwartet. Apigee Connect-Agents warten, bis die vorhandenen Verbindungen ablaufen, anstatt sie plötzlich zu stoppen. Durch die Verzögerung wird gewährleistet, dass Inflight-Anfragen nicht verloren gehen.