Referencia de operación y configuración de Edge Microgateway

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

Edge Microgateway v. 3.1.5 y posterior

En este tema, se explica cómo administrar y configurar Edge Microgateway.

Actualiza Edge Microgateway si tienes conexión a Internet

En esta sección, se explica cómo actualizar una instalación existente de Edge Microgateway. Si estás operando sin conexión a Internet, consulta ¿Puedo instalar Edge Microgateway sin conexión a Internet?

Apigee recomienda que pruebes tu configuración existente con la versión nueva antes de actualizar tu entorno de producción.

  1. Ejecuta el siguiente comando de npm para actualizar a la versión más reciente de Edge Microgateway:
    npm upgrade edgemicro -g

    Para actualizar a una versión específica de Edge Microgateway, debes especificar la versión number en el comando de actualización. Si no especificas el número de versión, se instalará la versión más reciente. Por ejemplo, para actualizar a la versión 3.1.0, usa el siguiente comando:

    npm upgrade edgemicro@3.1.0 -g
  2. Verifica el número de versión. Por ejemplo, si instalaste la versión 3.1.0:
    edgemicro --version
    current nodejs version is v12.5.0
    current edgemicro version is 3.1.0
        
  3. Por último, actualiza a la versión más reciente del proxy edgemicro-auth:
    edgemicro upgradeauth -o $ORG -e $ENV -u $USERNAME

Cómo realizar cambios en la configuración

Entre los archivos de configuración que debes conocer, se incluyen los siguientes:

  • Archivo de configuración del sistema predeterminado
  • Archivo de configuración predeterminado para una instancia de Edge Microgateway recién inicializada
  • Archivo de configuración dinámica para instancias en ejecución

En esta sección, se analizan estos archivos y lo que debes saber para cambiarlos.

Configuración predeterminada del sistema archivo

Cuando instalas Edge Microgateway, se coloca un archivo de configuración del sistema predeterminado aquí:

prefix/lib/node_modules/edgemicro/config/default.yaml

Donde prefix es el directorio de prefijo npm. Consulta ¿Dónde está instalado Edge Microgateway si no puedes encontrar este directorio.

Si cambias el archivo de configuración del sistema, debes reiniciar Edge, reconfigurarla y reiniciarla. Microgateway:

edgemicro init
edgemicro configure [params]
edgemicro start [params]

Archivo de configuración predeterminado para las instancias de Edge Microgateway recién inicializadas

Cuando ejecutas edgemicro init, el archivo de configuración del sistema (descrito arriba), default.yaml, se encuentra en el directorio ~/.edgemicro.

Si cambias el archivo de configuración en ~/.edgemicro, debes volver a configurarlo y reiniciarlo. Edge Microgateway:

edgemicro stop
edgemicro configure [params]
edgemicro start [params]

Dinámico de configuración para las instancias en ejecución

Cuando ejecutas edgemicro configure [params], se genera una de configuración de Terraform se crea en ~/.edgemicro. El nombre del archivo corresponde al patrón: org-env-config.yaml, donde org y env son los nombres de tu organización y entorno de Apigee Edge. Puedes usar este archivo para hacer ajustes cambios y, luego, vuelve a cargarlos sin tiempo de inactividad. Por ejemplo, si agregas y configuras un complemento, puedes volver a cargar la configuración sin incurrir en tiempo de inactividad, como se explica a continuación.

Si Edge Microgateway se está ejecutando (opción sin tiempo de inactividad):

  1. Vuelve a cargar la configuración de Edge Microgateway:
    edgemicro reload -o $ORG -e $ENV -k $KEY -s $SECRET

    Aquí:

    • $ORG es el nombre de tu organización de Edge (debes ser una organización). administrador).
    • $ENV es un entorno de tu organización (como “prueba” o “prod”).
    • $KEY es la clave que mostró antes el comando de configuración.
    • $SECRET es la clave que mostró antes el comando de configuración.

    Por ejemplo:

    edgemicro reload -o docs -e test -k 701e70ee718ce6dc188...78b6181d000723 \
      -s 05c14356e42ed1...4e34ab0cc824

Si se detiene Edge Microgateway, haz lo siguiente:

  1. Reinicia Edge Microgateway:
    edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    Aquí:

    • $ORG es el nombre de tu organización de Edge (debes ser una organización). administrador).
    • $ENV es un entorno de tu organización (como “prueba” o “prod”).
    • $KEY es la clave que mostró antes el comando de configuración.
    • $SECRET es la clave que mostró antes el comando de configuración.

    Por ejemplo:

    edgemicro start -o docs -e test -k 701e70ee718ce...b6181d000723 \
      -s 05c1435...e34ab0cc824

Este es un archivo de configuración de ejemplo. Para obtener detalles sobre la configuración del archivo de configuración, consulta Referencia de configuración de Edge Microgateway.

edge_config:
  bootstrap: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/docs/environment/test
  jwt_public_key: 'https://docs-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://docs-test.apigee.net/edgemicro-auth/products'
edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
headers:
  x-forwarded-for: true
  x-forwarded-host: true
  x-request-id: true
  x-response-time: true
  via: true
oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  verify_api_key_url: 'https://docs-test.apigee.net/edgemicro-auth/verifyApiKey'
analytics:
  uri: >-
    https://edgemicroservices-us-east-1.apigee.net/edgemicro/axpublisher/organization/docs/environment/test

Configura variables de entorno

Los comandos de la interfaz de línea de comandos que requieren valores para la organización de Edge y entorno y la clave y el secreto necesarios para iniciar Edge Microgateway se pueden almacenar en estos variables de entorno:

  • EDGEMICRO_ORG
  • EDGEMICRO_ENV
  • EDGEMICRO_KEY
  • EDGEMICRO_SECRET

Configurar estas variables es opcional. Si los estableces, no es necesario que especifiques sus valores cuando usas la interfaz de línea de comandos (CLI) para configurar y, luego, iniciar Edge Microgateway

Configura SSL en Edge Microgateway servidor

Mira los siguientes videos para aprender a configurar TLS en Apigee Edge Microgateway:

Video Descripción
Configurar TLS de 1 dirección hacia el norte Aprende a configurar TLS en Apigee Edge Microgateway. Este video ofrece una descripción general de TLS y su importancia, y se presenta TLS en Edge Microgateway y muestra cómo configurar TLS unidireccional hacia el norte.
Configurar TLS bidireccional de dirección norte Este es el segundo video sobre cómo configurar TLS en Apigee Edge Microgateway. Esta video que explica cómo configurar TLS en dos direcciones con dirección norte.
Configurar TLS de dirección sur de uno y dos sentidos En este tercer video sobre la configuración de TLS en Apigee Edge Microgateway, se explica cómo configurar TLS de 1 vía y 2 vías hacia el sur

Puedes configurar el servidor de Microgateway para que use SSL. Por ejemplo, con SSL configurada, puedes llamar a las APIs a través de Edge Microgateway con el protocolo “https” protocolo, como se muestra a continuación:

https://localhost:8000/myapi

Para configurar SSL en el servidor Microgateway, sigue estos pasos:

  1. Genera u obtén un certificado y una clave SSL con la utilidad openssl o el método que prefieras.
  2. Agrega el atributo edgemicro:ssl al archivo de configuración de Edge Microgateway. Para obtener una de opciones, consulta la siguiente tabla. Por ejemplo:
    edgemicro:
      ssl:
       key: <absolute path to the SSL key file>
       cert: <absolute path to the SSL cert file>
       passphrase: admin123 #option added in v2.2.2
       rejectUnauthorized: true #option added in v2.2.2
       requestCert: true
  3. Reinicia Edge Microgateway. Sigue los pasos que se describen en Realizar cambios en la configuración según la de configuración que editaste: el archivo predeterminado o el archivo de configuración del entorno de ejecución.

Este es un ejemplo de la sección edgemicro del archivo de configuración, con SSL configurados:

edgemicro:
  port: 8000
  max_connections: 1000
  max_connections_hard: 5000
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24
  plugins:
    sequence:
      - oauth
  ssl:
    key: /MyHome/SSL/em-ssl-keys/server.key
    cert: /MyHome/SSL/em-ssl-keys/server.crt
    passphrase: admin123 #option added in v2.2.2
    rejectUnauthorized: true #option added in v2.2.2

Esta es una lista de todas las opciones de servidores compatibles:

Opción Descripción
key Es la ruta de acceso a un archivo ca.key (en formato PEM).
cert Es la ruta de acceso a un archivo ca.cert (en formato PEM).
pfx Ruta de acceso a un archivo pfx que contiene la clave privada, el certificado y los certificados de la AC del cliente en formato PFX.
passphrase Es una cadena que contiene la frase de contraseña para la clave privada o PFX.
ca Es la ruta de acceso a un archivo que contiene una lista de certificados de confianza en formato PEM.
ciphers Es una cadena que describe los algoritmos de cifrado que se deben usar, separados por un “:”.
rejectUnauthorized Si es verdadero, el certificado de servidor se verifica con la lista de AC suministradas. Si la verificación falla, se muestra un error.
secureProtocol El método SSL que se usará. Por ejemplo, SSLv3_method para forzar el uso de SSL a la versión 3.
servername Es el nombre del servidor de la extensión TLS (indicación de nombre del servidor) de SNI.
requestCert true para SSL bidireccional; falso para SSL unidireccional

Usa opciones de SSL/TLS del cliente

Puedes configurar Edge Microgateway para que sea un cliente de TLS o SSL cuando te conectas al destino en los extremos. En el archivo de configuración de Microgateway, usa el elemento de destino para configurar SSL/TLS opciones de estado.

En este ejemplo, se proporciona una configuración que se aplicará a todos los hosts:

edgemicro:
...
targets:
  ssl:
    client:
      key: /Users/jdoe/nodecellar/twowayssl/ssl/client.key
      cert: /Users/jdoe/nodecellar/twowayssl/ssl/ca.crt
      passphrase: admin123
      rejectUnauthorized: true

En este ejemplo, la configuración se aplica solo al host especificado:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    ssl:
      client:
        key: /Users/myname/twowayssl/ssl/client.key
        cert: /Users/myname/twowayssl/ssl/ca.crt
        passphrase: admin123
        rejectUnauthorized: true

Este es un ejemplo de TLS:

