I’m developing a Wasm plugin for Envoy proxy, that requires configuration so that it can send the collected raw API events.
The plugin works well with Istio, but I’m facing challenges integrating it with Consul on Kubernetes.
Here’s the ServiceDefaults configuration I created:
apiVersion: consul.hashicorp.com/v1alpha1
kind: ServiceDefaults
metadata:
name: httpfilter
spec:
protocol: http
envoyExtensions:
- name: httpfilter
required: true
arguments:
protocol: http
listenerType: outbound
PluginConfig:
Name: http-filter
RootID: http-filter
VmConfig:
Code:
Remote:
HttpURI:
Service:
Name: github
URI: https://github.com/anurag-rajawat/envoy-wasm-filters/raw/main/httpfilters.wasm
Configuration:
value: |
{
"upstream_name": "trace_analyzer",
"authority": "sentryflow",
"api_path": "/v1/api/telemetry"
}
With this configuration, I can successfully provide the plugin with its required config (upstream_name
, authority
and api_path
). However, I’m unsure how to define an Envoy cluster named trace_analyzer
within Consul to fulfil the upstream_name
configuration parameter.
In Istio, I achieved this by defining a cluster using an EnvoyFilter resource reference.
Is there a similar approach for defining Envoy clusters within Consul on Kubernetes? Any guidance on how to achieve this configuration would be greatly appreciated.