EnvoyFilter 禁用分布式跟踪不起作用

问题描述 投票:0回答:1

我有以下设置和用例:

  • Openshift 版本 4.12
  • Openshift ServiceMesh 版本 2.4.1
  • Istio 版本 1.16.5
  • Envoy 代理版本 1.24.8

我们注意到,在出站请求期间(当请求离开 Pod 时),EnvoyProxy 会向请求添加 W3C(OpenTelemetry) 跟踪标头(如果它们不可用)。这是我们不希望出现的行为,因为它会在某些用例中造成混乱。

为了缓解这个问题,我尝试创建几个 EnvoyFilter 来禁用 HttpConnectionManager 的跟踪,但没有任何运气。

这些是我关注的文档页面:

下面你可以找到我根据这些文档创建的两个 EnvoyFilters,机器人似乎都不起作用:

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: disable-tracing
  namespace: <namespace>
spec:
  configPatches:
  - applyTo: NETWORK_FILTER
    match:
      context: ANY 
      listener:
        filterChain:
          filter:
            name: "envoy.filters.network.http_connection_manager" 
    patch:
      operation: MERGE
      value:
        typed_config:
          "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
          tracing:
            global_enabled:
              value: 0
            client_enabled:
              value: 0
            random_sampling:
              value: 0
---
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: disable-tracing
  namespace: <namespace>
spec:
  configPatches:
  - applyTo: NETWORK_FILTER
    match:
      context: ANY
      listener:
        filterChain:
          filter:
            name: "envoy.filters.network.http_connection_manager" 
    patch:
      operation: MERGE
      value:
        typed_config:
          "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager"
          tracing:
            client_sampling:
              value: 0
            random_sampling:
              value: 0
            overall_sampling:
              value: 0

创建任何这些 EnvoyFilter 并重新启动 Pod 以使 Envoy 配置与 Envoyfilter 的配置合并后,我仍然看到 Envoy 配置很僵硬

"filters": [
                    {
                      "name": "envoy.filters.network.http_connection_manager",
                      "typed_config": {
                        "@type": "type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager",
                        "http_filters": [
                          {
                            "name": "envoy.filters.http.router",
                            "typed_config": {
                              "@type": "type.googleapis.com/envoy.extensions.filters.http.router.v3.Router"
                            }
                          }
                        ],
                        "route_config": {
                          "virtual_hosts": [
                            {
                              "domains": [
                                "*"
                              ],
                              "name": "backend",
                              "routes": [
                                {
                                  "match": {
                                    "prefix": "/healthz/ready"
                                  },
                                  "route": {
                                    "cluster": "agent"
                                  }
                                }
                              ]
                            }
                          ]
                        },
                        "stat_prefix": "agent",
                        "tracing": {}
                      }

如您所见,两个过滤器以及 typed_config 都匹配,但是,tracing 部分仍然是空的。

有人对我可能缺少的东西有任何建议/想法吗?非常感谢任何帮助。

谢谢你

openshift istio envoyproxy distributed-tracing istio-sidecar
1个回答
0
投票

您可以通过设置以下 pod 注释来禁用跟踪标头(例如

x-b3-sampled
、spanid、traacid):

     proxy.istio.io/config: |
            tracing: {}
© www.soinside.com 2019 - 2024. All rights reserved.