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 instalando y ejecutando Envoy de forma local, no en 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 se realizan a través de Envoy, que se ejecuta como una aplicación nativa. Apigee ofrece servicios de gestión de APIs, como la creación de productos de API y aplicaciones para desarrolladores. Envoy se comunica con el plano de gestión de Apigee a través del servicio remoto del adaptador. El adaptador también envía datos analíticos a Apigee, donde puede consultarlos en Apigee Analytics.
Requisitos previos
Antes de empezar: |
---|
|
.
|
|
Comprobar la configuración de gcloud
- Comprueba que la configuración de
gcloud
esté definida en el proyecto de Google Cloud asociado a tu organización de Apigee.Para mostrar la configuración actual. Consulta también gcloud config.
gcloud config list
Si es necesario, define el ID de proyecto de Google Cloud correcto con este comando:
gcloud config set project project-id
- Debes autenticarte con el SDK de Google Cloud (gcloud) en tu proyecto de Google Cloud. Consulta también gcloud auth login.
gcloud auth login
Aprovisionar Apigee
En este paso, utilizará la CLI de servicio remoto para aprovisionar recursos de Apigee Adapter for Envoy en 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 las credenciales que el servicio remoto usará para conectarse de forma segura desde tu sistema a Apigee.
- Ve al directorio
$CLI_HOME
:cd $CLI_HOME
- (Opcional) De forma predeterminada, el adaptador busca las credenciales de la cuenta de servicio predeterminada en tu proyecto de Google Cloud para obtener permiso para enviar datos analíticos a Apigee. Si no quieres usar las credenciales de la cuenta de servicio predeterminada, puedes crear una cuenta de servicio y hacer referencia a su clave en el comando de aprovisionamiento. La cuenta de servicio debe tener el rol
apigee.analyticsAgent
. Para ver instrucciones, consulta el artículo Crear y gestionar cuentas de servicio. - Crea las siguientes variables de entorno. Estas variables se usarán como
parámetros de 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
## OptionalDonde:
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 Apigee Hybrid, una URL que incluye el
hostAlias
de un host virtual definido en tu configuración híbrida. - En Apigee, un nombre de host del grupo de entornos que incluye el entorno. Puede encontrar grupos de entornos en la interfaz de Apigee, en Administrar > Entornos > Grupos.
Nota: La URL debe empezar por
https://
. Por ejemplo:https://apitest.mydomain.net
hybrid_runtime_namepace (Solo Apigee Hybrid) El espacio de nombres en el que se implementan los componentes del entorno de ejecución de Hybrid. Nota: El espacio de nombres predeterminado de una implementación híbrida es
apigee
.analytics_service_account (Opcional) Ruta a un archivo JSON de clave de cuenta de servicio de Google Cloud que tenga el rol Apigee Analytics Agent
. Para obtener una descripción detallada de este parámetro, consulta Provision command (Comando Provision). - En Apigee Hybrid, una URL que incluye el
- Si no eres propietario del proyecto de Google Cloud asociado a la organización de Apigee, asegúrate de que tu cuenta de usuario de Google Cloud incluya el rol Administrador de la organización de Apigee o los roles Creador de APIs y Implementador. Consulta cómo conceder, cambiar y revocar el acceso a los recursos.
- Obtén un token de acceso:
TOKEN=$(gcloud auth print-access-token);echo $TOKEN
- Proporciona el proxy de servicio remoto a Apigee. La salida del comando se redirige a un archivo de configuración
que usarás en un paso posterior.
Si no vas a actualizar, usa este comando para aprovisionar Apigee. Si vas a aprovisionar Apigee hybrid, asegúrate de añadir 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 vas a actualizar, usa este comando con la marca
--force-proxy-install
para aprovisionar Apigee. Si vas a aprovisionar Apigee hybrid, asegúrate de añadir 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
- Comprueba el contenido del archivo
config.yaml
. Debería tener un aspecto similar a este:# 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
- Si usas Apigee Hybrid, aplica la configuración del servicio (el archivo que genera el comando de aprovisionamiento) al clúster en el que se instaló Apigee Hybrid en el paso 1: Crea un clúster.
Ejecutar apigee-remote-service-envoy
Puedes ejecutar el servicio remoto como un archivo binario nativo o en Docker.
Ejecutar el servicio de forma nativa
Ejecuta el archivo binario del servicio con el archivo de configuración que ha generado el comando de aprovisionamiento:
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml
Ejecutar el servicio en Docker
Las imágenes de Docker se publican con etiquetas de lanzamiento. Para esta instalación, usa la versión más reciente. Puedes elegir entre tres variaciones de imagen:
Variación | Imagen |
---|---|
Google distroless | 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 scratch con tu config.yaml
local disponible como /config.yaml
mediante un montaje de volumen, usa este comando:
docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v2.0.3
Crear un archivo de configuración de Envoy de ejemplo
Genera un archivo de configuración de Envoy de ejemplo con la CLI:
- Asegúrate de que estás en el directorio
$ENVOY_HOME
. - Lista las plantillas de configuración disponibles:
$CLI_HOME/apigee-remote-service-cli samples templates
Ejecuta el comando de ejemplo. Sustituye TEMPLATE por una de las plantillas de Envoy admitidas:
$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 el comando Samples.
Instalar y ejecutar el proxy de Envoy
Sigue estos pasos para instalar y ejecutar el proxy de Envoy:
- Descarga un binario de Envoy o compílalo.
- Ejecuta Envoy con un archivo de configuración de ejemplo que hayas generado anteriormente para el servicio
httpbin.org
:envoy -c ./samples/envoy-config.yaml
Probar la instalación
- Configura un producto de API y obtén una clave de API, tal como se explica en el artículo Cómo obtener una clave de API.
- Llama al servicio
httpbin
sin una clave de API:curl -i http://localhost:8080/headers -H "HOST:httpbin.org"
Ahora, Apigee gestiona el servicio y, como no has proporcionado una clave de API, la llamada devuelve 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
- Haz 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 realizarse correctamente con el estado 200 y devolver 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" } }
Desinstalar el adaptador de Apigee Envoy
Para eliminar una instalación del adaptador de Apigee Envoy:
- Quítalo de donde hayas elegido ejecutar el adaptador de Envoy (de forma nativa o en Docker).
- Elimina los proxies remote-service y remote-token de tus entornos de Apigee. Consulta Eliminar un proxy de APIs.
- Elimina los productos de API o las operaciones que no utilicen los casos prácticos del adaptador de Envoy. Consulta la sección sobre cómo eliminar un producto de API.
Pasos siguientes
Apigee gestiona 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 interfaz de usuario de Edge. Ve a Analizar > Métricas de la API > Rendimiento del proxy de la API.
- Consulta las opciones de la CLI en la referencia.