问题描述
我已在 istio
集群上设置了启用 kubernetes
的微服务架构。
我的 istio-ingressgateway
由 Cloudflare 代理。
后者生成特定标头,即 cf-ray
以支持对与 cloudflare 相关的问题进行故障排除。
我的问题是如何启用我的服务网格,即在边缘(即 istio-ingressgateway
)和所有边车中传播 cf-ray
id 标头。
istio
关于 VirtualService
资源的文档,在关于 HeaderOperations
的 section 中,列出了 3 个可用操作,即 set
、add
和remove
。
add
和 remove
似乎与我要执行的操作更无关,但是 set
似乎也要求设置特定值。
我只想要一个传递/传播类型的操作,其中 istio
在看到 cf-ray
标头时会传递它
a) 在集群中(当它关于入口网关时)
b) 从每个 sidecar 到主容器(不用说,在这种情况下,主容器的应用程序有责任从那时起继续传播)
解决方法
您没有边车传播标题的问题,因为边车默认这样做。就像您必须在 Istio 中配置跟踪一样。您只需生成并传播一些标头,无需对边车做任何事情。
关于生成部分,其实你要使用的字段是add
。 set
将通过其他方式更改标头值(例如,您有 set
的 foo: bar
,如果您收到带有 foo: baz
的请求,它将设置为 {{1} })。另一方面,foo: bar
会将 add
添加到您的请求中。
关于如何让请求进入集群的部分,在边缘应该没有问题,通过cf-ray
你不用配置headers。所以,它只会传递给服务。
示例
Gateway