Guía de operaciones

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

Cómo obtener una clave de API

En el ejemplo siguiente, se explica cómo obtener una clave de API que puedes usar a fin de validar las llamadas a la API a un servicio de destino que se envían mediante Apigee Adapter for Envoy.

1. Accede a Apigee

  1. Abre la IU de Apigee en un navegador.
  2. Una vez que estés en la IU, selecciona la misma organización que usaste para configurar Apigee Adapter for Envoy.

2. Crear un desarrollador

Puedes usar un desarrollador existente para realizar pruebas o crear uno nuevo de la siguiente manera:

  1. Selecciona Publicar > Desarrolladores en el menú de navegación lateral.
  2. Haz clic en + Desarrollador.
  3. Completa el diálogo para crear un nuevo desarrollador. Puedes usar cualquier nombre de desarrollador o correo electrónico que desees.

3. Crear un producto de API

Sigue el ejemplo de creación de productos que se muestra a continuación. Consulta también Información acerca de la configuración de los productos de la API.

  1. Selecciona Publicar > Productos de API en el menú de navegación lateral.
  2. Haz clic en +Crear.
  3. Completa la página Detalles del producto como se indica a continuación. No hagas clic en Guardar hasta que se te indique que lo hagas.
    Campo Valor
    Nombre httpbin-product
    Nombre visible httpbin product
    Entorno your_environment

    Configúralo en el entorno que usaste cuando aprovisionaste el adaptador de Apigee para Envoy con la apigee-remote-service-cli.

    Acceder Private
    Cuota 5 solicitudes cada minuto

    Consulta también Acerca de los productos de API.

  4. En la sección Atributos personalizados, haz clic en + AGREGAR UN ATRIBUTO PERSONALIZADO.
  5. Ingresa este par nombre/valor:
    • Nombre: Ingrese este nombre de atributo: apigee-remote-service-targets.
    • Valor: Ingresa el nombre del servicio de destino. Por ejemplo: httpbin.org
  6. Haga clic en OK.
  7. Haz clic en Guardar.

4. Crear una app de desarrollador

  1. Selecciona Publicar > Apps en el menú de navegación lateral.
  2. Haga clic en + Aplicación.
  3. Completa la página de Aplicación para desarrolladores de la siguiente manera. No guardes hasta que se te indique.
  4. Nombre httpbin-app
    Nombre visible httpbin app
    Programador Selecciona el desarrollador que creaste anteriormente o elige cualquier desarrollador que desees de la lista.
  5. En la sección Credenciales, haz clic en + Agregar producto y selecciona el producto que acabas de configurar: httpbin-product.
  6. Haga clic en Crear.
  7. En Credenciales, haz clic en Mostrar junto a Clave.
  8. Copia el valor de la clave generada. Este valor es la clave de API que usarás para realizar llamadas a la API en el servicio httpbin.

Productos de la API

Los productos de API son el punto de control principal del servicio remoto de Apigee. Cuando creas un producto de API y lo vinculas a un servicio de destino, creas una política que se aplicará a cualquier solicitud que configures para que el adaptador de Apigee para Envoy controle.

Definición del producto de API

Cuando defines un producto de API en Apigee, puedes configurar una cantidad de parámetros que se usarán para evaluar las solicitudes:

  • Target
  • Ruta de la solicitud
  • Cuota
  • Permisos de OAuth

Objetivos de Service remotos

La definición del producto de API se aplicará a una solicitud si la solicitud coincide con la vinculación objetivo (por ejemplo, httpbin.org) y la ruta de la solicitud (por ejemplo, /httpbin). Una lista de objetivos posibles se almacena como un atributo en el Producto de API.

De forma predeterminada, el servicio remoto de Apigee comprueba el encabezado especial :authority (host) de Envoy en su lista de objetivos, pero se puede configurar para que use otros encabezados.

Ruta de acceso de los recursos de API