edgemicro:
...
targets:
  - host: 'myserver.example.com'
    tls:
      client:
        pfx: /Users/myname/twowayssl/ssl/client.pfx
        passphrase: admin123
        rejectUnauthorized: true

Esta es una lista de todas las opciones de cliente compatibles:

Opción Descripción
pfx Ruta de acceso a un archivo pfx que contiene la clave privada, el certificado y los certificados de la AC del cliente en formato PFX.
key Es la ruta de acceso a un archivo ca.key (en formato PEM).
passphrase Es una cadena que contiene la frase de contraseña para la clave privada o PFX.
cert Es la ruta de acceso a un archivo ca.cert (en formato PEM).
ca Es la ruta de acceso a un archivo que contiene una lista de certificados de confianza en formato PEM.
ciphers Es una cadena que describe los algoritmos de cifrado que se deben usar, separados por un “:”.
rejectUnauthorized Si es verdadero, el certificado de servidor se verifica con la lista de AC suministradas. Si la verificación falla, se muestra un error.
secureProtocol El método SSL que se usará. Por ejemplo, SSLv3_method para forzar el uso de SSL a la versión 3.
servername Es el nombre del servidor de la extensión TLS (indicación de nombre del servidor) de SNI.

Personaliza el proxy de Edgemicro-auth

De forma predeterminada, Edge Microgateway usa un proxy implementado en Apigee Edge para la autenticación de OAuth2. Este proxy se implementa cuando ejecutas edgemicro configure inicialmente. Puedes cambiar la configuración predeterminada de este proxy para agregar compatibilidad con reclamaciones personalizadas a un token web JSON (JWT), configurar el vencimiento de tokens y generar tokens de actualización. Para obtener más información, consulta la página edgemicro-auth en GitHub.

Usa un servicio de autenticación personalizado

De forma predeterminada, Edge Microgateway usa un proxy implementado en Apigee Edge para la autenticación de OAuth2. Este proxy se implementa cuando ejecutas edgemicro configure inicialmente. De forma predeterminada, este la URL del proxy se especifica en el archivo de configuración de Edge Microgateway de la siguiente manera:

authUri: https://myorg-myenv.apigee.net/edgemicro-auth

Si quieres usar tu propio servicio personalizado para controlar la autenticación, cambia el Valor authUri en el archivo de configuración para que apunte a tu servicio. Por ejemplo, podrías tener un servicio que usa LDAP para verificar la identidad.

Administra los archivos de registro

Edge Microgateway registra información sobre cada solicitud y respuesta. Los archivos de registro brindan para la depuración y la solución de problemas.

Dónde se almacenan los archivos de registro

De forma predeterminada, los archivos de registro se almacenan en /var/tmp.

Cómo cambiar el registro predeterminado directorio de archivos

El directorio en el que se almacenan los archivos de registro se especifica en la configuración de Edge Microgateway . Consulta también Establece la configuración de la configuración.

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Cambia el valor dir para especificar un directorio de archivo de registro diferente.

Envía registros a la consola

Puedes configurar el registro para que la información de registro se envíe al resultado estándar en lugar de a archivo de registro. Establece la marca to_console en verdadero de la siguiente manera:

edgemicro:
  logging:
    to_console: true

Con este parámetro de configuración, los registros se enviarán a salida estándar. Actualmente, no puedes enviar registros a ambos stdout y a un archivo de registro.

Cómo establecer el nivel de registro

Puedes configurar los siguientes niveles de registro: info, warn y "¡Oh, no!". Se recomienda el nivel de información. Registran todas las solicitudes y respuestas a la API, y es el predeterminado.

Cómo cambiar los intervalos de registro

Puedes configurar estos intervalos en el archivo de configuración de Edge Microgateway. Consulta también Cómo realizar cambios en la configuración.

Los atributos configurables son los siguientes:

  • stats_log_interval: (predeterminado: 60) Intervalo, en segundos, cuando las estadísticas se escribe en el archivo de registro de la API.
  • rotate_interval: (predeterminado: 24) Intervalo, en horas, cuando los archivos de registro se rotó. Por ejemplo:
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Prácticas recomendadas para el mantenimiento de los archivos de registro

A medida que los datos de los archivos de registro se acumulan con el tiempo, Apigee recomienda adoptar los siguientes prácticas:

Convención de nomenclatura de los archivos de registro

Cada instancia de Edge Microgateway produce tres tipos de archivos de registro:

  • api: Registra todas las solicitudes y respuestas que fluyen a través de Edge Microgateway Los contadores de API (estadísticas) y los errores también se registran en este archivo.
  • err: Registra todo lo que se envía a stderr.
  • out: Registra todo lo que se envía a stdout.

Esta es la convención de nomenclatura:

edgemicro-<Host Name>-<Instance ID>-<Log Type>.log

Por ejemplo:

edgemicro-mymachine-local-MTQzNTgNDMxODAyMQ-api.log
edgemicro-mymachine-local-MTQzNTg1NDMODAyMQ-err.log
edgemicro-mymachine-local-mtqzntgndmxodaymq-out.log

Acerca del contenido del archivo de registro

Agregada en la versión 2.3.3

De forma predeterminada, el servicio de registro omite el JSON de los proxies descargados, los productos y el JSON. Token web (JWT). Si quieres enviar estos objetos a los archivos de registro, configura DEBUG=* cuando inicias Edge Microgateway Por ejemplo:

DEBUG=* edgemicro start -o docs -e test -k abc123 -s xyz456

.

Contenidos de la "API" archivo de registro

La “API” el archivo de registro contiene información detallada sobre el flujo de solicitudes y respuestas a través de Edge Microgateway. La “API” los archivos de registro tienen el siguiente nombre:

edgemicro-mymachine-local-MTQzNjIxOTk0NzY0Nw-api.log

Por cada solicitud que se hace a Edge Microgateway, se capturan cuatro eventos en la “API” registro archivo:

  • Solicitud entrante del cliente
  • Solicitud saliente enviada al destino
  • Respuesta entrante del destino
  • Respuesta saliente al cliente

Cada una de estas entradas separadas se representa en una notación abreviada para ayudar a que el registro archivos más compactos. Aquí hay cuatro entradas de ejemplo que representan cada uno de los cuatro eventos. En el registro archivo, se ven así (los números de línea son solo de referencia en el documento, no aparecen en el archivo de registro).

(1) 1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
(2) 1436403888665 info treq m=GET, u=/, h=127.0.0.18080, i=0
(3) 1436403888672 info tres s=200, d=7, i=0
(4) 1436403888676 info res s=200, d=11, i=0

Veámoslos uno por uno:

1. Ejemplo de solicitud entrante del cliente:

1436403888651 info req m=GET, u=/, h=localhost:8000, r=::1:59715, i=0
  • 1436403888651: Marca de fecha Unix
  • info: Depende del contexto. Puede ser información, advertencia o error. según el nivel de registro. Pueden ser estadísticas de un registro de estadísticas, advertir sobre advertencias o de errores.
  • req: Identifica el evento. En este caso, la solicitud del cliente.
  • m: El verbo HTTP que se usa en la solicitud.
  • u: Es la parte de la URL que sigue a la ruta base.
  • h: El número de puerto y host en los que se encuentra Edge Microgateway escuchando.
  • r: El host y el puerto remotos en los que el cliente solicita se originó.
  • i: El ID de la solicitud. Las cuatro entradas de evento compartirán este ID. Cada a la que se le asigna un ID de solicitud único. Correlacionar los registros por ID de solicitud puede proporcionar y obtener estadísticas valiosas sobre la latencia del objetivo.
  • d: la duración en milisegundos desde que recibió la solicitud Edge Microgateway. En el ejemplo anterior, se recibió la respuesta del objetivo a la solicitud 0. después de 7 milisegundos (línea 3) y la respuesta se envió al cliente después de 4 milisegundos (línea 4). En otras palabras, la latencia total de la solicitud fue de 11 milisegundos, que fue de 7 milisegundos para el destino y 4 milisegundos para Edge Microgateway. a sí mismo.

2. Ejemplo de una solicitud saliente realizada al destino:

1436403888665 info treq m=GET, u=/, h=127.0.0.1:8080, i=0
  • 1436403888651: Marca de fecha Unix
  • info: Depende del contexto. Puede ser información, advertencia o error. según el nivel de registro. Pueden ser estadísticas de un registro de estadísticas, advertir sobre advertencias o de errores.
  • treq: Identifica el evento. En este caso, la solicitud de destino.
  • m: El verbo HTTP que se usa en la solicitud objetivo.
  • u: Es la parte de la URL que sigue a la ruta base.
  • h: El número de puerto y host del destino del backend.
  • i: El ID de la entrada de registro. Las cuatro entradas del evento compartirán esto ID.

3. Muestra de respuesta entrante del objetivo

1436403888672 info tres s=200, d=7, i=0

1436403888651: Marca de fecha Unix

  • info: Depende del contexto. Puede ser información, advertencia o error. según el nivel de registro. Pueden ser estadísticas de un registro de estadísticas, advertir sobre advertencias o de errores.
  • tres: Identifica el evento. En este caso, seleccionar la respuesta objetivo.
  • s: El estado de la respuesta HTTP.
  • d: La duración en milisegundos. El tiempo que tarda la llamada a la API en el objetivo.
  • i: El ID de la entrada de registro. Las cuatro entradas del evento compartirán esto ID.

4. Muestra de respuesta saliente al cliente

1436403888676 info res s=200, d=11, i=0

1436403888651: Marca de fecha Unix

  • info: Depende del contexto. Puede ser información, advertencia o error. según el nivel de registro. Pueden ser estadísticas de un registro de estadísticas, advertir sobre advertencias o de errores.
  • res: Identifica el evento. En este caso, la respuesta a la cliente.
  • s: El estado de la respuesta HTTP.
  • d: La duración en milisegundos. Este es el tiempo total que se tomó que demora la llamada a la API, incluido el tiempo que le toma a la API de destino y el que Edge Microgateway en sí.
  • i: El ID de la entrada de registro. Las cuatro entradas del evento compartirán esto ID.

Programación de archivos de registro

