Configura el enrutamiento de la ruta base

En este tema, se analiza el enrutamiento de la ruta base. El enrutamiento de la ruta base te permite configurar y administrar la forma en que el servicio de Apigee de Hybrid enruta llamadas proxy de API al entorno correcto.

Usa elenrutamiento de ruta base para administrar implementaciones de proxy

Debido a que puedes asignar un solo host virtual a varios entornos en Apigee Hybrid, necesitas una manera de especificar qué ruta de proxy base se asigna a qué entorno.

Por ejemplo, supongamos que deseas asignar dos entornos al mismo alias de host: apitest.mydomain.net. En el archivo de anulación, puedes crear la siguiente configuración en la que los entornos dev1 y dev2 se asignan a este host. Por ejemplo:

envs:
  - name: dev1
    hostAlias: "apitest.mydomain.net"
    ...
  - name: dev2
    hostAlias: "apitest.mydomain.net"
    ...

Ahora, supongamos que implementas proxies para estos entornos. Implementas:

  • Proxy foo1 con la ruta base /foo1 a dev1
  • Proxy foo2 con la ruta base /foo2 a dev2

Supongamos que un cliente llama a esta API: https://apitest.mydomain.net/foo1. Ten en cuenta que no hay nada en esta ruta (o en el encabezado de host que se genera para la solicitud) que le indique a qué entorno híbrido enrutar la llamada. ¿El proxy foo1 se implementa en dev1 o dev2? Según la URL de la solicitud, no hay forma de saberlo. Debes asignar explícitamente cada una de estas rutas base a uno o más entornos.

Para especificar a qué entorno se debe enrutar una llamada del proxy, agrega la propiedad paths.uri.prefixes a la propiedad envs en tu archivo de anulaciones, como se muestra en el siguiente ejemplo:

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
    ...

Ahora, cuando ingresa una llamada a la API, como https://apitest.mydomain.net/foo1, el router de entrada sabe adónde enviarla. Sabe que el proxy /foo1 se implementa en el entorno dev1, y la llamada se enruta al procesador de mensajes de dev1.

Si envías esta llamada, https://apitest.mydomain.net/foo2, también se enruta al MP del entorno dev2, y así sucesivamente.

En resumen, la configuración paths.uri.prefixes te permite administrar implementaciones de proxy entre varios entornos que comparten el mismo alias de host.

Práctica recomendada: Usa el enrutamiento de ruta de acceso base cuando desees que varios entornos compartan el mismo alias de host. El enrutamiento de ruta base te permite limitar la cantidad de proxies implementados en un solo entorno. Para obtener más información, consulta Limita la cantidad de implementaciones de proxy.

Agrega un nuevo entorno al mismo dominio

En esta sección, se explica cómo agregar un entorno nuevo a un dominio.

En esta situación, supón que ya tienes un entorno dev1 ya implementado en el clúster. En esta configuración de ejemplo, solo se permiten los proxies con el prefijo de ruta base /foo1:

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

Para agregar otro entorno que comparta el mismo dominio, sigue estos pasos:

  1. Crea un archivo de anulaciones nuevo con la nueva configuración del entorno. Por ejemplo, esta configuración crea un entorno llamado dev2. En este entorno, solo se permiten los proxies con el sufijo de ruta /foo2:
    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. Ejecuta los siguientes comandos en cualquier orden:
    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. Implementa el proxy foo2 en el entorno dev2.
  4. Llama al proxy para probar la configuración.
    curl https://apitest.mydomain.net/foo2

Agrega una nueva ruta base del proxy a un entorno existente

Para agregar una nueva ruta base a un entorno existente, simplemente agrega una entrada prefixes por cada ruta base nueva. Por ejemplo, si creas un proxy nuevo con la ruta base /foo4 y deseas implementarlo en el entorno denominado dev2, sigue estos pasos:

  1. Abre el archivo de anulación que tiene la definición del entorno dev2.
  2. Agrega la ruta base /foo4 al elemento paths.uri.prefixes:
    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. Aplica el componente runtime al clúster:
    apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
  4. Llama al proxy para probar la configuración.
    curl https://apitest.mydomain.net/foo4

    Si ingresa una llamada a la API para https://apitest.mydomain.net/foo4, Apigee Hybridla enruta al entorno dev2.