Descripción general de los complementos

En esta página, se proporciona información general sobre la integración de complementos con los balanceadores de cargas de aplicaciones de Cloud Load Balancing y Media CDN.

Esta función está en vista previa para Media CDN.

Los complementos se compilan con el formato WebAssembly (Wasm) y usan las APIs de Proxy-Wasm.

  • Wasm es un formato de instrucciones binarias abierto y estandarizado que permite que un host cargue y ejecute módulos de Wasm con código proporcionado por el cliente. Wasm tiene varios beneficios para ejecutar el código del cliente, como el aislamiento para la seguridad, la compatibilidad con varios lenguajes, la portabilidad, la compatibilidad amplia y creciente en la industria, y el rendimiento mejorado en relación con otras opciones basadas en VM, como JavaScript.

  • Proxy-Wasm es un proyecto de código abierto iniciado por Google. Define APIs que te permiten personalizar el comportamiento de los proxies de red implementando devoluciones de llamada que se ejecutarán durante el procesamiento de solicitudes y respuestas HTTP.

Cómo funcionan los complementos

Puedes usar las Extensiones del servicio con los balanceadores de cargas de aplicaciones y Media CDN de la siguiente manera:

  1. Prepara el código del complemento de la siguiente manera:

    1. Crea código personalizado con uno de los SDK de Proxy-Wasm:

    2. Compila tu código en un módulo de Wasm.

    3. Sube el código del complemento compilado a un repositorio de Artifact Registry.

  2. Crea un complemento que contenga el código del complemento subido.

  3. Configura el complemento en las extensiones de Cloud Load Balancing o las extensiones de Media CDN.

Recursos del complemento

Las Service Extensions te ayudan a crear los siguientes recursos clave que te permiten agregar código personalizado en la ruta de procesamiento:

  • Complementos, que contienen el código personalizado que deseas implementar

  • Versiones del complemento, que son versiones de tu módulo de Wasm Puedes indicar qué versión de tu módulo de Wasm debe usar un complemento como su versión principal (activa).

Limitaciones

En esta sección, se enumeran algunas limitaciones de los complementos.

Limitaciones de recursos

Los complementos están estrictamente restringidos en la cantidad de recursos que pueden usar:

  • Un complemento puede usar hasta 1 ms de CPU virtual normalizada por invocación. Un milisegundo de CPU depende de la plataforma, pero la plataforma normalizada es aproximadamente igual a un procesador con una velocidad de reloj de 4 GHz. Una invocación es una fase de ejecución que se factura de forma independiente y que puede incluir encabezados de solicitud, cuerpo de solicitud, encabezados de respuesta o cuerpo de respuesta.

  • Un complemento puede usar hasta 16 MiB de memoria por instancia de VM. Una instancia debe poder atender hasta 1,000 solicitudes simultáneas, lo que significa que un complemento puede contener hasta 16 KiB de memoria por transmisión. Ten en cuenta que el uso total de memoria incluye el estado global y las asignaciones de pila.

Usa el probador de complementos para comparar las características de CPU y memoria de un complemento.

Limitaciones en las APIs

  • Los complementos pueden usar un subconjunto de la ABI de Proxy-Wasm. Los complementos no admiten temporizadores, métricas personalizadas, datos compartidos, colas compartidas ni llamadas de red salientes.

  • No se admiten los eventos de tráiler HTTP.

Limitaciones con la manipulación de encabezados

  • El tamaño máximo de cualquier mutación (encabezados o fragmentos del cuerpo) es de 128 KiB.

  • Los complementos no pueden anular el modo de procesamiento de la transmisión ext_proc.

  • La manipulación de encabezados a través de complementos no se admite para algunos encabezados. El procesador ignora cualquier modificación en estos encabezados y continúa procesando la solicitud.

    En el caso de los complementos de Media CDN, no se admiten los siguientes elementos:

    • Encabezados: CDN-Loop, connection, keep-alive, proxy-authenticate, proxy-authorization, proxy-connection, te, trailers, transfer-encoding, upgrade o X-user-IP
    • Encabezados que comienzan con: x-forwarded, x-goog-,x-google, x-gfe o x-amz-.

    En el caso de los complementos de Cloud Load Balancing, no se admiten los siguientes elementos:

    • Encabezados: connection, keep-alive, proxy-authenticate, proxy-authorization, proxy-connection, sec-user-ip, te, trailer, transfer-encoding, upgrade, x-dont-count-ads, x-dont-show-ads, x-gr, x-proxyuser-ip o x-user-ip.

      Además, para LbTrafficExtension, estos encabezados tampoco son compatibles: method, authority, scheme ni los encabezados de host.

    • Encabezados que comienzan con sec-gfe-, sec-google-, x-amz-, x-forwarded-, x-gfe-, x-goog-, x-google- o x-gproxy-

Limitaciones con clientes y backends de HTTP/1.1

Cuando configuras REQUEST_BODY o RESPONSE_BODY para una extensión, si el balanceador de cargas recibe una solicitud coincidente, quita el encabezado Content-Length de la respuesta y cambia a la codificación del cuerpo en fragmentos.

¿Qué sigue?