Los archivos de registro se rotan en el intervalo especificado en el rotate_interval atributo de configuración. Se seguirán agregando postulaciones al mismo archivo de registro hasta que venza el intervalo de rotación. Sin embargo, cada vez que Edge Microgateway se Cuando reinicias, recibe un nuevo UID y crea un nuevo conjunto de archivos de registro con este UID. Consulta también Buen mantenimiento de los archivos de registro prácticas recomendadas.

Mensajes de error

Algunas entradas de registro contendrán mensajes de error. Para ayudar a identificar dónde y por qué se producen los errores, consulta el error de Edge Microgateway referencia.

Referencia de la configuración de Edge Microgateway

Ubicación del archivo de configuración

Los atributos de configuración que se describen en esta sección se encuentran en Edge Microgateway de Terraform. Consulta también Establece la configuración de la configuración.

Atributos de Edge_config

Estos parámetros de configuración se usan para configurar la interacción entre la instancia de Edge Microgateway y Apigee Edge

  • bootstrap: (predeterminado: ninguno) Es una URL que apunta a un perímetro. Servicio específico de Microgateway que se ejecuta en Apigee Edge. Edge Microgateway usa este servicio para comunicarse con Apigee Edge. Esta URL se muestra cuando ejecutas el comando para generar la par de claves pública/privada: edgemicro genkeys. Consulta la sección Configuración y configurar Edge Microgateway para conocer más detalles.
  • jwt_public_key: (predeterminado: ninguno) Es una URL que apunta a Edge Microgateway. que se implementa en Apigee Edge. Este proxy funciona como extremo de autenticación para la emisión de tokens de acceso firmados a los clientes. Esta URL se muestra cuando ejecutas el comando para implementar el proxy: edgemicro configure. Consulta la sección Configuración y configurar Edge Microgateway para conocer más detalles.
  • quotaUri: Establece esta configuración. si quieres administrar cuotas a través del proxy edgemicro-auth que se implementado en tu organización. Si no se establece esta propiedad, el extremo de cuota se establece de forma predeterminada en el extremo interno de Edge Microgateway.
    edge_config:
      quotaUri: https://your_org-your_env.apigee.net/edgemicro-auth
    

atributos de Edgemicro

Con estos parámetros de configuración, se configura el proceso de Edge Microgateway.

  • port: (valor predeterminado: 8000) El número de puerto en el que se encuentra Edge Microgateway escuchas de procesos.
  • max_connections: (valor predeterminado: -1) Especifica la cantidad máxima de conexiones entrantes simultáneas que puede recibir Edge Microgateway. Si este número es se excede, se devuelve el siguiente estado:

    res.statusCode = 429; // Too many requests
  • max_connections_hard: (valor predeterminado: -1) La cantidad máxima de conexiones simultáneas que Edge Microgateway puede recibir antes de cerrar la conexión. Este parámetro de configuración su objetivo es impedir los ataques de denegación del servicio. Normalmente, debe establecerse en un número mayor que max_connections.
  • Registro:
    • level: (predeterminado: error)
      • info: Registra todas las solicitudes y respuestas que fluyen a través de un Instancia de Edge Microgateway.
      • warn: Solo registra los mensajes de advertencia.
      • error: Solo registra los mensajes de error.
    • dir: (predeterminado: /var/tmp) El directorio donde se encuentran los archivos de registro se almacenan.
    • stats_log_interval: (predeterminado: 60) Intervalo, en segundos, cuando las estadísticas se escribe en el archivo de registro de API.
    • rotate_interval: (predeterminado: 24) Intervalo, en horas, cuando los archivos de registro se rotó.
  • dir: una ruta de acceso relativa del directorio ./gateway al directorio ./plugins o una ruta de acceso absoluta.
  • secuencia: Una lista de módulos de complementos para agregar a Edge Microgateway instancia. Los módulos se ejecutarán en el orden en que se especifiquen aquí.
  • debug: Agrega la depuración remota al proceso de Edge Microgateway.
    • port: Es el número de puerto en el que se escuchará. Por ejemplo, configura tu depurador de IDE para escuchar en este puerto.
    • args: Son los argumentos para el proceso de depuración. Por ejemplo: args --nolazy
  • config_change_poll_interval: (valor predeterminado: 600 segundos) Edge Microgateway Carga una configuración nueva de forma periódica y ejecuta una recarga si cambia algo. Encuesta reconoce todos los cambios realizados en Edge (cambios en los productos, proxies que reconocen las micropuertas de enlace, etcétera) como así como los cambios realizados en el archivo de configuración local.
  • disable_config_poll_interval: (predeterminado: falso) Se establece en true para desactivar el sondeo de cambio automático.
  • request_timeout: Establece un tiempo de espera para las solicitudes de destino. El tiempo de espera se establece en segundos. Si se agota el tiempo de espera, Edge Microgateway responde con un código de estado 504. (Agregada v2.4.x)
  • keep_alive_timeout: Esta propiedad te permite establecer Edge Microgateway. tiempo de espera (en milisegundos). (Valor predeterminado: 5 segundos) (Se agregó v3.0.6)
  • headers_timeout: Este atributo limita la cantidad de tiempo (en milisegundos). el analizador de HTTP esperará encabezados HTTP completos.

    Por ejemplo:

    edgemicro:
      keep_alive_timeout: 6000
      headers_timeout: 12000

    De forma interna, el parámetro establece la biblioteca Server.headersTimeout en las solicitudes. (Predeterminado: 5 segundos más que la hora establecida con edgemicro.keep_alive_timeout. Esta configuración predeterminada evita que los balanceadores de cargas o los proxies descarten la conexión por error). (Se agregó v3.1.1)

  • noRuleMatchAction: (String) La acción que se debe realizar (permitir o denegar el acceso) si regla de coincidencia especificada en el complemento accesscontrol no se resuelve (no coincide). Valores válidos: ALLOW o DENY Predeterminado: ALLOW (Agregada: v3.1.7)
  • enableAnalytics: (predeterminado: verdadero) Configura el atributo como false para impedir el uso del complemento de análisis de la carga. En este caso, no se realizarán llamadas a los análisis de Apigee Edge. Si se configura como true o cuando no se proporciona este atributo, el complemento de análisis funcionará normalmente. Consulta edgemicro atributos para más detalles. (Se agregó v3.1.8).

    Ejemplo:

    edgemicro
      enableAnalytics=false|true

atributos de encabezados

Esta configuración establece cómo se tratan ciertos encabezados HTTP.

  • x-forwarded-for: (predeterminado: true) Configúralo como “false” para evitar que los encabezados x-forwarded-for se pasen al destino. Ten en cuenta que si un encabezado x-reenviado está en la solicitud, su valor se establecerá en el valor de IP del cliente en Edge Analytics.
  • x-forwarded-host: (predeterminado: true) Configúralo como “false” para evitar los encabezados x-forwarded-host que se pasarán al destino.
  • x-request-id: (predeterminado: true) Configúralo como falso para evitar Los encabezados x-request-id que se pasarán al destino.
  • x-response-time: (predeterminado: verdadero) Se establece en falso para evitar Los encabezados de tiempo de respuesta X que se pasarán al destino.
  • via: (predeterminado: verdadero) Se establece como falso para evitar que se envíen los encabezados. que se pasa al objetivo.

Atributos de OAuth

Con estos parámetros de configuración, se configura cómo Edge Microgateway aplica la autenticación del cliente.

  • allowNoAuthorization: (predeterminado: false) Si se configura como verdadero, se realizan las llamadas a la API no tiene permitido pasar por Edge Microgateway sin ningún encabezado de autorización. Establecer como false para requerir un encabezado de autorización (predeterminado).
  • allowInvalidAuthorization: (predeterminado: false) Si se establece en true, las llamadas a la API se si el token que se pasó en el encabezado de autorización no es válido o venció. Establecer a false para requerir tokens válidos (predeterminado).
  • authorization-header (valor predeterminado: Autorización: Bearer) El encabezado que se usa para y enviar el token de acceso a Edge Microgateway. Te recomendamos que cambies el valor predeterminado en los casos en que el destino debe usar el encabezado de autorización para otro propósito.
  • api-key-header: (predeterminado: x-api-key) El nombre del encabezado o la consulta parámetro que se usa para pasar una clave de API a Edge Microgateway. Consulta también Uso de una clave de API.
  • keep-authorization-header (valor predeterminado: false) Si se establece en true, el encabezado de autorización enviados en la solicitud se pasa al destino (se conserva).
  • allowOAuthOnly: si se configura como verdadero, todas las API deben llevar una autorización con un token de acceso del portador. Te permite permitir solo el modelo de seguridad de OAuth (mientras mantener la retrocompatibilidad). (Se agregó 2.4.x)
  • allowAPIKeyOnly: si se configura como true, cada API debe llevar un x-api-key (o una ubicación personalizada) con una clave de API. solo el modelo de seguridad de la clave de API (y, al mismo tiempo, mantener la retrocompatibilidad). (Se agregó 2.4.x)
  • gracePeriod: este parámetro ayuda a evitar errores causados por leves discrepancias entre el reloj del sistema y las horas No antes (nbf) o Emitida a las (iat) especificadas en el token de autorización JWT. Establece este parámetro en la cantidad de segundos permitidos para estas discrepancias. (Se agregó 2.5.7)

Específico del complemento atributos

Consulta Cómo usar complementos para obtener detalles sobre los atributos configurables para cada complemento.

Filtra proxies

Puedes filtrar qué proxies con reconocimiento de micropuertas de enlace procesará una instancia de Edge Microgateway. Cuando se inicia Edge Microgateway, se descargan todos los proxies que reconocen las micropuertas de enlace del organización a la que está asociada. Usa la siguiente configuración para limitar los proxies que microgateway procesará. Por ejemplo, esta configuración limita los proxies de microgateway se procesará en tres: edgemicro_proxy-1, edgemicro_proxy-2 y edgemicro_proxy-3:

edgemicro:
  proxies:
  - edgemicro_proxy-1
  - edgemicro_proxy-2
  - edgemicro_proxy-3

Filtrando productos por nombre

Usa la siguiente configuración para limitar la cantidad de productos de API que Edge Microgateway descargas y procesos. Para filtrar los productos descargados, agrega productnamefilter Parámetro de consulta a la API de /products que se muestra en *.config.yaml de Edge Microgateway . Por ejemplo:

