Guía de operaciones

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

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. Cuando estés en la IU, selecciona la misma organización que usaste para configurar Apigee Adapter para 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 +API Product.
  3. Completa la página Detalles del producto como se indica a continuación.
  4. Campo Valor
    Nombre httpbin-product
    Nombre visible httpbin product
    Entorno your_environment

    Configúralo en el entorno que usaste cuando aprovisionaste Apigee Adapter para Envoy.

    Acceso Private
    Cuota 5 solicitudes cada minuto

    Consulta también Cuota.

  5. En la sección Destinos del servicio remoto de Apigee, haz clic en Agregar un destino de servicio remoto de Apigee.
  6. En el diálogo del destino del servicio remoto de Apigee, agrega los siguientes valores:
    Atributo Valor Descripción
    Nombre del destino Ingresa el nombre del servicio de destino. Por ejemplo: httpbin.org El extremo de destino basado en el proxy de Envoy
    Ruta de acceso Ingresa una ruta de acceso del recurso en el servicio con el que deseas establecer la coincidencia. Por ejemplo: /headers. La ruta de la solicitud que debe coincidir en el extremo de destino. Las llamadas del proxy de API a esta ruta coincidirán con este producto de API.
  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. A continuación, agrega el producto de API a la app:
    1. En la sección Credenciales, haz clic en + Agregar producto y selecciona el producto que acabas de configurar: httpbin-product.
    2. Haga clic en Crear.
    3. En Credenciales, haz clic en Mostrar junto a Clave.
    4. 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.

    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 tengan si tiene 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.

    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:

    $CLI_HOME/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-token/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

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

    o

    $CLI_HOME/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 stdout y 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:

    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.

    Compatibilidad con el entorno de multiusuario

    Ahora puedes habilitar el adaptador para atender varios entornos en una organización de Apigee. Esta función te permite usar un adaptador de Apigee para Envoy asociado a una organización de Apigee para trabajar con varios entornos. Antes de este cambio, un adaptador siempre estaba vinculado a un entorno de Apigee.

    Para configurar la compatibilidad con varios entornos, cambia el valor de tenant:env_name a * en el archivo config.yaml. Por ejemplo:

    1. Abre el archivo config.yaml en un editor.
    2. Cambia el valor de tenant.env_name a *. Por ejemplo:
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: apigee-remote-service-envoy
        namespace: apigee
      data:
        config.yaml: |
          tenant:
            remote_service_api: https://myorg-myenv.apigee.net/remote-service
            org_name: apigee-docs-hybrid-a
            env_name: *
            allow_unverified_ssl_cert: true
          analytics:
            collection_interval: 10s
          auth:
            jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token
    3. Guarda el archivo.
    4. Aplica el siguiente archivo:
      kubectl apply -f $CLI_HOME/config.yaml

    Cuando configuras el modo de varios entornos, también debes configurar Envoy para enviar un valor de entorno apropiado al adaptador. Para ello, agrega los siguientes metadatos en la sección virtual_hosts:routes del archivo envoy-config.yaml. Por ejemplo:

    1. Genera el archivo envoy-config.yaml mediante la CLI. Por ejemplo:
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. Abre el archivo generado (llamado envoy-config.yaml).
    3. Agrega los siguientes metadatos en la sección virtual_host o routes del archivo:
      typed_per_filter_config:
        envoy.filters.http.ext_authz:
          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
          check_settings:
            context_extensions:
              apigee_environment: test

      En el siguiente ejemplo, se ilustra la configuración de un virtual_host con varias rutas definidas, en las que cada ruta envía tráfico a un entorno específico:

      filter_chains:
          - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                stat_prefix: ingress_http
                route_config:
                  virtual_hosts:
                  - name: default
                    domains: "*"
                    routes:
                    - match: { prefix: /test }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: test
                    - match: { prefix: /prod }
                      route:
                        cluster: httpbin
                      typed_per_filter_config:
                        envoy.filters.http.ext_authz:
                          "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
                          check_settings:
                            context_extensions:
                               apigee_environment: prod
    4. Repite el último paso para agregar entornos adicionales según sea necesario.
    5. Guarda el archivo y aplícalo.

    Configura mTLS entre el adaptador y el entorno de ejecución de Apigee

    Puedes proporcionar certificados TLS del lado del cliente en la sección tenant del archivo config.yaml del adaptador para usar mTLS entre el adaptador y el entorno de ejecución de Apigee. Este cambio se aplica a todas las plataformas de Apigee compatibles. También habilita mTLS para estadísticas de la plataforma Apigee Edge for la nube privada. Por ejemplo:

    tenant:
      tls:
        ca_file: path/ca.pem
        cert_file: path/cert.pem
        key_file: path/key.pem
        allow_unverified_ssl_cert: false