Usa Apigee Adapter para Envoy con Apigee Edge

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

En este ejemplo, se muestra cómo usar Apigee Adapter for Envoy con Apigee Edge.

Requisitos previos

Antes de comenzar:

Descripción general

En este ejemplo, se explica cómo usar Apigee Adapter for Envoy con Apigee Edge para la nube pública. Las llamadas del proxy de la API fluyen a través de Envoy que se ejecuta como una aplicación nativa, y Edge proporciona servicios de administración de las API a través de Apigee Remote Service para Envoy.

En la siguiente figura, se muestra la arquitectura básica para la integración de Apigee Edge:

Una vista de alto nivel
    del adaptador de Envoy que se ejecuta de forma nativa para comunicarse con Apigee Edge Cloud, incluidos el
    plano de administración, el plano del entorno de ejecución y los servicios de GCP

Un proxy de Envoy y un servicio remoto se ejecutan de forma local. Envoy controla el tráfico de API desde y hacia el servicio de destino y se comunica con el servicio remoto. El servicio remoto también se comunica con Apigee Edge Cloud para recuperar información del proxy y el producto de API.

Aprovisiona Apigee Edge

En este paso, usarás la CLI de Remote Service a fin de aprovisionar el adaptador de Apigee para recursos de Envoy a Apigee Edge. El comando de aprovisionamiento implementa un proxy de API en Apigee Edge y, además, configura un certificado en Apigee y genera credenciales que el servicio remoto usará para conectarse de forma segura desde tu sistema a Apigee.

  1. Ve al directorio $CLI_HOME:
    cd $CLI_HOME
  2. Crea las siguientes variables de entorno: Estas variables se usarán como parámetros para la secuencia de comandos de aprovisionamiento:
    export ORG=organization_name
    export ENV=environment_name
    export USER=your_apigee_username
    export PASSWORD=your_apigee_password

    Aquí:

    Variable Descripción
    organization_name El nombre de tu organización de Apigee.
    environment_name El nombre de un entorno de tu organización.
    your_apigee_username El nombre de usuario de tu cuenta de Apigee. Por lo general, el nombre de usuario es una dirección de correo electrónico.
    your_apigee_password Su contraseña de Apigee.
  3. Ejecuta el siguiente comando para aprovisionar el proxy de servicio remoto en Apigee Edge:
    ./apigee-remote-service-cli provision --legacy --mfa $MFA --username $USER --password $PASSWORD \
        --organization $ORG --environment $ENV > config.yaml
  4. Verifica el contenido del archivo config.yaml. Se verá de la siguiente manera:
    # Configuration for apigee-remote-service-envoy (platform: SaaS)
    # generated by apigee-remote-service-cli provision on 2020-08-26 09:43:41
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          internal_api: https://istioservices.apigee.net/edgemicro
          remote_service_api: https://my-username-test.apigee.net/remote-service
          org_name: my-org
          env_name: my-env
          key: f7e09c32f827cab87b8ce43842ed8467ffd2c58e6f795241e38fe7b1aec7664
          secret: 1cb5cca00dfb433cb80b32837451fce4bf694633cddbb73d704517e12b35e75

    Los valores de clave y secreto se usan para validar las solicitudes del proxy de servicio remoto a Apigee Edge.

Ejecuta el servicio remoto de Apigee para Envoy

Puedes ejecutar el servicio remoto como objeto binario nativo o en Docker.

Ejecuta el servicio de forma nativa

Ejecuta el objeto binario de servicio con el archivo de configuración que generó el comando de aprovisionamiento:

$CLI_HOME/apigee-remote-service-envoy -c config_file_path/config.yaml

Ejecuta el servicio en Docker

Las imágenes de Docker se publican con etiquetas de la versión. Para esta instalación, usa la versión más reciente. Existen tres variantes de imágenes para elegir:

Variante Imagen
distroless de Google gcr.io/distroless/base
Ubuntu google/apigee-envoy-adapter:v1.1.0-ubuntu
Ubuntu con Boring Crypto google/apigee-envoy-adapter:v1.1.0-boring

Por ejemplo, para ejecutar la imagen inicial con tu config.yaml local disponible como /config.yaml a través de una activación de volumen, usa este comando:

docker run -v ./config.yaml:/config.yaml google/apigee-envoy-adapter:v1.1.0