edge_config:
  bootstrap: >-
    https://edgemicroservices.apigee.net/edgemicro/bootstrap/organization/willwitman/environment/test
  jwt_public_key: 'https://myorg-test.apigee.net/edgemicro-auth/publicKey'
  managementUri: 'https://api.enterprise.apigee.com'
  vaultName: microgateway
  authUri: 'https://%s-%s.apigee.net/edgemicro-auth'
  baseUri: >-
    https://edgemicroservices.apigee.net/edgemicro/%s/organization/%s/environment/%s
  bootstrapMessage: Please copy the following property to the edge micro agent config
  keySecretMessage: The following credentials are required to start edge micro
  products: 'https://myorg-test.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24'

Ten en cuenta que el valor del parámetro de consulta debe especificarse en el formato de expresión regular. tener codificación URL. Por ejemplo, la regex ^[Ee]dgemicro.*$ detecta nombres como los siguientes: “edgemicro-test-1” , “edgemicro_demo” y “Edgemicro_New_Demo”. El valor codificado de URL, adecuado para usar en el parámetro de consulta, es: %5E%5BEe%5Ddgemicro.%2A%24.

En el siguiente resultado de depuración, se muestra que solo se descargaron los productos filtrados:

...
2020-05-27T03:13:50.087Z [76060] [microgateway-config network] products download from https://gsc-demo-prod.apigee.net/edgemicro-auth/products?productnamefilter=%5E%5BEe%5Ddgemicro.%2A%24 returned 200 OK
...
....
....
{
   "apiProduct":[
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590549037549,
         "createdBy":"k***@g********m",
         "displayName":"test upper case in name",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590549037549,
         "lastModifiedBy":"k***@g********m",
         "name":"Edgemicro_New_Demo",
         "proxies":[
            "catchall"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[

         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1590548328998,
         "createdBy":"k***@g********m",
         "displayName":"edgemicro test 1",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1590548328998,
         "lastModifiedBy":"k***@g********m",
         "name":"edgemicro-test-1",
         "proxies":[
            "Lets-Encrypt-Validation-DoNotDelete"
         ],
         "quota":"null",
         "quotaInterval":"null",
         "quotaTimeUnit":"null",
         "scopes":[

         ]
      },
      {
         "apiResources":[
            "/",
            "/**"
         ],
         "approvalType":"auto",
         "attributes":[
            {
               "name":"access",
               "value":"public"
            }
         ],
         "createdAt":1558182193472,
         "createdBy":"m*********@g********m",
         "displayName":"Edge microgateway demo product",
         "environments":[
            "prod",
            "test"
         ],
         "lastModifiedAt":1569077897465,
         "lastModifiedBy":"m*********@g********m",
         "name":"edgemicro_demo",
         "proxies":[
            "edgemicro-auth",
            "edgemicro_hello"
         ],
         "quota":"600",
         "quotaInterval":"1",
         "quotaTimeUnit":"minute",
         "scopes":[

         ]
      }
   ]
}

Filtra productos por atributos personalizados

Sigue estos pasos para filtrar productos según atributos personalizados:

  1. En la IU de Edge, selecciona el proxy edgemicro_auth en la organización o el entorno. en la que configuraste Edge Microgateway.
  2. En el botón Desarrollar, abre la política JavaTexto destacado en el editor.
  3. Agrega un atributo personalizado con la clave products.filter.attributes separados por comas una lista de nombres de atributos. Solo los productos que contienen cualquiera de los nombres de los atributos personalizados se devolverá a Edge Microgateway.
  4. Si lo deseas, puedes inhabilitar la verificación ver si el producto está habilitado para el entorno actual estableciendo el atributo personalizado products.filter.env.enable a false. (El valor predeterminado es verdadero).
  5. (Solo en la nube privada) Si usas el perímetro de la nube privada, configura la propiedad org.noncps a true para extraer productos de entornos que no son de CPS.
  6. Por ejemplo:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <JavaCallout async="false" continueOnError="false" enabled="true" name="JavaCallout">
        <DisplayName>JavaCallout</DisplayName>
        <FaultRules/>
        <Properties>
            <Property name="products.filter.attributes">attrib.one, attrib.two</Property>
            <Property name="products.filter.env.enable">false</Property>
            <Property name="org.noncps">true</Property>
        </Properties>
        <ClassName>io.apigee.microgateway.javacallout.Callout</ClassName>
        <ResourceURL>java://micro-gateway-products-javacallout-2.0.0.jar</ResourceURL>
    </JavaCallout>
    

Configura la frecuencia de envío de estadísticas

Usa estos parámetros de configuración para controlar la frecuencia con la que Edge Microgateway envía de Google Analytics a Apigee:

  • bufferSize (opcional): Es la cantidad máxima de registros de análisis que la que puede contener antes de comenzar a descartar los registros más antiguos. Valor predeterminado: 10,000
  • batchSize (opcional): Es el tamaño máximo de un lote de registros de estadísticas enviados a Apigee. Valor predeterminado: 500
  • flushInterval (opcional): la cantidad de milisegundos entre cada limpieza de un lote de registros de análisis que se envían a Apigee. Valor predeterminado: 5000

Por ejemplo:

analytics:
  bufferSize: 15000
  batchSize: 1000
  flushInterval: 6000

Enmascara los datos de estadísticas

La siguiente configuración evita que se muestre la información de la ruta de la solicitud en Edge de análisis de datos en la nube. Agrega lo siguiente a la configuración de microgateway para enmascarar el URI de solicitud o ruta de acceso de la solicitud. Ten en cuenta que el URI consta de las partes de la ruta de acceso y el nombre de host de la solicitud.

analytics:
  mask_request_uri: 'string_to_mask'
  mask_request_path: 'string_to_mask'

Segrega llamadas a la API en Edge Analytics

Puedes configurar el complemento de análisis para segregar una ruta de acceso a la API específica y que aparezca como un proxy independiente en los paneles de Edge Analytics. Por ejemplo, puedes segregar una API de verificación de estado en el panel para evitar confundirla con llamadas reales a la API del proxy En la Analytics, los proxies segregados siguen este patrón de nomenclatura:

edgemicro_proxyname-health

En la siguiente imagen, se muestran dos proxies segregados en el panel de Analytics: edgemicro_hello-health y edgemicro_mock-health

Usar estas opciones para separar las rutas de acceso relativas y absolutas en el panel de Analytics como proxies independientes:

  • relativePath (opcional): especifica una ruta de acceso relativa para segregar en Panel de Analytics. Por ejemplo, si especificas /healthcheck, todas las llamadas a la API que contengan la ruta de acceso /healthcheck aparecerá en el panel como edgemicro_proxyname-health. Ten en cuenta que esta marca ignora la ruta base del proxy. Para segregar en función de una ruta de acceso completa, incluida la ruta base, usa la marca proxyPath.
  • proxyPath (opcional): Especifica una ruta de acceso completa del proxy de API, incluido el proxy basepath, para segregar en el panel de estadísticas. Por ejemplo, si especificas /mocktarget/healthcheck, en el que /mocktarget es la ruta base del proxy, todas las llamadas a la API con la ruta /mocktarget/healthcheck aparecerán en el panel como edgemicro_proxyname-health.

Por ejemplo, en la siguiente configuración, cualquier ruta de acceso a la API que contenga /healthcheck ser separadas por el complemento de Analytics. Esto significa que /foo/healthcheck y /foo/bar/healthcheck se segregarán como un proxy independiente llamado edgemicro_proxyname-health en el panel de estadísticas.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  relativePath: /healthcheck

En la siguiente configuración, cualquier API con la ruta de acceso del proxy /mocktarget/healthcheck se segregarán como un proxy independiente llamado edgemicro_proxyname-health en el panel de Analytics.

analytics:
  uri: >-
    https://xx/edgemicro/ax/org/docs/environment/test
  bufferSize: 100
  batchSize: 50
  flushInterval: 500
  proxyPath: /mocktarget/healthcheck

Configura Edge Microgateway detrás de un firewall de la empresa

Usa un proxy HTTP para la comunicación con Apigee Edge

Se agregó en la versión 3.1.2.

Si deseas usar un proxy HTTP para la comunicación entre Edge Microgateway y Apigee Edge, sigue estos pasos: lo siguiente:

  1. Configura las variables de entorno HTTP_PROXY, HTTPS_PROXY y NO_PROXY. Estos variables controlan los hosts de cada proxy HTTP que quieras usar para la comunicación con Apigee Edge o qué hosts no deberían controlar la comunicación con Apigee Edge Por ejemplo:
    export HTTP_PROXY='http://localhost:3786'
    export HTTPS_PROXY='https://localhost:3786'
    export NO_PROXY='localhost,localhost:8080'

    Ten en cuenta que NO_PROXY puede ser una lista delimitada por comas de dominios que Edge Microgateway no debe usar un proxy.

    Para obtener más información sobre estas variables, consulta https://www.npmjs.com/package/request#controlling-proxy-behaviour-using-environment-variables.

  2. Reinicia Edge Microgateway.

Usa un proxy HTTP para la comunicación de destino

Se agregó en la versión 3.1.2.

Si quieres usar un proxy HTTP para la comunicación entre Edge Microgateway y los destinos de backend, haz lo siguiente: haz lo siguiente:

  1. Agrega la siguiente configuración al archivo de configuración de microgateway:
    edgemicro:
      proxy:
        tunnel: true | false
        url: proxy_url
        bypass: target_host # target hosts to bypass the proxy.
        enabled: true | false

    Aquí:

    • tunnel: (opcional): Cuando es verdadero, Edge Microgateway usa el método CONNECT de HTTP para crear un túnel HTTP solicitudes a través de una única conexión TCP. (Lo mismo sucede si las variables de entorno, como que se mencionan a continuación para configurar el proxy están habilitados para TLS). Predeterminada: false
    • url: La URL del proxy HTTP
    • bypass: Especifica una o más URLs de host de destino separadas por comas que (opcional) debe omitir el proxy HTTP. Si no se establece esta propiedad, usa NO_PROXY. variable de entorno para especificar las URLs de destino que se deben omitir.
    • enabled: si el valor es verdadero y se configura proxy.url, usa el valor proxy.url para el proxy HTTP. Si el valor es verdadero y no se configura proxy.url, usa los proxies especificados en el proxy HTTP. variables de entorno HTTP_PROXY y HTTPS_PROXY, como se describe en Usa un proxy HTTP para la comunicación con Apigee Edge.

    Por ejemplo:

    edgemicro:
      proxy:
        tunnel: true
        url: 'http://localhost:3786'
        bypass: 'localhost','localhost:8080' # target hosts to bypass the proxy.
        enabled: true

  2. Reinicia Edge Microgateway.

Usa comodines en Microgateway-aware proxies

Puedes usar uno o varios “*” comodines en la ruta base de un Proxy edgemicro_* (compatible con Microgateway). Por ejemplo, una ruta base de /team/*/members permite a los clientes llamar https://[host]/team/blue/members y https://[host]/team/green/members sin necesidad de crear nuevos proxies de API para asistir a nuevos equipos. Ten en cuenta que no se admite /**/.

Importante: Apigee NO admite el uso de un comodín “*” como primer elemento de una ruta base. Por ejemplo, la búsqueda de /*/ NO se admite.

Rotar claves JWT

Después de generar un JWT por primera vez, es posible que debas cambiar par de claves pública/privada almacenada en el KVM con encriptación perimetral. Este proceso de generación de una clave nueva se denomina rotación de claves.

Cómo Edge Microgateway usa los JWT

El token web JSON (JWT) es un estándar de token descrito en RFC7519. JWT permite firmar un conjunto de reclamaciones que puede ser verificado de forma confiable por el destinatario del JWT.

Puedes generar un JWT con la CLI y usarlo en Encabezado de autorización de las llamadas a la API en lugar de una clave de API. Por ejemplo:

curl -i http://localhost:8000/hello -H "Authorization: Bearer eyJhbGciOiJ..dXDefZEA"

Para obtener información sobre cómo generar JWT con la CLI, consulta Genera un token.

¿Qué es la rotación de claves?

Después de generar un JWT por primera vez, es posible que debas cambiar par de claves pública/privada almacenada en el KVM con encriptación perimetral. Este proceso de generación de una clave nueva se denomina rotación de claves. Cuando se rotan las claves, se genera un nuevo par de claves pública/privada y almacenados en el servidor “microgateway” KVM en tu organización o entorno de Apigee Edge Además, el la clave pública anterior se conserva junto con su valor de ID de clave original.

Para generar un JWT, Edge usa la información almacenada en el KVM encriptado. R Se creó un KVM llamado microgateway y se propagó con claves cuando realizaste la configuración inicial. Edge Microgateway. Las claves del KVM se usan para firmar y encriptar un JWT.

Las claves de KVM incluyen lo siguiente:

  • private_key: Es la clave privada RSA más reciente (creada más recientemente) que se usa para firmar. JWT.

  • public_key: Es el certificado más reciente (creado más recientemente) que se usa para verificar los JWT. firmado con private_key.

  • private_key_kid: El ID de la clave privada más reciente (creado más recientemente). Este ID de clave se asocia con el valor private_key y se usa para admitir la rotación de claves.

  • public_key1_kid: El ID de la clave pública más reciente (creado más recientemente). Esta clave es asociada con el valor public_key1 y se usa para admitir la rotación de claves. Este valor es lo mismo que el elemento secundario de la clave privada.

  • public_key1: La clave pública más reciente (creada más recientemente).

Cuando realizas una rotación de claves, los valores de clave existentes se reemplazan en el mapa y los valores nuevos se agregan para conservar las claves públicas antiguas. Por ejemplo:

  • public_key2_kid: el ID de la clave pública anterior. Esta clave se asocia con el public_key2 y se usa para admitir la rotación de claves.

  • public_key2: La clave pública anterior.

Los JWT que se presenten para la verificación se verificarán con la nueva clave pública. Si falla la verificación, se usará la clave pública anterior hasta que venza el JWT (después del intervalo token_expiry*, el valor predeterminado es de 30 minutos). En de esta manera, puedes "rotar" sin interrumpir de inmediato el tráfico de la API.

Cómo realizar la rotación de claves

En esta sección, se explica cómo realizar una rotación de claves.

  1. Para actualizar el KVM, usa el comando edgemicro upgradekvm. Más información en ejecutar este comando, consulta Actualización KVM. Solo debes realizar este paso una vez.
  2. Para actualizar el proxy edgemicro-oauth, usa el comando edgemicro upgradeauth. Para obtener detalles sobre cómo ejecutar este comando, consulta Actualización del proxy de Edgemicro-auth. Solo debes realizar este paso una vez.
  3. Agrega la siguiente línea a tu archivo ~/.edgemicro/org-env-config.yaml, en la que debes especifica la misma organización y entorno que configuraste para que use microgateway:
    jwk_public_keys: 'https://$ORG-$ENV.apigee.net/edgemicro-auth/jwkPublicKeys'
  4. Ejecuta el comando de rotación de claves para rotar las claves. Para obtener detalles sobre este comando, consulta Rotar claves.

    edgemicro rotatekey -o $ORG -e $ENV -k $KEY -s $SECRET

    Por ejemplo:

    edgemicro rotatekey -o docs -e test \
    -k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
    -s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47
    

Después de la rotación de claves, Edge muestra varias claves a Edge Microgateway. Nota en la siguiente ejemplo, cada clave tiene un parámetro "kid" único (ID de clave). Luego, micropuerta de enlace usa estos claves para validar tokens de autorización. Si la validación del token falla, la micropuerta de enlace busca comprueba si hay una clave anterior en el conjunto de claves y prueba esa clave. El formato de la las claves que se muestran es la clave web JSON (JWK). Puedes leer sobre este formato en RFC 7517.

{
  "keys": [
    {
      "kty": "RSA",
      "n": "nSl7R_0wKLiWi6cO3n8aOJwYGBtinq723Jgg8i7KKWTSTYoszOjgGsJf_MX4JEW1YCScwpE5o4o8ccQN09iHVTlIhk8CNiMZNPipClmRVjaL_8IWvMQp1iN66qy4ldWXzXnHfivUZZogCkBNqCz7VSC5rw2Jf57pdViULVvVDGwTgf46sYveW_6h8CAGaD0KLd3vZffxIkoJubh0yMy0mQP3aDOeIGf_akeZeZ6GzF7ltbKGd954iNTiKmdm8IKhz6Y3gLpC9iwQ-kex_j0CnO_daHl1coYxUSCIdv4ziWIeM3dmjQ5_2dEvUDIGG6_Az9hTpNgPE5J1tvrOHAmunQ",
      "e": "AQAB",
      "kid": "2"
    },
    {
      "kty": "RSA",
      "n": "8BKwzx34BMUcHwTuQtmp8LFRCMxbkKg_zsWD6eOMIUTAsORexTGJsTy7z-4aH0wJ3fT-3luAAUPLBQwGcuHo0P1JnbtPrpuYjaJKSZOeIMOnlryJCspmv-1xG4qAqQ9XaZ9C97oecuj7MMoNwuaZno5MvsY-oi5B_gqED3vIHUjaWCErd4reONyFSWn047dvpE6mwRhZbcOTkAHT8ZyKkHISzopkFg8CD-Mij12unxA3ldcTV7yaviXgxd3eFSD1_Z4L7ZRsDUukCJkJ-8qY2-GWjewzoxl-mAW9D1tLK6qAdc89yFem3JHRW6L1le3YK37-bs6b2a_AqJKsKm5bWw",
      "e": "AQAB",
      "kid": "1"
    }
  ]
}

Cómo configurar la opción “no antes” retraso

Para las versiones 3.1.5 y anteriores, la nueva clave privada generada por el comando rotatekey tomó se aplicará inmediatamente, y los nuevos tokens generados se firmaron con la nueva clave privada. Sin embargo, la nueva clave pública solo estuvo disponible para las instancias de Edge Microgateway cada 10 minutos (de forma predeterminada). cuando se actualizó la configuración de microgateway. Debido a este retraso entre la firma del token y la actualización de la instancia de micropuerta de enlace, los tokens firmados con la clave más reciente se rechazarán hasta todas las instancias recibieron la clave pública más reciente.

En los casos en que existen varias instancias de microgateway, a veces el retraso de la clave pública causaba errores de tiempo de ejecución intermitentes con el estado 403, porque la validación del token pasaría en otra instancia, pero fallan en otra hasta que todas se actualicen.

A partir de la versión 3.1.6, una nueva marca en el comando rotatekey te permite especificar un retraso para la nueva que la clave privada entre en vigencia, lo que permite que se actualicen todas las instancias de microgateway y recibir la nueva clave pública. La nueva marca es --nbf, que significa "not before". Esta marca toma un valor de número entero, la cantidad de minutos de retraso.

En el siguiente ejemplo, la demora se establece en 15 minutos:

edgemicro rotatekey -o docs -e test \
-k 27ee39567c75e4567a66236cbd4e86d1cc93df6481454301bd5fac4d3497fcbb \
-s 4618b0008a6185d7327ebf53bee3c50282ccf45a3cceb1ed9828bfbcf1148b47 \
--nbf 15

Ten en cuenta que se recomienda establecer el retraso en un valor superior al de los parámetros de configuración de config_change_poll_internal. que es de 10 minutos de forma predeterminada. Consulta también los atributos de Edgemicro.

Filtra los proxies descargados

De forma predeterminada, Edge Microgateway descarga todos los proxies de tu organización de Edge que comienzan con el prefijo de denominación “edgemicro_”. Puedes cambiar este valor predeterminado para descargar proxies cuyos nombres coinciden con un patrón.

  1. Abre el archivo de microconfiguración de Edge: ~/.edgemicro/org-env-config.yaml
  2. Agrega el elemento proxyPattern debajo de Edge_config. Por ejemplo, el siguiente patrón descargar proxies como Edgemicro_foo, Edgemicro_fast y Edgemicro_first.
    edge_config:proxyPattern: edgemicro_f*

Especifica productos sin proxies de API

En Apigee Edge, puedes crear un producto de API que no contenga ningún proxy de API. Esta configuración de producto permite que funcione una clave de API asociada con ese producto con cualquier con el proxy implementado en tu organización. A partir de la versión 2.5.4, Edge Microgateway es compatible con este producto configuración.

Depuración y solución de problemas

Conéctate a un depurador

Puedes ejecutar Edge Microgateway con un depurador, como node-inspector. Esto es útil para solución de problemas y depuración de complementos personalizados.

  1. Reinicia Edge Microgateway en modo de depuración. Para ello, agrega DEBUG=* a la Comienzo del comando start:
    DEBUG=* edgemicro start -o $ORG -e $ENV -k $KEY -s $SECRET

    Para dirigir el resultado de depuración a un archivo, puedes usar el siguiente comando:

    export DEBUG=* nohup edgemicro start \
    -o $ORG -e $ENV -k $KEY -s $SECRET 2>&1 | tee /tmp/file.log

  2. Inicia el depurador y configúralo para que escuche en el número de puerto del proceso de depuración.
  3. Ahora puedes revisar el código de Edge Microgateway, establecer puntos de interrupción, observar expresiones etcétera.

Puedes especificar marcas estándar de Node.js relacionadas con el modo de depuración. Por ejemplo: --nolazy ayuda a depurar código asíncrono.

Verifica los archivos de registro

Si tienes problemas, asegúrate de examinar los archivos de registro para obtener detalles de la ejecución y detectar errores. información. Para obtener detalles, consulta Administra archivos de registro.

Cómo usar la seguridad de la clave de API

Las claves de API proporcionan un mecanismo sencillo para autenticar a los clientes que realizan solicitudes a Edge Microgateway Para obtener una clave de API, copia el valor de la clave de consumidor (también llamado ID de cliente). de un producto de Apigee Edge que incluye el proxy de autenticación de Edge Microgateway.

Almacenamiento de claves en caché

Las claves de API se intercambian por tokens del portador, que se almacenan en caché. Para inhabilitar el almacenamiento en caché, configura el encabezado Cache-Control: no-cache en las solicitudes entrantes a Edge Microgateway

Usa una clave de API

Puedes pasar la clave de API en una solicitud a la API como parámetro de consulta o en un encabezado. De forma predeterminada, el encabezado y el nombre del parámetro de consulta son x-api-key.

Ejemplo de parámetro de consulta:

curl http://localhost:8000/foobar?x-api-key=JG616Gjz7xs4t0dvpvVsGdI49G34xGsz

Ejemplo del encabezado:

curl http://localhost:8000/foobar -H "x-api-key:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

Configura el nombre de la clave de API

De forma predeterminada, x-api-key es el nombre que se usa tanto para el encabezado de la clave de API como para el parámetro de consulta. Puedes cambiar este valor predeterminado en el archivo de configuración, tal como se explica en Cómo realizar cambios en la configuración. Por ejemplo, para cambiar como apiKey:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  api-key-header: apiKey

En este ejemplo, tanto el parámetro de consulta como el nombre del encabezado se cambiaron a apiKey. El el nombre x-api-key ya no funcionará en ningún caso. Consulta también Cómo realizar cambios en la configuración.

Por ejemplo:

curl http://localhost:8000/foobar -H "apiKey:JG616Gjz7xs4t0dvpvVsGdI49G34xGsz"

Para obtener más información sobre el uso de claves de API con solicitudes de proxy, consulta Protege Edge Microgateway.

Habilitar códigos de respuesta upstream

De forma predeterminada, el complemento oauth solo devuelve códigos de estado de error 4xx si la respuesta no es un estado 200. Puedes cambiar este comportamiento para que siempre devuelve el código exacto 4xx o 5xx, según el error.

Para habilitar esta función, agrega oauth.useUpstreamResponse: true a la configuración de Edge Microgateway. Por ejemplo:

oauth:
  allowNoAuthorization: false
  allowInvalidAuthorization: false
  gracePeriod: 10
  useUpstreamResponse: true

Uso de la seguridad de token OAuth2

En esta sección, se explica cómo obtener tokens de acceso y tokens de actualización de OAuth2. Los tokens de acceso se usan para hacer para realizar llamadas seguras a la API a través de microgateway. Los tokens de actualización se usan para obtener tokens de acceso nuevos.

Cómo obtener un token de acceso

En esta sección, se explica cómo usar el proxy edgemicro-auth para obtener un token de acceso.

También puedes obtener un token de acceso con el comando edgemicro token de la CLI. Para obtener detalles sobre la CLI, consulta Administra tokens.

API 1: Envía credenciales como parámetros del cuerpo

Sustituye los nombres de tu organización y entorno en la URL. Sustituye los valores de ID y secreto del consumidor obtenidos de una aplicación de desarrollador en Apigee. Perímetro de los parámetros del cuerpo client_id y client_secret:

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" \
-d '{"grant_type": "client_credentials", "client_id": "your_client_id", \
"client_secret": "your_client_secret"}' -H "Content-Type: application/json"

API 2: Envía credenciales en un encabezado de autenticación básica

Enviar las credenciales del cliente como un encabezado de autenticación básica y el grant_type como parámetro del formulario Este formulario de comando también se analiza en RFC 6749: Marco de trabajo de autorización de OAuth 2.0.

http://<org>-<test>.apigee.net/edgemicro-auth/token -v -u your_client_id:your_client_secret \
-d 'grant_type=client_credentials' -H "Content-Type: application/x-www-form-urlencoded"

Resultado de muestra

La API muestra una respuesta JSON. Ten en cuenta que no hay diferencia entre token y access_token propiedades. Puedes usar cualquiera de las dos.
{
"token": "eyJraWQiOiIxIiwidHlwIjoi",
"access_token": "eyJraWQiOiIxIiwid",
"token_type": "bearer",
"expires_in": "108000"
}

Cómo obtener un token de actualización

Para obtener un token de actualización, realiza una llamada a la API al extremo /token del Proxy edgemicro-auth. DEBES realizar esta llamada a la API con el password. tipo de otorgamiento. Los siguientes pasos explican el proceso.

  1. Obtén un token de acceso y actualización con la API de /token. Ten en cuenta que el tipo de otorgamiento es password:
    curl -X POST \
      https://your_organization-your_environment.apigee.net/edgemicro-auth/token \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9oE5zLdifoDbF931TDnDtLq",
       "client_secret":"bUdDcFgv3nXffnU",
       "grant_type":"password",
       "username":"mpK6lBx9RoE5LiffoDbpF931TDnDtLq",
       "password":"bUdD2FvnMsXffnU"
    }'

    La API devuelve un token de acceso y un token de actualización. La respuesta es similar a lo siguiente: esto:

    {
        "token": "your-access-token",
        "access_token": "your-access-token",
        "token_type": "bearer",
        "expires_in": "108000",
        "refresh_token": "your-refresh-token",
        "refresh_token_expires_in": "431999",
        "refresh_token_issued_at": "1562087304302",
        "refresh_token_status": "approved"
    }
  2. Ahora puedes usar el token de actualización para obtener un nuevo token de acceso llamando el extremo /refresh de la misma API. Por ejemplo:
    curl -X POST \
      https://willwitman-test.apigee.net/edgemicro-auth/refresh \
      -H 'Content-Type: application/json' \
      -d '{
       "client_id":"mpK6l1Bx9RoE5zLifoDbpF931TDnDtLq",
       "client_secret":"bUdDc2Fv3nMXffnU",
       "grant_type":"refresh_token",
       "refresh_token":"your-refresh-token"
    }'

    La API muestra un nuevo token de acceso. La respuesta es similar a la siguiente:

    {
        "token": "your-new-access-token"
        }

Supervisión permanente

Forever es una herramienta de Node.js que reinicia automáticamente una app de Node.js en caso de que el proceso se caiga o tenga un error. Perimetrales Microgateway tiene un archivo forever.json que se puede configurar para controlar y con qué intervalos se debe reiniciar Edge Microgateway. Este archivo configura un Servicio de siempre llamado forever-monitor, que administra Forever programáticamente.

Puedes encontrar el archivo forever.json en la instalación raíz de Edge Microgateway. . Consulta Dónde está instalado Edge Microgateway. Para obtener detalles sobre las opciones de configuración, consulta la la documentación sobre la supervisión permanente.

El comando edgemicro forever incluye marcas que te permiten especificar la ubicación de el archivo forever.json (la marca -f) y, luego, iniciar/detener la supervisión de Forever (la marca -a). Por ejemplo:

edgemicro forever -f ~/mydir/forever.json -a start

Para obtener más información, consulta Supervisión permanente en la referencia de la CLI.

Especifica un extremo del archivo de configuración

Si ejecutas varias instancias de Edge Microgateway, es posible que desees administrar sus parámetros de configuración desde una sola ubicación. Para hacerlo, especifica un extremo HTTP en el que Edge Micro pueda descarga el archivo de configuración. Puedes especificar este extremo cuando inicies Edge Micro con la marca -u.

Por ejemplo:

edgemicro start -o jdoe -e test -u http://mylocalserver/mgconfig -k public_key -s secret_key

donde el extremo mgconfig devuelve el contenido del archivo de configuración. Este es el archivo que, de forma predeterminada, se encuentra en ~/.edgemicro y tiene la convención de nombres: org-env-config.yaml

Inhabilita el almacenamiento en búfer de datos de conexión TCP

Puedes usar el atributo de configuración nodelay para inhabilitar el almacenamiento en búfer de datos para Conexiones TCP que usa Edge Microgateway

De forma predeterminada, las conexiones TCP usan el protocolo Nagle para almacenar datos en búfer antes de enviarlos. Configurando nodelay como true, desactiva este comportamiento (los datos se activarán de inmediato con los datos cada vez se llama a socket.write()). Consulta también la documentación de Node.js documentación para obtener más detalles.

Para habilitar nodelay, edita el archivo de configuración de microconfiguración de Edge de la siguiente manera:

edgemicro:
  nodelay: true
  port: 8000
  max_connections: 1000
  config_change_poll_interval: 600
  logging:
    level: error
    dir: /var/tmp
    stats_log_interval: 60
    rotate_interval: 24

Ejecuta Edge Microgateway en modo independiente

Puedes ejecutar Edge Microgateway sin conexión por completo de cualquier Dependencia de Apigee Edge. Esta situación, llamada modo independiente, te permite ejecutar y probar Edge Microgateway sin conexión a Internet.

En el modo independiente, las siguientes funciones no funcionan, ya que requieren conexión a Apigee Edge:

  • OAuth y clave de API
  • Cuota
  • Analytics

Por otro lado, los complementos personalizados y la protección contra aumentos de tráfico funcionan normalmente, ya que no requieren una conexión a Apigee Edge. Además, un complemento nuevo llamado extauth te permite autorizar llamadas de API a microgateway con un JWT en modo independiente

Configura e inicia la puerta de enlace

Sigue estos pasos para ejecutar Edge Microgateway en modo independiente:

  1. Crea un archivo de configuración con el siguiente nombre: $HOME/.edgemicro/$ORG-$ENV-config.yaml

    Por ejemplo:

    vi $HOME/.edgemicro/foo-bar-config.yaml
  2. Pega el siguiente código en el archivo:
    edgemicro:
      port: 8000
      max_connections: 1000
      config_change_poll_interval: 600
      logging:
        level: error
        dir: /var/tmp
        stats_log_interval: 60
        rotate_interval: 24
      plugins:
        sequence:
          - extauth
          - spikearrest
    headers:
      x-forwarded-for: true
      x-forwarded-host: true
      x-request-id: true
      x-response-time: true
      via: true
    extauth:
      publickey_url: https://www.googleapis.com/oauth2/v1/certs
    spikearrest:
      timeUnit: second
      allow: 10
      buffersize: 0
  3. Exporta la siguiente variable de entorno con el valor “1”:
    export EDGEMICRO_LOCAL=1
  4. Ejecuta el siguiente comando start, en el que proporcionas valores para crear una instancia de la proxy local:
    edgemicro start -o $ORG -e $ENV -a $LOCAL_PROXY_NAME \
      -v $LOCAL_PROXY_VERSION -t $TARGET_URL -b $BASE_PATH

    Aquí:

    • $ORG es la "organización" que usaste en el nombre del archivo de configuración.
    • $ENV es “env” el nombre que usaste en el archivo de configuración de la fuente de datos.
    • $LOCAL_PROXY_NAME es el nombre del proxy local que se creará. Puedes usar el nombre que quieras.
    • $LOCAL_PROXY_VERSION es el número de versión del proxy.
    • $TARGET_URL es la URL para el destino del proxy. (El objetivo es la servicio al que llama el proxy).
    • $BASE_PATH es la ruta base del proxy. Este valor debe comenzar con un valor hacia delante o con una barra diagonal. Para una ruta base raíz, especifica solo una barra diagonal. por ejemplo, “/”.

    Por ejemplo:

    edgemicro start -o local -e test -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  5. Probar la configuración
    curl http://localhost:8000/echo  { "error" : "missing_authorization" }

    Como el complemento extauth está en el archivo foo-bar-config.yaml, puedes obtén una “missing_authorization” . Este complemento valida un JWT que debe estar presente en la autorización encabezado de la llamada a la API. En la siguiente sección, obtendrás un JWT que permitirá las llamadas a la API realizar sin el error.

Ejemplo: Obtener un token de autorización

En el siguiente ejemplo, se muestra cómo obtener un JWT del extremo JWT de Edge Microgateway en Apigee Edge (edgemicro-auth/jwkPublicKeys). Este extremo se implementa cuando realizas una configuración estándar de Edge Microgateway. Para obtener el JWT del extremo de Apigee, primero debes configurar Edge Microgateway estándar y, estar conectado a Internet. El extremo de Apigee se usa aquí como ejemplo y no es obligatorio. Puedes usar otro extremo del token JWT si lo deseas. Si es así, deberás obtener el JWT usando la API proporcionada para ese extremo.

En los siguientes pasos, se explica cómo obtener un token con el extremo edgemicro-auth/jwkPublicKeys:

  1. Debes realizar un estándar configuración de Edge Microgateway para implementar el proxy edgemicro-auth a tu organización o entorno en Apigee Edge. Si ya realizaste este paso, no es necesario que lo repitas.
  2. Si implementaste Edge Microgateway en Apigee Cloud, debes tener conexión a Internet para obtener un JWT desde este extremo.
  3. Detén Edge Microgateway:
    edgemicro stop
  4. En el archivo de configuración que creaste anteriormente ($HOME/.edgemicro/org-env-config.yaml), apuntar extauth:publickey_url al extremo edgemicro-auth/jwkPublicKeys de tu organización o entorno de Apigee Edge. Por ejemplo:
    extauth:
      publickey_url: 'https://your_org-your_env.apigee.net/edgemicro-auth/jwkPublicKeys'
  5. Reinicia Edge Microgateway como lo hiciste antes, con los nombres de org/env que usaste en el nombre del archivo de configuración. Por ejemplo:
    edgemicro start -o foo -e bar -a proxy1 -v 1 -t http://mocktarget.apigee.net -b /
  6. Obtén un token JWT desde el extremo de autorización. Debido a que usas edgemicro-auth/jwkPublicKeys extremo, puedes usar este comando de la CLI:

Puedes generar un JWT para Edge Microgateway con el comando edgemicro token o una API. Por ejemplo:

edgemicro token get -o your_org -e your_env \
  -i G0IAeU864EtBo99NvUbn6Z4CBwVcS2 -s uzHTbwNWvoSmOy

Aquí:

  • your_org es el nombre de tu organización de Apigee para la que usaste configuró Edge Microgateway.
  • your_env es un entorno de la organización.
  • La opción i especifica la clave de consumidor de una app de desarrollador que tiene un producto. que incluye el proxy edgemicro-auth.
  • La opción s especifica el Secreto de consumidor de una app de desarrollador que tiene un que incluye el proxy edgemicro-auth.

Este comando le pide a Apigee Edge que genere un JWT que luego se pueda usar para verificar la API llamadas.

Consulta también Cómo generar un token.

Prueba la configuración independiente

Para probar la configuración, llama a la API con el token agregado en el encabezado de autorización de la siguiente manera:

curl http://localhost:8000/echo -H "Authorization: Bearer your_token

Ejemplo:

curl http://localhost:8000/echo -H "Authorization: Bearer eyJraWQiOiIxIiwidHlwIjo...iryF3kwcDWNv7OQ"

Resultado de ejemplo:

{
   "headers":{
      "user-agent":"curl/7.54.0",
      "accept":"*/*",
      "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
      "client_received_start_timestamp":"1535134472699",
      "x-authorization-claims":"eyJhdDbiO...M1OTE5MTA1NDkifQ==",
      "target_sent_start_timestamp":"1535134472702",
      "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
      "x-forwarded-proto":"http",
      "x-forwarded-host":"localhost:8000",
      "host":"mocktarget.apigee.net",
      "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
      "via":"1.1 localhost, 1.1 google",
      "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
      "connection":"Keep-Alive"
   },
   "method":"GET",
   "url":"/",
   "body":""
}

