Basispfadrouting konfigurieren

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:

  1. 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
    
  2. Führen Sie die folgenden Befehle in beliebiger Reihenfolge aus:
    1. apigeectl apply -f overrides/overrides-dev2.yaml -c udca
    2. apigeectl apply -f overrides/overrides-dev2.yaml -c synchronizer
    3. apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  3. Stellen Sie den Proxy foo2 in der Umgebung dev2 bereit.
  4. 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:

  1. Öffnen Sie die Überschreibungsdatei, die die Definition der Umgebung dev2 hat.
  2. 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
    
  3. Wenden Sie die Komponente runtime auf den Cluster an:
    apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  4. 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 Umgebung dev2 weitergeleitet werden muss.