Configurar el enrutamiento de la ruta base

En este tema se explica el enrutamiento de la ruta base. El enrutamiento de la ruta base te permite configurar y gestionar cómo Apigee Hybrid enruta las llamadas de proxy de API al entorno correcto.

Usar el enrutamiento de la ruta base para gestionar las implementaciones de proxy

Como puedes asignar un solo host virtual a varios entornos en un entorno híbrido, necesitas una forma de especificar qué ruta base de proxy se asigna a qué entorno.

Por ejemplo, supongamos que quieres asignar dos entornos al mismo alias de host: apitest.mydomain.net. En el archivo de anulaciones, puedes crear la siguiente configuración, donde 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"
    ...

Supongamos que despliega proxies en estos entornos. Implementas:

  • Proxy foo1 con ruta base /foo1 a dev1
  • Proxy foo2 con 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 (ni en el encabezado de host que se genera para la solicitud) que indique a la aplicación híbrida a qué entorno debe dirigir la llamada. ¿El proxy foo1 se ha implementado en dev1 o dev2? No se puede saber solo con la URL de la solicitud. Debes asignar explícitamente cada una de estas rutas base a uno o varios entornos.

Para especificar a qué entorno se debe enrutar una llamada de proxy, añade 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 se recibe una llamada a la API, como https://apitest.mydomain.net/foo1, el enrutador de entrada sabe a dónde enviarla. Sabe que el proxy /foo1 se ha desplegado en el entorno dev1 y la llamada se dirige al procesador de mensajes de dev1.

Si envías esta llamada, https://apitest.mydomain.net/foo2, se dirigirá al MP del entorno dev2, y así sucesivamente.

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

Práctica recomendada: Usa el enrutamiento de ruta base cuando quieras que varios entornos compartan el mismo alias de host. El enrutamiento de ruta base te permite limitar el número de proxies desplegados en un solo entorno. Para obtener más información, consulta Limitar el número de implementaciones de proxy.

Añadir un nuevo entorno al mismo dominio

En esta sección se explica cómo añadir un nuevo entorno a un dominio.

En este caso, supongamos que ya has desplegado un entorno dev1 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 añadir otro entorno que comparta el mismo dominio, sigue estos pasos:

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

Añadir una nueva ruta base de proxy a un entorno

Para añadir una nueva ruta base a un entorno, solo tienes que añadir una entrada prefixes por cada ruta base. Por ejemplo, si creas un proxy con la ruta base /foo4 y quieres desplegarlo en el entorno llamado dev2, sigue estos pasos:

  1. Abre el archivo de anulaciones que tiene la definición del entorno dev2.
  2. Añada 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 se recibe una llamada a la API para https://apitest.mydomain.net/foo4, la solución híbrida sabe que debe enrutarla al entorno dev2.