Usa el modo de proxy local

En el modo proxy local, Edge Microgateway no requiere un proxy microgateway-aware que se implementarán en Apigee Edge. En su lugar, debes configurar un “proxy local” proporcionando un nombre de proxy local, una ruta base y una URL de destino inicie microgateway. Luego, las llamadas a la API a microgateway se envían al destino Es la URL del proxy local. En todos los demás aspectos, el modo de proxy local funciona exactamente igual que ejecutar Edge Microgateway en modo normal. La autenticación funciona igual que la aplicación de arrest y cuotas, los complementos personalizados, etc.

Caso de uso y ejemplo

El modo de proxy local es útil cuando solo necesitas asociar un proxy a una Edge Microgateway. instancia. Por ejemplo, puedes insertar Edge Microgateway en Kubernetes como un proxy de sidecar, en el que microgateway y un Service se ejecutan cada uno en un único Pod, y en el que la microgateway administra el tráfico hacia y de su servicio complementario. En la siguiente figura, se ilustra esta arquitectura en la que Edge Microgateway funciona como un proxy de sidecar en un clúster de Kubernetes. Cada instancia de micropuerta de enlace se comunica solo a un único extremo en su servicio complementario:

Edgemicro como archivo adicional

Un beneficio de este estilo de arquitectura es que Edge Microgateway ofrece las funciones de de servicios individuales implementados en un entorno de contenedor, como un clúster de Kubernetes.

