Extensibilidad

WebAssembly es una tecnología de sandboxing que se puede utilizar para extender el proxy de Istio (Envoy). La API del sandbox de Proxy-Wasm reemplaza a Mixer como el principal mecanismo de extensión en Istio.

Objetivos del sandbox de WebAssembly:

  • Eficiencia: una extensión agrega baja latencia y sobrecarga de CPU y memoria.
  • Función: una extensión puede aplicar políticas, recopilar telemetría y realizar mutaciones de carga útil.
  • Aislamiento: un error de programación o un bloqueo en un complemento no afecta a otros complementos.
  • Configuración: los complementos se configuran mediante una API que es coherente con otras API de Istio. Una extensión se puede configurar dinámicamente.
  • Operador: una extensión se puede implementar en canary y como solo registro, a prueba de fallas o a prueba de cierre.
  • Desarrollador de extensiones: el complemento se puede escribir en varios lenguajes de programación.

Esta charla en video es una introducción sobre la arquitectura de la integración de WebAssembly.

Arquitectura de alto nivel

Las extensiones de Istio (plugins de Proxy-Wasm) tienen varios componentes:

  • Interfaz de proveedor de servicios de filtro (SPI) para crear complementos de Proxy-Wasm para filtros.
  • Sandbox V8 Wasm Runtime integrado en Envoy.
  • API de host para encabezados, avances y metadatos.
  • API de llamada para llamadas gRPC y HTTP.
  • API de estadísticas y registro para métricas y monitoreo.
Extending Istio/Envoy
Extending Istio/Envoy

Ejemplo

Se puede encontrar un ejemplo de complemento de Proxy-Wasm en C++ para un filtro aquí. Puede seguir esta guía para implementar una extensión Wasm con C++.

Ecosistema

¿Fue útil esta información?
¿Tienes alguna sugerencia para mejorar?

¡Gracias por tus comentarios!