将 headers 传入服务网格传播到整个集群
Propagating headers incoming to service mesh throughout the cluster
我已经在 kubernetes
集群上设置了一个支持 istio
的微服务架构。
我的 istio-ingressgateway
由 Cloudflare 代理。
稍后,生成一个特定的 header,即 cf-ray
以支持解决 cloudflare-related 问题。
我的问题是如何启用我的服务网格,即在边缘(即 istio-ingressgateway
)和所有 sidecars 传播 cf-ray
id header.
istio
关于VirtualService
资源的文档,在关于HeaderOperations
的section中,列出了3个可用的操作,即set
、add
和 remove
.
add
和 remove
似乎与我要执行的操作无关,但是 set
似乎也要求设置特定值。
我只想要 passthrough/propagation 类型的操作,其中 istio
在看到 cf-ray
header 时会通过它
a) 在集群中(关于入口网关)
b) 从每个 sidecar 到主容器(不用说,在这种情况下,主容器的应用程序有责任从那时起继续传播)
您不会遇到边车传播 header 的问题,因为边车默认会这样做。这就像您必须在 Istio 中配置跟踪一样。您只需生成并传播一些 headers,无需对 sidecars 做任何事情。
关于生成部分,其实你要用的字段是add
。 set
将通过其他方式更改 header 值(例如,您有 foo: bar
的 set
,如果您收到 foo: baz
的请求,它将设置为foo: bar
)。另一方面,add
会将 cf-ray
添加到您的请求中。
关于请求如何进入集群的部分,在边缘应该没有问题,通过Gateway
你没有配置header。因此,它只会传递给服务。
示例
...
spec:
hosts:
- service.namespace.svc.cluster.local
http:
- headers:
request:
add:
key: "value"
route:
- destination:
host: service.namespace.svc.cluster.local
...
我已经在 kubernetes
集群上设置了一个支持 istio
的微服务架构。
我的 istio-ingressgateway
由 Cloudflare 代理。
稍后,生成一个特定的 header,即 cf-ray
以支持解决 cloudflare-related 问题。
我的问题是如何启用我的服务网格,即在边缘(即 istio-ingressgateway
)和所有 sidecars 传播 cf-ray
id header.
istio
关于VirtualService
资源的文档,在关于HeaderOperations
的section中,列出了3个可用的操作,即set
、add
和 remove
.
add
和 remove
似乎与我要执行的操作无关,但是 set
似乎也要求设置特定值。
我只想要 passthrough/propagation 类型的操作,其中 istio
在看到 cf-ray
header 时会通过它
a) 在集群中(关于入口网关)
b) 从每个 sidecar 到主容器(不用说,在这种情况下,主容器的应用程序有责任从那时起继续传播)
您不会遇到边车传播 header 的问题,因为边车默认会这样做。这就像您必须在 Istio 中配置跟踪一样。您只需生成并传播一些 headers,无需对 sidecars 做任何事情。
关于生成部分,其实你要用的字段是add
。 set
将通过其他方式更改 header 值(例如,您有 foo: bar
的 set
,如果您收到 foo: baz
的请求,它将设置为foo: bar
)。另一方面,add
会将 cf-ray
添加到您的请求中。
关于请求如何进入集群的部分,在边缘应该没有问题,通过Gateway
你没有配置header。因此,它只会传递给服务。
示例
...
spec:
hosts:
- service.namespace.svc.cluster.local
http:
- headers:
request:
add:
key: "value"
route:
- destination:
host: service.namespace.svc.cluster.local
...