Configura el modo proxy local

Si deseas configurar Edge Microgateway para que se ejecute en modo de proxy local, sigue estos pasos:

  1. Ejecuta edgemicro init para configurar tu entorno de configuración local exactamente como lo harías en una configuración típica de Edge Microgateway. Consulta también Configura Edge Microgateway.
  2. Ejecuta edgemicro configure, como lo harías en una configuración típica de Edge Microgateway. procedimiento. Por ejemplo:
    edgemicro configure -o your_org -e your_env -u your_apigee_username

    Este comando implementa la política edgemicro-auth en Edge y muestra una clave y Secret que deberá iniciar microgateway. Si necesitas ayuda, consulta Configura Edge Microgateway.

  3. Crea un producto de API en Apigee Edge con la siguiente configuración obligatoria (puedes administrar todas las demás configuraciones como desees):
    • Debes agregar el proxy edgemicro-auth al producto. Este proxy se implementó automáticamente cuando ejecutaste edgemicro configure.
    • Debes proporcionar una ruta de acceso al recurso. Apigee recomienda agregar esta ruta de acceso el producto: /**. Para obtener más información, consulta Configura el comportamiento de la ruta de acceso al recurso. Consulta también Crea una API productos en la documentación de Edge.
  4. En Apigee Edge, crea un desarrollador. También puedes usar uno existente si un deseo. Para obtener ayuda, consulta Agrega desarrolladores con la IU de administración perimetral.

  5. En Apigee Edge, crea una app de desarrollador. Debes agregar el producto de API que que acabas de crear en la app. Para obtener ayuda, consulta Registra una app en Edge de administración de identidades.
  6. En la máquina en la que está instalado Edge Microgateway, exporta los siguientes archivos variable de entorno con el valor “1”.
    export EDGEMICRO_LOCAL_PROXY=1
  7. Ejecuta el siguiente comando de start:
    edgemicro start -o your_org -e your_environment -k your_key -s your_secret \
        -a local_proxy_name -v local_proxy_version -t target_url -b base_path

    Aquí:

    • your_org es tu organización de Apigee.
    • your_environment es un entorno de tu organización.
    • your_key es la clave que se mostró cuando ejecutaste el sistema. edgemicro configure
    • your_secret es el secreto que se mostró cuando ejecutaste el sistema. edgemicro configure
    • local_proxy_name es el nombre del proxy local que se creará.
    • local_proxy_version es el número de versión del proxy.
    • target_url es la URL de destino del proxy (el servicio al que el proxy llamada).
    • base_path es la ruta base del proxy. Este valor debe comenzar con un valor hacia delante o con una barra diagonal. Para una ruta base raíz, especifica solo una barra diagonal. por ejemplo, “/”.

    Por ejemplo:

    edgemicro start -o your_org -e test -k 7eb6aae644cbc09035a...d2eae46a6c095f \
      -s e16e7b1f5d5e24df...ec29d409a2df853163a -a proxy1 -v 1 \
      -t http://mocktarget.apigee.net -b /echo

Prueba la configuración

Puedes probar la configuración del proxy local llamando al extremo del proxy. Por ejemplo: Si especificaste una ruta base de /echo, puedes llamar al proxy de la siguiente manera:

curl  http://localhost:8000/echo
{
  "error" : "missing_authorization",
  "error_description" : "Missing Authorization header"
}

Esta llamada inicial a la API produjo un error porque no proporcionaste una clave de API válida. Puedes encontrar la clave en la app para desarrolladores que creaste anteriormente. Abre la app en la IU de Edge y cópiala la clave de consumidor y usarla como se indica a continuación:

curl  http://localhost:8000/echo -H 'x-api-key:your_api_key'

Por ejemplo:

curl  http://localhost:8000/echo -H "x-api-key:DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP"

Resultado de ejemplo:

{
  "headers":{
    "user-agent":"curl/7.54.0",
    "accept":"*/*",
    "x-api-key":"DvUdLlFwG9AvGGpEgfnNGwtvaXIlUUvP",
    "client_received_start_timestamp":"1535134472699",
    "x-authorization-claims":"eyJhdWQiOi...TQ0YmUtOWNlOS05YzM1OTE5MTA1NDkifQ==",
    "target_sent_start_timestamp":"1535134472702",
    "x-request-id":"678e3080-a7ae-11e8-a70f-87ae30db3896.8cc81cb0-a7c9-11e8-a70f-87ae30db3896",
    "x-forwarded-proto":"http",
    "x-forwarded-host":"localhost:8000",
    "host":"mocktarget.apigee.net",
    "x-cloud-trace-context":"e2ac4fa0112c2d76237e5473714f1c85/1746478453618419513",
    "via":"1.1 localhost, 1.1 google",
    "x-forwarded-for":"::1, 216.98.205.223, 35.227.194.212",
    "connection":"Keep-Alive"
  },
  "method":"GET",
  "url":"/",
  "body":""
}

