In diesem Thema wird das Basispfadrouting erläutert. Mit dem Basispfadrouting können Sie konfigurieren und verwalten, wie API-Proxy-Aufrufe von Apigee hybrid über die richtige Umgebung weitergeleitet werden.
Proxybereitstellungen mit Basispfadrouting verwalten
Da Sie einen einzelnen virtuellen Host in mehreren Umgebungen in hybrid zuordnen können, müssen Sie festlegen können, welcher Proxy-Basispfad der jeweiligen Umgebung zugeordnet wird.
Angenommen, Sie möchten zwei Umgebungen demselben Host-Alias zuordnen: apitest.mydomain.net
. In Ihrer Überschreibungen-Datei können Sie die folgende Konfiguration erstellen, in der die Umgebungen dev1 und dev2 diesem Host zugeordnet sind. Beispiel:
envs: - name: dev1 hostAlias: "apitest.mydomain.net" ... - name: dev2 hostAlias: "apitest.mydomain.net" ...
Angenommen, Sie stellen Proxys in diesen Umgebungen bereit. Sie stellen Folgendes bereit:
- Proxy foo1 mit dem Basispfad /foo1 in dev1
- Proxy foo2 mit dem Basispfad /foo2 in dev2
Angenommen, ein Client ruft diese API auf: https://apitest.mydomain.net/foo1
. In diesem Pfad (oder der Hostheader, der für die Anfrage generiert wird) ist nichts, das dem Hybridvorgang mitteilt, in welche Umgebung der Aufruf weitergeleitet werden soll. Wurde der Proxy foo1 für dev1 oder dev2 bereitgestellt?
Ausgehend von der Anfrage-URL ist dies nicht möglich. Sie müssen jeden dieser Basispfade explizit einer oder mehreren Umgebungen zuordnen.
Sie geben an, an welche Umgebung ein Proxyaufruf weitergeleitet werden soll, indem Sie wie im folgenden Beispiel in Ihrer Überschreibungen-Datei dem Attribut envs
das Attribut paths.uri.prefixes
hinzufügen:
gcpProjectID: example k8sClusterName: apigee-hybrid # Apigee org name. org: my-org envs: # Apigee environment name. - name: dev1 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo1 - name: dev2 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo2 ...
Wenn jetzt ein API-Aufruf wie https://apitest.mydomain.net/foo1
eingeht, weiß der Ingress-Router, wohin der Aufruf gesendet werden soll. Er weiß, dass der /foo1-Proxy in dev1 bereitgestellt wurde. Der Aufruf wird an den Message Processor von dev1 weitergeleitet.
Wenn Sie diesen Aufruf mit https://apitest.mydomain.net/foo2
senden, wird er auch an den MP der dev2
-Umgebung weitergeleitet usw.
Sie können also mit der paths.uri.prefixes
-Konfiguration Proxybereitstellungen in mehreren Umgebungen verwalten, die den gleichen Hostalias haben.
Best Practice: Verwenden Sie das Routing des Basispfads, wenn mehrere Umgebungen denselben Hostalias verwenden sollen. Mit der Basispfadweiterleitung können Sie die Anzahl der Proxys beschränken, die in einer einzelnen Umgebung bereitgestellt werden. Weitere Informationen finden Sie unter Anzahl der Proxybereitstellungen begrenzen.
Neue Umgebung zu derselben Domain hinzufügen
In diesem Abschnitt wird erläutert, wie Sie einer Domain eine neue Umgebung hinzufügen.
In diesem Szenario wird davon ausgegangen, dass bereits eine Umgebung dev1
für den Cluster bereitgestellt ist. In dieser Beispielkonfiguration sind nur Proxys mit dem Basispfadpräfix /foo1
zulässig:
gcpProjectID: example k8sClusterName: apigee-hybrid # Apigee org name. org: my-org envs: # Apigee environment name. - name: dev1 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo1 mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key metrics: serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
So fügen Sie eine weitere Umgebung mit derselben Domain hinzu:
- Erstellen Sie eine neue Überschreibungen-Datei mit der neuen Umgebungskonfiguration. Mit dieser Konfiguration wird beispielsweise eine Umgebung mit dem Namen
dev2
erstellt. In dieser Umgebung sind nur Proxys mit dem Pfadsuffix/foo2
zulässig:gcpProjectID: example k8sClusterName: apigee-hybrid # Apigee org name. org: my-org envs: # Apigee environment name. - name: dev2 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo2 mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key metrics: serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
- Führen Sie die folgenden Befehle in beliebiger Reihenfolge aus:
apigeectl apply -f overrides/overrides-dev2.yaml -c udca
apigeectl apply -f overrides/overrides-dev2.yaml -c synchronizer
apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
- Stellen Sie den Proxy foo2 in der Umgebung dev2 bereit.
- Rufen Sie den Proxy auf, um die Einrichtung zu testen.
curl https://apitest.mydomain.net/foo2
Neuen Proxy-Basispfad zu einer vorhandenen Umgebung hinzufügen
Wenn Sie einen neuen Basispfad zu einer vorhandenen Umgebung hinzufügen möchten, fügen Sie einfach für jeden neuen Basispfad einen prefixes
-Eintrag hinzu. Wenn Sie beispielsweise einen neuen Proxy mit dem Basispfad /foo4 erstellen und ihn in der Umgebung dev2 bereitstellen möchten, führen Sie folgende Schritte aus:
- Öffnen Sie die Überschreibungsdatei, die die Definition der Umgebung dev2 hat.
- Fügen Sie dem Element
paths.uri.prefixes
den Basispfad/foo4
hinzu:gcpProjectID: example k8sClusterName: apigee-hybrid # Apigee org name. org: my-org envs: # Apigee environment name. - name: dev2 hostAlias: "apitest.mydomain.net" sslCertPath: ./certs/keystore.pem sslKeyPath: ./certs/keystore.key serviceAccountPaths: synchronizer: ./service-accounts/example-apigee-synchronizer.json udca: ./service-accounts/example-apigee-udca.json paths: uri: prefixes: - /foo2 - /foo4 mart: hostAlias: "mart.apigee-hybrid-docs.net" serviceAccountPath: ./service-accounts/example-apigee-mart.json sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.key metrics: serviceAccountPath: ./service-accounts/willwitman-istio-25240157d44a.json
- Wenden Sie die Komponente
runtime
auf den Cluster an:apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
- Rufen Sie den Proxy auf, um die Einrichtung zu testen.
curl https://apitest.mydomain.net/foo4
Wenn ein API-Aufruf für
https://apitest.mydomain.net/foo4
eingeht, weiß hybrid, dass er an die Umgebungdev2
weitergeleitet werden muss.