Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.
En este ejemplo, se muestra cómo usar el adaptador de Apigee para Envoy mediante la instalación y ejecución de Envoy de forma local, no dentro de un clúster de Kubernetes. Puedes seguir el ejemplo de este documento para las instalaciones de Apigee y Apigee Hybrid.
Las llamadas al proxy de API pasan por Envoy ejecutándose como una aplicación nativa. Apigee proporciona servicios de administración de API, como la creación de aplicaciones de desarrolladores y productos de API. Envoy se comunica con el plano de administración de Apigee a través del servicio remoto del adaptador. El adaptador también envía los datos de estadísticas a Apigee, donde puedes verlos en Apigee Analytics.
Requisitos previos
Antes de comenzar: |
---|
|
|
Verifica tu configuración de gcloud
- Verifica que tu configuración de
gcloud
esté establecida en el proyecto de Google Cloud asociado con tu organización de Apigee.Para mostrar una lista de la configuración actual, haz lo siguiente. Consulta también gcloud config.
gcloud config list
Si es necesario, configura el ID del proyecto de Google Cloud correcto con este comando:
gcloud config set project project-id
- Debes estar autenticado con el SDK de Google Cloud (gcloud) para tu proyecto de Google Cloud. Consulta también gcloud auth login.
gcloud auth login
Aprovisiona Apigee
En este paso, usarás la CLI del servicio remoto a fin de aprovisionar los recursos del adaptador de Apigee para Envoy a Apigee. El comando de aprovisionamiento implementa los proxies de API que se usan para las operaciones del adaptador de Apigee, configura un certificado en Apigee y genera credenciales que el servicio remoto usará para conectarse de forma segura desde tu sistema a Apigee.
- Ve al directorio
$CLI_HOME
:cd $CLI_HOME
- De forma predeterminada, el adaptador busca las credenciales de la cuenta de servicio predeterminadas en tu proyecto de Google Cloud para obtener permiso de enviar datos de estadísticas a Apigee (opcional). Si no deseas usar las credenciales de la cuenta de servicio predeterminadas, puedes crear una cuenta de servicio y hacer referencia a su clave en el comando de aprovisionamiento. La cuenta de servicio del controlador debe tener la función
apigee.analyticsAgent
. Para obtener instrucciones, consulta Crea y administra cuentas de servicio. - Crea las siguientes variables de entorno: Estas variables se usarán como parámetros en la secuencia de comandos de aprovisionamiento:
export ORG=organization_name
export ENV=environment_name
export RUNTIME=host_alias_url
export NAMESPACE=hybrid_runtime_namespace
## Apigee hybrid onlyexport AX_SERVICE_ACCOUNT=analytics_service_account
## OptionalAquí:
Variable Descripción organization_name El nombre de tu organización de Apigee. environment_name El nombre de un entorno de tu organización. host_alias_url - En el caso de Apigee Hybrid, una URL que incluye
hostAlias
para un host virtual definido en la configuración de Hybrid. - Para Apigee, un nombre de host del grupo de entornos que incluye el entorno. Puedes encontrar grupos de entornos en la IU de Apigee en Administrador > Entornos > Grupos.
Nota: La URL debe comenzar con
https://
. Por ejemplo:https://apitest.mydomain.net
hybrid_runtime_namepace El espacio de nombres en el que se implementan los componentes del entorno de ejecución de Hybrid (solo para Apigee Hybrid). Nota: El espacio de nombres predeterminado para una implementación híbrida es
apigee
.analytics_service_account La ruta a un archivo JSON de clave de cuenta de servicio de Google Cloud que tiene la función Apigee Analytics Agent
. Para obtener una descripción detallada de este parámetro, consulta Comando de aprovisionamiento. - En el caso de Apigee Hybrid, una URL que incluye
- Si no eres propietario del proyecto de Google Cloud asociado con la organización de Apigee, asegúrate de que tu cuenta de usuario de Google Cloud incluya la función de Administrador de la organización de Apigee o las funciones Creador de API e Implementador. Consulta Otorga, cambia y revoca el acceso a recursos.
- Obtén un token de acceso:
TOKEN=$(gcloud auth print-access-token);echo $TOKEN
- Aprovisiona el proxy de servicio remoto a Apigee. El resultado del comando se redirecciona a un archivo de configuración que usarás en un paso posterior.
Si no realizas la actualización, usa este comando para aprovisionar a Apigee: Si aprovisionas a Apigee Hybrid, asegúrate de agregar el parámetro
--namespace $NAMESPACE
:./apigee-remote-service-cli provision --organization $ORG --environment $ENV \ --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
Si actualizas, usa este comando con la marca
--force-proxy-install
para aprovisionar a Apigee. Si aprovisionas a Apigee Hybrid, asegúrate de agregar el parámetro--namespace $NAMESPACE
:./apigee-remote-service-cli provision --force-proxy-install --organization $ORG --environment $ENV \ --runtime $RUNTIME --analytics-sa $AX_SERVICE_ACCOUNT --token $TOKEN > config.yaml
- Verifica el contenido del archivo
config.yaml
. Debería verse algo similar a esto:# Configuration for apigee-remote-service-envoy (platform: Google Cloud) # generated by apigee-remote-service-cli provision on 2020-11-20 02:49:28 apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: remote_service_api: https://apitest.mydomain.com/remote-service org_name: my-org env_name: test analytics: collection_interval: 10s auth: jwt_provider_key: https://apitest.mydomain.com/remote-service/token --- apiVersion: v1 kind: Secret metadata: name: my-org-new-test-policy-secret namespace: apigee type: Opaque data: remote-service.crt: eyJrZXlzIjpbeyJrdHkiOiJSU0EiLCJhbGci... remote-service.key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURS... remote-service.properties: a2lkPTIwMjAtMDctMDZ... --- apiVersion: v1 kind: Secret metadata: name: my-org-new-test-analytics-secret namespace: apigee type: Opaque data: client_secret.json: ewogICJ0eXBlIjogInNlcnZ... --- apiVersion: v1 kind: ServiceAccount metadata: name: apigee-remote-service-envoy namespace: apigee
Ejecuta apigee-remote-service-envoy
Puedes ejecutar el servicio remoto como un objeto binario nativo o en Docker.
Ejecuta el servicio de forma nativa
Ejecuta el objeto binario del servicio con el archivo de configuración que mostró el comando de aprovisionamiento:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml
Ejecuta el servicio en Docker
Las imágenes de Docker se publican con etiquetas de la versión. Para esta instalación, usa la versión más reciente. Existen tres variantes de imágenes para elegir:
Variante | Imagen |
---|---|
distroless de Google | google/apigee-envoy-adapter:v2.0.3 |
Ubuntu | google/apigee-envoy-adapter:v2.0.3-ubuntu |
Ubuntu con Boring Crypto | google/apigee-envoy-adapter:v2.0.3-boring |
Por ejemplo, para ejecutar la imagen inicial con tu config.yaml
local disponible como /config.yaml
a través de una activación de volumen, usa este comando:
docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.3
Crea un archivo de configuración de Envoy de muestra
Genera un archivo de configuración de Envoy de muestra mediante la CLI:
- Asegúrate de estar en el directorio
$ENVOY_HOME
. - Enumera las plantillas de configuración disponibles:
$CLI_HOME/apigee-remote-service-cli samples templates
Ejecuta el comando de muestras. Para TEMPLATE, sustituye una de las plantillas de Envoy compatibles:
$CLI_HOME/apigee-remote-service-cli samples create --template TEMPLATE -c ./config.yaml
El comando crea el archivo
./samples/envoy-config.yaml
.
Para obtener más información, consulta Comando de muestra.
Instala y ejecuta el proxy de Envoy
Sigue estos pasos para instalar y ejecutar el proxy de Envoy:
- Descarga un objeto binario de Envoy o compílalo.
- Ejecuta Envoy mediante un archivo de configuración de muestra que generaste antes para el servicio
httpbin.org
:envoy -c ./samples/envoy-config.yaml
Prueba la instalación
- Configura un producto de API y obtén una clave de API como se explica en Obtén una clave de API.
- Llama al servicio
httpbin
sin una clave de API:curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
Ahora, el servicio es administrado por Apigee y, como no proporcionaste una clave de API, la llamada muestra el siguiente error.
curl -i http://localhost:8080/headers -H "HOST:httpbin.org" HTTP/1.1 403 Forbidden date: Tue, 12 May 2020 17:51:36 GMT server: envoy content-length: 0 x-envoy-upstream-service-time: 11
- Realiza una llamada a la API con la clave:
export APIKEY=YOUR_API_KEY
curl -i http://localhost:8080/headers -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"
La llamada debería ser exitosa y tener un estado 200; además, se debe mostrar una lista de encabezados en la respuesta. Por ejemplo:
curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS" HTTP/1.1 200 OK server: envoy date: Tue, 12 May 2020 17:55:34 GMT content-type: application/json content-length: 828 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 301 { "headers": { "Accept": "*/*", "Content-Length": "0", "Host": "httpbin.default.svc.cluster.local", "User-Agent": "curl/7.70.0-DEV", "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS", "X-Apigee-Accesstoken": "", "X-Apigee-Api": "httpbin.default.svc.cluster.local", "X-Apigee-Apiproducts": "httpbin", "X-Apigee-Application": "httpbin", "X-Apigee-Authorized": "true", "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS", "X-Apigee-Developeremail": "user@mydomain.com", "X-Apigee-Environment": "test", "X-Apigee-Organization": "my-org", "X-Apigee-Scope": "", "X-B3-Parentspanid": "1476f9a2329bbdfa", "X-B3-Sampled": "0", "X-B3-Spanid": "1ad5c19bfb4bc96f", "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa" } }
Desinstala el adaptador de Envoy de Apigee
Para quitar una instalación del adaptador de Envoy de Apigee, haz lo siguiente:
- Siempre que elijas ejecutar el adaptador de Envoy (de forma nativa o en Docker), quítalo.
- Borra los proxies remote-service y remote-token de tus entornos de Apigee. Consulta Borra un proxy de API.
- Quita los productos de API sin usar o las operaciones que usan los casos de uso del adaptador de Envoy. Consulta Borra un producto de API.
Próximos pasos
Ahora, Apigee administra el tráfico de la API al servicio httpbin
. Estas son algunas de las funciones que puedes explorar y probar:
- Accede a Apigee Analytics en la IU de Edge. Ve a Analizar > Métricas de la API > Rendimiento del proxy de API.
- Explora las opciones de la CLI en la Referencia.