Crea archivos de configuración de muestra

Usa el comando apigee-remote-service-cli samples create para generar archivos de configuración de muestra.

Para este ejemplo, necesitas estos archivos generados:

  • envoy-config.yaml: Es una configuración de implementación para un servicio HTTP.

Sigue estos pasos para generar las muestras:

  1. Ve al directorio $CLI_HOME.
  2. Ejecuta este comando para generar los archivos:

    ./apigee-remote-service-cli samples create --template native -c ./config.yaml
    .

    Los siguientes archivos generan el directorio ./samples:

    ls samples
    envoy-config.yaml
    

Si deseas obtener más información, consulta el comando Samples.

Instala y ejecuta el proxy de Envoy

Sigue estos pasos para instalar y ejecutar el proxy de Envoy:

  1. Descarga un objeto binario de Envoy, compílalo o usa Docker.
  2. Ejecuta Envoy con un archivo de configuración de muestra que generaste antes para el servicio httpbin.org:
    envoy -c $CLI_HOME/samples/envoy-config.yaml

Prueba la instalación

  1. Llama al servicio httpbin:
    curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"
    

    Ahora, el servicio es administrado por Apigee y, como no proporcionaste una clave de API, la llamada muestra el siguiente error.

    curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"
    HTTP/1.1 403 Forbidden
    date: Tue, 12 May 2020 17:51:36 GMT
    server: envoy
    content-length: 0
    x-envoy-upstream-service-time: 11
  2. Configura un producto de API y obtén una clave de API como se explica en Obtén una clave de API.
  3. Realiza una llamada a la API con esta clave:
    export APIKEY=YOUR_API_KEY
    curl -i http://localhost:8080/httpbin/headers \
    -H "HOST:httpbin.org" -H "x-api-key: $APIKEY"

    La llamada debería ser exitosa y tener un estado 200; además, se debe mostrar una lista de encabezados en la respuesta. Por ejemplo:

    curl -i httpbin.default.svc.cluster.local/headers -H "x-api-key: kyOTalNNLMPfOSy6rnVeclmVSL6pA2zS"
    HTTP/1.1 200 OK
    server: envoy
    date: Tue, 12 May 2020 17:55:34 GMT
    content-type: application/json
    content-length: 828
    access-control-allow-origin: *
    access-control-allow-credentials: true
    x-envoy-upstream-service-time: 301
    
    {
      "headers": {
        "Accept": "*/*",
        "Content-Length": "0",
        "Host": "httpbin.default.svc.cluster.local",
        "User-Agent": "curl/7.70.0-DEV",
        "X-Api-Key": "kyOTalNNLMPfOSy6rneclmVSL6pA2zS",
        "X-Apigee-Accesstoken": "",
        "X-Apigee-Api": "httpbin.default.svc.cluster.local",
        "X-Apigee-Apiproducts": "httpbin",
        "X-Apigee-Application": "httpbin",
        "X-Apigee-Authorized": "true",
        "X-Apigee-Clientid": "kyOTalNNLMPfOSy6rVeclmVSL6pA2zS",
        "X-Apigee-Developeremail": "user@example.com",
        "X-Apigee-Environment": "test",
        "X-Apigee-Organization": "my-org",
        "X-Apigee-Scope": "",
        "X-B3-Parentspanid": "1476f9a2329bbdfa",
        "X-B3-Sampled": "0",
        "X-B3-Spanid": "1ad5c19bfb4bc96f",
        "X-B3-Traceid": "6f329a34e8ca07811476f9a2329bbdfa"
      }
    }

Próximos pasos

Ahora, Apigee administra el tráfico de la API al servicio httpbin. Estas son algunas de las funciones que puedes explorar y probar:

  • Si configuraste tu producto de la API como se explica en Cómo obtener una clave de API, el límite de cuota se estableció en 5 solicitudes por minuto. Intenta llamar al servicio de httpbin algunas veces más para activar la cuota. Cuando se agota la cuota, se muestra un error de estado HTTP 403.
  • Accede a Apigee Analytics en la IU de Edge. Ve a Analizar > Métricas de la API > Rendimiento del proxy de API.
  • Genera y usa tokens de JWT para autenticar las llamadas a la API.
  • Usa la CLI para administrar las vinculaciones, crearles tokens y controlarlas. Para obtener más información sobre la CLI, consulta la Referencia.