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:
- 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
- Ejecuta los siguientes comandos en cualquier orden:
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
- Implementa el proxy foo2 en el entorno dev2.
- 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:
- Abre el archivo de anulación que tiene la definición del entorno dev2.
- Agrega la ruta base
/foo4
al elementopaths.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
- Aplica el componente
runtime
al clúster:apigeectl apply -f overrides/overrides-dev2.yaml -c runtime
- 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 entornodev2
.