Usa el sincronizador

En esta sección, se explica cómo usar el sincronizador, una función opcional que mejora la resiliencia de Edge Microgteway, ya que le permite para recuperar datos de configuración de Apigee Edge y escribirlos en una base de datos local de Redis. Con Una instancia de sincronizador en ejecución, otras instancias de Edge Microgateway que se ejecutan en diferentes nodos puede recuperar su configuración directamente desde esta base de datos.

Actualmente, la función del sincronizador es compatible con Redis 5.0.x.

¿Qué es el sincronizador?

El sincronizador proporciona un nivel de resiliencia para Edge Microgateway. Ayuda a garantizar que cada instancia de Edge Microgateway use la misma configuración en caso de una interrupción de Internet, las instancias de Edge Microgateway pueden iniciarse y ejecutarse correctamente.

De forma predeterminada, las instancias de Edge Microgateway deben poder comunicarse con Apigee Edge para recuperar y actualizar sus datos de configuración, como las configuraciones del proxy de API y de los productos de API. Si se interrumpe la conexión a Internet con Edge, las instancias de microgateway pueden continuar porque los últimos datos de configuración se almacenan en caché. Sin embargo, las nuevas instancias de micropuertas no pueden iniciarse sin una conexión clara. Además, es posible que una conexión a Internet para provocar que una o más instancias de microgateway se ejecuten con la configuración información que no está sincronizada con otras instancias.

