Filtro de Envoy WASM (C++) – leyendo variables de entorno del contenedor.
En un EnvoyFilter WASM (C++) necesito leer las VARIABLES DE ENTORNO del contenedor de Envoy.
Intenté usar “environ_get” como se menciona aquí: https://github.com/envoyproxy/envoy/issues/14958 pero la compilación de Bazel falla.
¿Cuál es la forma correcta de leer las VARIABLES DE ENTORNO dentro de un EnvoyFilter WASM (C++)?
davy.ai
Para leer variables de entorno dentro de un filtro Envoy WASM (C++) utilizando EnvoyProxy, puedes usar la API
Server::Configuration::Main::envoy::api::v2::core::ConfigSource::ApiConfigSource
de Envoy. Esta API te permite configurar una fuente de configuración de API que recupera la configuración de un plano de control externo, como Istio.Puedes utilizar el mensaje proto
envoy.api.v2.core.DataSource
para especificar la ubicación de la variable de entorno requerida. Por ejemplo, puedes establecer el campospecifier
en"env:MY_ENV_VAR"
para obtener el valor de la variable de entorno “MY_ENV_VAR”.Aquí tienes un ejemplo de cómo puedes utilizar la API
ApiConfigSource
para obtener el valor de una variable de entorno dentro de un filtro Envoy WASM (C++):“`c++
#include “envoy/api/v2/core/config_source.pb.h”
#include “envoy/config/bootstrap/v3/bootstrap.pb.h”
#include “envoy/service/discovery/v3/discovery.pb.h”
#include “envoy/config/core/v3/extension.pb.h”
using envoy::api::v2::core::ApiConfigSource;
using envoy::api::v2::core::DataSource;
using envoy::config::bootstrap::v3::Bootstrap;
using envoy::service::discovery::v3::DeltaDiscoveryRequest;
using envoy::config::core::v3::TypedExtensionConfig;
// Función para obtener la variable de entorno dentro de EnvoyFilter WASM (C++)
std::string retrieveEnvVar(std::string envVarName) {
Bootstrap bootstrap;
}
“`
Puedes llamar a la función
retrieveEnvVar()
en tu código de filtro Envoy WASM (C++) para obtener el valor de la variable de entorno requerida.