0

我已经在集群istio上建立了一个启用的微服务架构。kubernetes

istio-ingressgateway的由 Cloudflare 代理。

后者,生成一个特定的header,即cf-ray支持对cloudflare相关问题的排查。

我的问题是如何启用我的服务网格,即在边缘(istio-ingressgateway即)和所有边车中传播cf-rayid 标头。

istioVirtualService的关于资源的文档在about部分中列出了 3 个可用操作,HeaderOperations即和。setaddremove

add并且remove似乎与我想要执行的操作更无关,但set似乎也要求设置一个特定的值。

我只想要一个直通/传播类型的操作,istio在看到cf-ray标题时,将通过它

a)在集群中(当它关于入口网关时)

b)从每个边车到主容器(不用说,在这种情况下,主容器的应用程序有责任从该点继续传播)

4

1 回答 1

3

您没有边车传播标头的问题,因为边车默认情况下会这样做。就像您必须在 Istio 中配置跟踪一样。您只需生成和传播一些标头,无需对 sidecar 做任何事情。

关于生成部分,实际上您要使用的字段是add. set将通过其他方式更改标头值(例如,您有一个setfor foo: bar,如果您收到一个带有 的请求foo: baz,它将设置为foo: bar)。add,另一方面,将增加cf-ray您的请求。

Gateway关于如何将请求放入集群的部分,通过您不配置标头,在边缘应该没有问题。所以,它只会传递给服务。

例子

...
spec:
  hosts:
  - service.namespace.svc.cluster.local
  http:
  - headers:
      request:
        add:
          key: "value"
    route:
    - destination:
        host: service.namespace.svc.cluster.local
...
于 2021-01-17T14:15:24.443 回答