El sincronizador de Edge Microgateway proporciona un mecanismo alternativo para Edge Microgateway y recuperar los datos de configuración necesarios para iniciar y procesar el tráfico del proxy de API. Entre los datos de configuración recuperados de las llamadas a Apigee Edge, se incluyen la llamada jwk_public_keys, la llamada a jwt_public_key, la llamada de arranque y la llamada a los productos de la API. El sincronizador hace posible que todas las instancias de que se ejecutan en nodos diferentes para que se inicien correctamente y permanezcan sincronizadas, incluso si se interrumpe la conexión a Internet entre Edge Microgateway y Apigee Edge.

El sincronizador es una instancia configurada de forma especial de Edge Microgateway. Su único propósito es sondear Apigee Edge (el tiempo es configurable), recuperar datos de configuración y escribirla en una base de datos local de Redis. La instancia del sincronizador no puede procesar el proxy de API tráfico. Otras instancias de Edge Microgateway que se ejecutan en diferentes nodos pueden para recuperar datos de configuración de la base de datos de Redis en lugar de la de Apigee Edge. Debido a que todas las instancias de microgateway extraen sus datos de configuración del pueden iniciar y procesar solicitudes a la API incluso si hay conexión interrupciones.

Configura una instancia de sincronizador

Agrega la siguiente configuración al archivo org-env/config.yaml para la instalación de Edge Microgateway que deseas usar como sincronizador:

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true

Por ejemplo:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 1
  redisBasedConfigCache: true
Opción Descripción
redisHost El host en el que se ejecuta tu instancia de Redis. Valor predeterminado: 127.0.0.1
redisPort El puerto de la instancia de Redis. Valor predeterminado: 6379
redisDb La base de datos de Redis que se usará. Valor predeterminado: 0
redisPassword La contraseña de la base de datos.

Por último, guarda el archivo de configuración y, luego, inicia la instancia de Edge Microgateway. Comenzará sondear Apigee Edge y almacenar los datos de configuración descargados en la base de datos de Redis.

Configura instancias normales de Edge Microgateway

Con el sincronizador en ejecución, puedes configurar nodos adicionales de Edge Microgateway para ejecutar instancias de microgateway regulares que procesen el tráfico del proxy de API. Sin embargo, debes configurar estas instancias para obtener sus datos de configuración de la base de datos de Redis en lugar de Apigee Edge

Agrega la siguiente configuración a cada nodo adicional de Edge Microgateway org-env/config.yaml. Ten en cuenta que el elemento synchronizerMode se configuró como 0. Esta propiedad configura la instancia para que funcione como un instancia de Edge Microgateway que procesa el tráfico del proxy de API y obtendrá sus datos de configuración desde la base de datos de Redis.

edgemicro:
  redisHost: host_IP
  redisPort: host_port
  redisDb: database_index
  redisPassword: password
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

Por ejemplo:

edgemicro:
  redisHost: 192.168.4.77
  redisPort: 6379
  redisDb: 0
  redisPassword: codemaster
edge_config:
  synchronizerMode: 0
  redisBasedConfigCache: true

Propiedades de configuración

Se agregaron las siguientes propiedades de configuración para admitir el uso del sincronizador:

Atributo Valores Descripción
edge_config.synchronizerMode 0 o 1

Si es 0 (el valor predeterminado), Edge Microgateway funciona en modo estándar.

Si es 1, inicia la instancia de Edge Microgateway para que funcione como un sincronizador. En este la instancia extraerá datos de configuración de Apigee Edge y los almacenará una base de datos local de Redis. Esta instancia no puede procesar solicitudes de proxy de API. es Su único propósito es sondear Apigee Edge para buscar datos de configuración y escribirlos en el servidor en la base de datos. Luego, debes configurar otras instancias de micropuerta de enlace para que lean desde la base de datos.

edge_config.redisBasedConfigCache True o False Si es verdadero, la instancia de Edge Microgateway recupera sus datos de configuración del La base de datos de Redis en lugar de la de Apigee Edge La base de datos de Redis debe ser la misma en el que el sincronizador está configurado para escribir. Si la base de datos de Redis no está disponible o Si la base de datos está vacía, microgateway busca una cache-config.yaml existente de configuración para su configuración.

Si es falso (el valor predeterminado), la instancia de Edge Microgateway recupera los datos de configuración de Apigee Edge como de costumbre.

edgemicro.config_change_poll_interval Intervalo de tiempo, en segundos Especifica el intervalo de sondeo para que el sincronizador extraiga datos de Apigee Edge.

Configura la exclusión de URLs para complementos

Puedes configurar microgateway para que omita el procesamiento de los complementos en URLs especificadas. Puede configurar estas exclusiones URL a nivel global (para todos los complementos) o para complementos específicos.

Por ejemplo:

...
edgemicro:
  ...
  plugins:
    excludeUrls: '/hello,/proxy_one' # global exclude urls
    sequence:
      - oauth
      - json2xml
      - quota
json2xml:
  excludeUrls: '/hello/xml'  # plugin level exclude urls
...

En este ejemplo, los complementos no procesarán llamadas entrantes de proxy a la API con el las rutas de acceso /hello o /proxy_one. Además, el elemento json2xml se omitirá el complemento para las APIs que tengan /hello/xml en su ruta de acceso.

Establece atributos de configuración con valores de variables de entorno

Puedes especificar variables de entorno con etiquetas en el archivo . El entorno real reemplaza las etiquetas de variables de entorno especificadas de variables categóricas. Los reemplazos se almacenan solo en la memoria, no en el original configuración o archivos de caché.

En este ejemplo, el atributo key se reemplaza por el valor de la variable de entorno TARGETS_SSL_CLIENT_KEY, etcétera.

targets:
  - ssl:
      client:
        key: <E>TARGETS_SSL_CLIENT_KEY</E>
        cert: <E>TARGETS_SSL_CLIENT_CERT</E>
        passphrase: <E>TARGETS_SSL_CLIENT_PASSPHRASE</E>

En este ejemplo, se usa la etiqueta <n> para indicar un valor de número entero. Solo positivas los números enteros no admitidos.

edgemicro:
  port: <E><n>EMG_PORT</n></E>

En este ejemplo, la etiqueta <b> se usa para indicar un valor booleano ( es decir, verdadero o false).

quotas:
  useRedis: <E><b>EMG_USE_REDIS</b></E>