La ruta de acceso ingresada coincide según las siguientes reglas:

  • Una sola barra (/) por sí sola coincide con cualquier ruta.
  • * es válido en cualquier lugar y coincide con un segmento (entre barras).
  • ** es válido al final y coincide con cualquier elemento al final de la línea.

Cuota

Una cuota especifica la cantidad de mensajes de solicitud que una aplicación puede enviar a una API durante una hora, un día, una semana o un mes. Cuando una app alcanza su límite de cuota, se rechazan las llamadas a la API posteriores.

Casos de uso de cuotas

Las cuotas te permiten aplicar la cantidad de solicitudes que un cliente puede realizar a un servicio en un período determinado. Las cuotas suelen usarse para aplicar contratos comerciales o ANS con desarrolladores y socios, en lugar de la administración de tráfico operativo. Por ejemplo, una cuota podría usarse para limitar el tráfico de un servicio gratuito, a la vez que permite el acceso completo a los clientes que pagan.

La cuota se define en un producto de API

Los parámetros de cuota se configuran en productos de API. Por ejemplo, cuando creas un producto de API, tienes la opción de configurar el límite de cuota, la unidad de tiempo y el intervalo permitidos.

Configura un límite de cuota en la IU de Apigee.>

Debido a que las claves de API se asignan a los productos de API, cada vez que se verifica una clave de API, se puede reducir el contador de cuotas adecuado (si se define una cuota en el producto asociado).

A diferencia de lo que sucede en el interior del entorno de ejecución de Apigee, el servicio remoto de Apigee aplica las cuotas ingresadas en la definición del producto de manera automática. Si se autoriza la solicitud, esta se contará en la cuota permitida.

Dónde se mantienen las cuotas

El proceso de servicio remoto mantiene y verifica las cuotas de forma local, y el entorno de ejecución de Apigee las mantiene de forma asíncrona. Esto significa que las cuotas no son precisas y es probable que se ejecuten de forma excesiva si tienes más de un servicio remoto que mantiene la cuota. Si se interrumpe la conexión con el entorno de ejecución de Apigee, la cuota local continuará como una cuota independiente hasta que pueda volver a conectarse al entorno de ejecución de Apigee.

Permisos de OAuth

Si usa tokens JWT, puede restringir los tokens a subconjuntos de los permisos de OAuth permitidos. Los permisos asignados al token JWT emitido se comprobarán en los alcances del producto de API.

Información sobre las apps de desarrolladores

Una vez que hayas configurado tus productos de API, crearás una app asociada con un desarrollador. La app permite que un cliente acceda a los productos de API asociados con una clave de API o un token JWT.

Usa la autenticación basada en JWT

Puedes usar un token JWT para realizar llamadas autenticadas al proxy de API, en lugar de usar una clave de API. En esta sección, se explica cómo usar el comando apigee-remote-service-cli token para crear, inspeccionar y rotar tokens JWT. En el entorno híbrido de Apigee, puedes usar este comando a fin de crear el secreto de Kubernetes para contener los JWT.

Descripción general

Envoy administra la verificación y autenticación de JWT con su Filtro de autenticación de JWT.

Una vez autenticado, el filtro ext-authz de Envoy envía los encabezados de la solicitud y JWT a apigee-remote-service-envoy. Coincide con las reclamaciones api_product_list y scope del JWT en los productos de API de Apigee para autorizarlo en el destino de la solicitud.

Crea tokens JWT de Apigee

Los tokens JWT de Apigee se pueden crear con la CLI:

apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET

También puedes usar el extremo del token de OAuth estándar. Ejemplo de Curl:

curl https://org-env.apigee.net/remote-service/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"

Usa el token JWT

Una vez que tengas el token, solo debes pasarlo a Envoy en el encabezado de Autorización. Ejemplo:

curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"

Falla del token JWT

Rechazo de Envoy

Si Envoy rechaza el token, es posible que veas un mensaje como el siguiente:

