扩展 Istio 数据平面:Envoy Filter 与 Wasm 的应用
1. 使用 Envoy Filter 自定义数据平面
Istio 提供了 EnvoyFilter API,它允许我们修改通过其他 Istio 自定义资源定义(CRDs)创建的配置。Istio 的一个重要功能是将高级的 Istio CRDs 转换为低级的 Envoy 配置,而使用 EnvoyFilter CRD,我们可以直接更改这些低级配置。这是一个强大的功能,但使用时需谨慎,因为错误使用可能会导致问题恶化。借助 EnvoyFilter,我们可以应用 Istio CRDs 中无法直接使用的配置,并执行更高级的 Envoy 功能。该过滤器可以应用于命名空间级别,也可以应用于通过标签标识的特定工作负载级别。
1.1 示例操作步骤
- 部署 httpbin Pod :
bash kubectl apply -f Chapter09/01-httpbin-deployment.yaml curl -H "Host:httpbin.org" http://a816bb2638a5e4a8c990ce790b47d429-1565783620.us-east-1.elb.amazonaws.com/get
仔细检查响应字段,确保包含请求中传递的所有标头。 - 添加自定义标头 :我们将使用 EnvoyFilter 在请求发送到 httpbin Pod 之前添加一个自定义标头。这里选择
ChapterName
作为标头名称,并将其值设置