Jwks remote fetch is failed

Si es así, asegúrate de que la configuración de Envoy contenga un URI válido en la sección remote_jwks, que pueda acceder a Envoy y que hayas configurado los certificados de forma correcta cuando instalaste el proxy de Apigee. Deberías poder llamar a la URI directamente con una llamada GET y recibir una respuesta JSON válida.

Ejemplo:

curl https://myorg-eval-test.apigee.net/remote-service/certs

Otros mensajes de Envoy pueden verse así:

  • "No se permite público en Jwt"
  • "La entidad emisora de Jwt no está configurada"

Son requisitos de tu configuración de Envoy que posiblemente debas modificar.

Inspecciona un token

Puedes usar la CLI para inspeccionar tu token. Ejemplo

apigee-remote-service-cli -c config.yaml token inspect -f path/to/file

o

apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN

Depuración

Consulta Falla la clave de API válida.

Logging

Puedes ajustar el nivel de registro en el servicio $REMOTE_SERVICE_HOME/apigee-remote-service-envoy. Todos los registros se envían a stderr.

Elemento Obligatorio Descripción
-l, --log-level Niveles válidos: depuración, información, advertencia, error. Ajusta el nivel de registro. Predeterminado: información
-j, --json-log Emite el resultado del registro como registros JSON.

Envoy proporciona registros. Para obtener más información, consulta los siguientes vínculos de documentación de Envoy:

Cambia el nombre del secreto de la política

Un secreto de Kubernetes implementado en el clúster contiene credenciales que el adaptador necesita para autenticar la comunicación con el proxy de servicio remoto. Este secreto requiere un punto de activación de volumen, que se puede configurar. De forma predeterminada, el punto de activación es /policy-secret. Para cambiar el punto de activación, sigue estos pasos:

  1. Ejecuta este comando:
    $REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/new-mount_point_name

    Por ejemplo:

    $REMOTE_SERVICE_HOME/apigee-remote-service-envoy --policy-secret '/my-mount-point
  2. Abre $CLI_HOME/samples/apigee-envoy-adapter.yaml en un editor.
  3. Cambia el nombre del punto de activación por el nombre nuevo:
    volumeMounts:
      - mountPath: /config
        name: apigee-remote-service-envoy
        readOnly: true
      - mountPath: /opt/apigee/tls
        name: tls-volume
        readOnly: true
      - mountPath: /my-mount-point
        name: policy-secret
        readOnly: true
  4. Guarda el archivo y aplícalo a la malla de servicios:
    kubectl apply -f $REMOTE_SERVICE_HOME/samples/apigee-envoy-adapter.yaml

Usa un proxy de red

Se puede insertar un proxy HTTP con las variables de entorno HTTP_PROXY y HTTPS_PROXY en el entorno del objeto binario apigee-remote-service-envoy. Cuando se usan, la variable de entorno NO_PROXY también se puede usar para evitar que se envíen hosts específicos a través del proxy.

HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port]
HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port]
NO_PROXY=127.0.0.1,localhost

Recuerda que se debe poder acceder al proxy desde apigee-remote-service-envoy.

Información acerca de las métricas y las estadísticas

Un extremo de las métricas de Prometheus está disponible en :5001/metrics. Puedes configurar este número de puerto. Consulta Archivo de configuración.

Estadísticas de Envoy

En los vínculos siguientes, se proporciona información sobre cómo obtener datos de estadísticas del proxy de Envoy:

Estadísticas de Istio

En los vínculos siguientes, se proporciona información sobre cómo obtener datos de estadísticas del proxy de Envoy:

Estadísticas de Apigee

El servicio remoto de Apigee para Envoy envía estadísticas de solicitudes a Apigee para el procesamiento de estadísticas. Apigee informa estas solicitudes en el nombre del producto de API asociado.

Para obtener más información sobre las estadísticas de Apigee, consulta la descripción general de los servicios de estadísticas.