1.2. Service Mesh 发行注记

1.2.1. 使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

1.2.2. 新功能及功能增强

此版本对以下方面进行了改进。

1.2.2.1. Red Hat OpenShift Service Mesh 版本 2.2.3 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题(CVE)、程序错误修正,并受 OpenShift Container Platform 4.9 和更高版本的支持。

1.2.2.1.1. Red Hat OpenShift Service Mesh 2.2.3 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.36

Kiali

1.48.3

1.2.2.2. Red Hat OpenShift Service Mesh 版本 2.2.2 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题(CVE)、程序错误修正,并受 OpenShift Container Platform 4.9 和更高版本的支持。

1.2.2.2.1. Red Hat OpenShift Service Mesh 2.2.2 版中包含的组件版本
组件版本

Istio

1.12.7

Envoy Proxy

1.20.6

Jaeger

1.36

Kiali

1.48.2-1

1.2.2.2.2. 复制路由标签

在这个版本中,除了复制注解外,您还可以为 OpenShift 路由复制特定的标签。Red Hat OpenShift Service Mesh 将 Istio 网关资源中存在的所有标签和注解(从 kubectl.kubernetes.io 开始的注解除外)复制到受管 OpenShift Route 资源中。

1.2.2.3. Red Hat OpenShift Service Mesh 版本 2.2.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题(CVE)、程序错误修正,并受 OpenShift Container Platform 4.9 和更高版本的支持。

1.2.2.3.1. Red Hat OpenShift Service Mesh 2.2.1 版中包含的组件版本
组件版本

Istio

1.12.7

Envoy Proxy

1.20.6

Jaeger

1.34.1

Kiali

1.48.2-1

1.2.2.4. Red Hat OpenShift Service Mesh 2.2 的新功能

此 Red Hat OpenShift Service Mesh 发行版本添加了新的功能和改进,并被 OpenShift Container Platform 4.9 和更高版本的支持。

1.2.2.4.1. Red Hat OpenShift Service Mesh 2.2 版中包含的组件版本
组件版本

Istio

1.12.7

Envoy Proxy

1.20.4

Jaeger

1.34.1

Kiali

1.48.0.16

1.2.2.4.2. WasmPlugin API

此发行版本添加了对 WasmPlugin API 的支持,并弃用了 ServiceMeshExtention API。

1.2.2.4.3. ROSA 支持

此发行版本引进了对 AWS(ROSA)上的 Red Hat OpenShift 的服务网格支持,包括多集群联邦。

1.2.2.4.4. istio-node DaemonSet 重命名

在此发行版本中,istio-node DaemonSet 被重命名为 istio-cni-node,以匹配上游 Istio 中的名称。

1.2.2.4.5. Envoy sidecar 网络更改

Istio 1.10 更新了 Envoy,默认使用 eth0 而不是 lo 将流量发送到应用程序容器。

1.2.2.4.6. Service Mesh Control Plane 1.1

对于所有平台,此发行版本结束了对基于 Service Mesh 1.1 的 Service Mesh Control Planes 的支持。

1.2.2.4.7. Istio 1.12 支持

Service Mesh 2.2 基于 Istio 1.12,它带来新功能和产品改进。虽然仍然会支持许多 Istio 1.12 功能,但请注意以下不被支持的功能:

  • AuthPolicy Dry Run 是一个技术预览功能。
  • gRPC Proxyless Service Mesh 是一个技术预览功能。
  • Telemetry API 是一个技术预览功能。
  • 发现选择器功能不受支持。
  • 外部 control plane 不受支持。
  • 网关注入不受支持。
1.2.2.4.8. Kubernetes Gateway API

Kubernetes Gateway API 是一个技术预览功能,默认为禁用。

要启用这个功能,请在 ServiceMeshControlPlane 中为 Istiod 容器设置以下环境变量:

spec:
  runtime:
    components:
      pilot:
        container:
          env:
            PILOT_ENABLE_GATEWAY_API: true
            PILOT_ENABLE_GATEWAY_API_STATUS: true
            # and optionally, for the deployment controller
            PILOT_ENABLE_GATEWAY_API_DEPLOYMENT_CONTROLLER: true

使用 SameNamespaceAll 设置在 Gateway API 监听器上限制路由附加功能可能。Istio 会忽略 listeners.allowedRoutes.namespaces 中标签选择器的使用,并恢复到默认行为 (SameNamespace)。

1.2.2.5. Red Hat OpenShift Service Mesh 2.1.5.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题(CVE)、程序错误修正,并受 OpenShift Container Platform 4.9 和更高版本的支持。

1.2.2.5.1. Red Hat OpenShift Service Mesh 2.1.5.1 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.5

Jaeger

1.36

Kiali

1.36.13

1.2.2.6. Red Hat OpenShift Service Mesh 2.1.5 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题(CVE)、程序错误修正,并受 OpenShift Container Platform 4.9 和更高版本的支持。

1.2.2.6.1. Red Hat OpenShift Service Mesh 2.1.5 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.1

Jaeger

1.36

Kiali

1.36.12-1

1.2.2.7. Red Hat OpenShift Service Mesh 2.1.4 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.7.1. Red Hat OpenShift Service Mesh 2.1.4 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.1

Jaeger

1.30.2

Kiali

1.36.12-1

1.2.2.8. Red Hat OpenShift Service Mesh 2.1.3 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.8.1. Red Hat OpenShift Service Mesh 2.1.3 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.1

Jaeger

1.30.2

Kiali

1.36.10-2

1.2.2.9. Red Hat OpenShift Service Mesh 2.1.2.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.9.1. Red Hat OpenShift Service Mesh 2.1.2.1 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.1

Jaeger

1.30.2

Kiali

1.36.9

1.2.2.10. Red Hat OpenShift Service Mesh 2.1.2 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

在这个版本中,Red Hat OpenShift distributed tracing 平台 Operator 被默认安装到 openshift-distributed-tracing 命名空间。在以前的版本中,默认安装已在 openshift-operator 命名空间中。

1.2.2.10.1. Red Hat OpenShift Service Mesh 2.1.2 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.1

Jaeger

1.30.1

Kiali

1.36.8

1.2.2.11. Red Hat OpenShift Service Mesh 2.1.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

此发行版本还添加了禁用自动创建网络策略的功能。

1.2.2.11.1. Red Hat OpenShift Service Mesh 2.1.1 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.1

Jaeger

1.24.1

Kiali

1.36.7

1.2.2.11.2. 禁用网络策略

Red Hat OpenShift Service Mesh 自动在 Service Mesh control plane 和应用程序命名空间中创建和管理多个 NetworkPolicies 资源。这是为了确保应用程序和 control plane 可以相互通信。

如果要禁用自动创建和管理 NetworkPolicies 资源,例如为了强制执行公司安全策略,您可以编辑 ServiceMeshControlPlane,将 spec.security.manageNetworkPolicy 设置设置为 false

注意

当您禁用了 spec.security.manageNetworkPolicy,Red Hat OpenShift Service Mesh 不会创建 任何 NetworkPolicy 对象。系统管理员负责管理网络并修复可能导致的任何问题。

流程

  1. 在 OpenShift Container Platform web 控制台中,点击 OperatorsInstalled Operators
  2. 从 Project 菜单中选择安装 Service Mesh control plane 的项目,如 istio-system
  3. 点 Red Hat OpenShift Service Mesh Operator。在 Istio Service Mesh Control Plane 栏中,点 ServiceMeshControlPlane 的名称,如 basic-install
  4. Create ServiceMeshControlPlane Details 页中,点 YAML 修改您的配置。
  5. ServiceMeshControlPlane 字段 spec.security.manageNetworkPolicy 设置为 false,如下例所示。

    apiVersion: maistra.io/v2
    kind: ServiceMeshControlPlane
    spec:
      security:
          trust:
          manageNetworkPolicy: false
  6. 点击 Save

1.2.2.12. Red Hat OpenShift Service Mesh 2.1 的新功能和增强

此 Red Hat OpenShift Service Mesh 发行版本添加了对 Istio 1.9.8, Envoy Proxy 1.17.1, Jaeger 1.24.1, and Kiali 1.36.5 on OpenShift Container Platform 4.6 EUS, 4.7, 4.8, 4.9 的支持,以及新的功能和增强功能。

1.2.2.12.1. Red Hat OpenShift Service Mesh 2.1 版中包含的组件版本
组件版本

Istio

1.9.6

Envoy Proxy

1.17.1

Jaeger

1.24.1

Kiali

1.36.5

1.2.2.12.2. Service Mesh Federation

添加了新的自定义资源定义(CRD)以支持联邦服务网格(federating service mesh)。服务网格可以整合到同一集群中或跨不同的 OpenShift 集群。这些新资源包括:

  • ServiceMeshPeer - 使用单独的服务网格定义联邦,包括网关配置、root 信任证书配置和状态字段。在一对联邦网格中,每个网格将定义自己的独立 ServiceMeshPeer 资源。
  • ExportedServiceMeshSet - 定义给定 ServiceMeshPeshPeer 的服务可用于导入的对等网格。
  • ImportedServiceSet - 定义给定 ServiceMeshPeer 的服务是从 peer 网格中导入的。这些服务还必须由 peer 的 ExportedServiceMeshSet 资源提供。

在 AWS(ROSA)、Azure Red Hat OpenShift(ARO)或 OpenShift Dedicated(OSD)上的 Red Hat OpenShift Service 上的集群间不支持 Service Mesh Federation。

1.2.2.12.3. OVN-Kubernetes Container Network Interface(CNI)正式发布

OVN-Kubernetes Container Network Interface(CNI)以前在 Red Hat OpenShift Service Mesh 2.0.1 中作为技术预览功能引进,现在包括在 Red Hat OpenShift Service Mesh 2.1 和 2.0.x 中,用于 OpenShift Container Platform 4.7.32、OpenShift Container Platform 4.8.12 和 OpenShift Container Platform 4.9。

1.2.2.12.4. Service Mesh WebAssembly(WASM)扩展

ServiceMeshExtensions 自定义资源定义(CRD)现已正式发布,它首次作为技术预览功能在版本 2.0 中推出。您可以使用 CRD 构建自己的插件,但红帽并不支持您创建的插件。

在 Service Mesh 2.1 中已完全删除 Mixer。如果启用了 Mixer,则会阻止从 Service Mesh 2.0.x 升级到 2.1。混合器插件需要移植到 WebAssembly 扩展。

1.2.2.12.5. 3scale WebAssembly Adapter(WASM)

Mixer 现已正式删除,OpenShift Service Mesh 2.1 不支持 3scale 混合器适配器。在升级到 Service Mesh 2.1 之前,删除基于 Mixer 的 3scale 适配器和任何其他 Mixer 插件。然后,使用 Service MeshExtension 资源手动安装和配置使用 Service Mesh 2.1+ 的新 3scale WebAssembly 适配器。

3scale 2.11 引入了基于 WebAssembly 的更新 Service Mesh 集成。

1.2.2.12.6. Istio 1.9 支持

Service Mesh 2.1 基于 Istio 1.9,它带来了大量新功能和产品增强。虽然大多数 Istio 1.9 功能被支持,但请注意以下例外:

  • 虚拟机集成尚不受支持
  • 尚不支持 Kubernetes 网关 API
  • 尚不支持远程获取和加载 WebAssembly HTTP 过滤器
  • 尚不支持使用 Kubernetes CSR API 的自定义 CA 集成
  • 监控流量的请求分类是一个技术预览功能
  • 通过授权策略的 CUSTOM 操作与外部授权系统集成是一项技术预览功能
1.2.2.12.7. 改进了 Service Mesh operator 性能

Red Hat OpenShift Service Mesh 在每个 ServiceMeshControlPlane 协调结束时用于修剪旧资源的时间已经减少。这会更快地进行 ServiceMeshControlPlane 部署,并允许应用到现有 SMCP 的更改更快地生效。

1.2.2.12.8. Kiali 更新

Kiali 1.36 包括以下功能和增强:

  • Service Mesh 故障排除功能

    • control plane 和网关监控
    • 代理同步状态
    • Envoy 配置视图
    • 显示 Envoy 代理和应用程序日志处于交集的统一视图
  • 支持联邦服务网格视图的命名空间和集群选择
  • 新的验证、向导和分布式追踪增强

1.2.2.13. Red Hat OpenShift Service Mesh 2.0.11.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题(CVE)、程序错误修正,并受 OpenShift Container Platform 4.9 和更高版本的支持。

1.2.2.13.1. Red Hat OpenShift Service Mesh 2.0.11.1 版中包含的组件版本
组件版本

Istio

1.6.14

Envoy Proxy

1.14.5

Jaeger

1.36

Kiali

1.24.17

1.2.2.14. Red Hat OpenShift Service Mesh 2.0.11 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题(CVE)、程序错误修正,并受 OpenShift Container Platform 4.9 和更高版本的支持。

1.2.2.14.1. Red Hat OpenShift Service Mesh 2.0.11 版中包含的组件版本
组件版本

Istio

1.6.14

Envoy Proxy

1.14.5

Jaeger

1.36

Kiali

1.24.16-1

1.2.2.15. Red Hat OpenShift Service Mesh 2.0.10 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.15.1. Red Hat OpenShift Service Mesh 2.0.10 版中包含的组件版本
组件版本

Istio

1.6.14

Envoy Proxy

1.14.5

Jaeger

1.28.0

Kiali

1.24.16-1

1.2.2.16. Red Hat OpenShift Service Mesh 2.0.9 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.16.1. Red Hat OpenShift Service Mesh 2.0.9 版中包含的组件版本
组件版本

Istio

1.6.14

Envoy Proxy

1.14.5

Jaeger

1.24.1

Kiali

1.24.11

1.2.2.17. Red Hat OpenShift Service Mesh 2.0.8 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了程序错误修正。

1.2.2.18. Red Hat OpenShift Service Mesh 2.0.7.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题。

1.2.2.18.1. Red Hat OpenShift Service Mesh 处理 URI 片段的方式改变

Red Hat OpenShift Service Mesh 包含一个可远程利用的漏洞 CVE-2021-39156,其中 HTTP 请求带有片段(以 # 字符开头的 URI 末尾的一个部分),您可以绕过 Istio URI 基于路径的授权策略。例如,Istio 授权策略拒绝发送到 URI 路径 /user/profile 的请求。在存在安全漏洞的版本中,带有 URI 路径 /user/profile#section1 的请求绕过拒绝策略并路由到后端(通过规范的 URI path /user/profile%23section1),可能会导致安全事件。

如果您使用带有 DENY 操作和 operation.paths 的授权策略,或者 ALLOW 操作和 operation.notPaths,则会受到此漏洞的影响。

在这个版本中,在授权和路由前会删除请求的 URI 片段部分。这可以防止其 URI 中带有片段的请求绕过基于 URI 且没有片段部分的授权策略。

要从缓解措施中的新行为中选择,将保留 URI 的片段部分。您可以将 ServiceMeshControlPlane 配置为保留 URI 片段。

警告

如前文所述,禁用新行为将对路径进行规范化,并被视为不安全。在选择保留 URI 片段之前,确保您已将这些内容放入任何安全策略中。

ServiceMeshControlPlane 修改示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
  name: basic
spec:
  techPreview:
    meshConfig:
      defaultConfig:
        proxyMetadata: HTTP_STRIP_FRAGMENT_FROM_PATH_UNSAFE_IF_DISABLED: "false"

1.2.2.18.2. 授权策略所需的更新

Istio 为主机名本身和所有匹配端口生成主机名。例如,用于 "httpbin.foo" 主机的虚拟服务或网关会生成匹配 "httpbin.foo 和 httpbin.foo:*" 的配置。但是,完全匹配授权策略仅与为 hostsnotHosts 字段给出的确切字符串匹配。

如果您使用精确字符串比较的 AuthorizationPolicy 来确定 主机或非主机,则会影响您的集群。

您必须更新授权策略 规则,以使用前缀匹配而不是完全匹配。例如,在第一个 AuthorizationPolicy 示例中,将 hosts: ["httpbin.com"] 替换为 hosts: ["httpbin.com:*"]

第一个 AuthorizationPolicy 示例使用前缀匹配

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: foo
spec:
  action: DENY
  rules:
  - from:
    - source:
        namespaces: ["dev"]
    to:
    - operation:
        hosts: [“httpbin.com”,"httpbin.com:*"]

第二个 AuthorizationPolicy 示例使用前缀匹配

apiVersion: security.istio.io/v1beta1
kind: AuthorizationPolicy
metadata:
  name: httpbin
  namespace: default
spec:
  action: DENY
  rules:
  - to:
    - operation:
        hosts: ["httpbin.example.com:*"]

1.2.2.19. Red Hat OpenShift Service Mesh 2.0.7 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.20. Red Hat OpenShift Dedicated 和 Microsoft Azure Red Hat OpenShift OpenShift 上的 Red Hat OpenShift Service Mesh

Red Hat OpenShift Service Mesh 现在通过 Red Hat OpenShift Dedicated 和 Microsoft Azure Red Hat OpenShift 支持。

1.2.2.21. Red Hat OpenShift Service Mesh 2.0.6 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.22. Red Hat OpenShift Service Mesh 2.0.5 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.23. Red Hat OpenShift Service Mesh 2.0.4 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

重要

要解决 CVE-2021-29492 和 CVE-2021-31920 的问题,则必须完成手动步骤。

1.2.2.23.1. CVE-2021-29492 和 CVE-2021-31920 所需的手动更新

Istio 包含一个可被远程利用的漏洞,当使用基于路径的授权规则时,带有多个斜杠或转义的斜杠字符(%2F%5C)的 HTTP 请求路径可能会绕过 Istio 授权策略。

例如,假设 Istio 集群管理员定义了一个授权 DENY 策略,以便在路径 /admin 上拒绝请求。发送到 URL 路径 //admin 的请求不会被授权策略拒绝。

根据 RFC 3986,带有多个斜杠的路径 //admin 在技术上应被视为与 /admin 不同的路径。但是,一些后端服务选择通过将多个斜杠合并成单斜杠来规范 URL 路径。这可能导致绕过授权策略(//admin 不匹配 /admin),用户可以在后端的路径 /admin 上访问资源,这可能会产生安全问题。

如果您使用 ALLOW action + notPaths 字段或者 DENY action + paths 字段特征,您的集群会受到这个漏洞的影响。这些模式可能会被意外的策略绕过。

在以下情况下,集群不会受到此漏洞的影响:

  • 您没有授权策略。
  • 您的授权策略没有定义 pathsnotPaths 字段。
  • 您的授权策略使用 ALLOW action + paths 字段或 DENY action + notPaths 字段特征。这些模式只会导致意外的拒绝,而不是绕过策略。对于以上情况,升级是可选的。
注意

路径规范化的 Red Hat OpenShift Service Mesh 配置位置与 Istio 配置不同。

1.2.2.23.2. 更新路径规范化配置

Istio 授权策略可能基于 HTTP 请求中的 URL 路径。路径规范化 (也称为 URI 规范化)、修改和标准化传入请求的路径,以便能够以标准的方式处理规范化路径。在路径规范化后,同步不同路径可能是等同的。

Istio 在根据授权策略和路由请求前,支持请求路径中的以下规范化方案:

表 1.1. 规范化方案

选项描述示例备注

NONE

没有进行规范化。Envoy 接收的任何内容都会完全按原样转发到任何后端服务。

../%2Fa../b 由授权策略评估并发送到您的服务。

此设置会受到 CVE-2021-31920 的影响。

BASE

这是目前 Istio 默认安装中使用的选项。这在 Envoy 代理上应用 normalize_path 选项,该选项在 RFC 3986 之后使用额外的规范化来转换反斜杠来正斜杠。

/a/../b 被规范化为 /b\da 被规范化为 /da

此设置会受到 CVE-2021-31920 的影响。

MERGE_SLASHES

斜杠会在 BASE 规范化后合并。

/a//b 被规范化为 /a/b

更新此设置以缓解 CVE-2021-31920 的问题。

DECODE_AND_MERGE_SLASHES

默认允许所有流量时的最严格设置。建议使用此设置,请注意您必须对您的授权策略路由进行彻底测试。Percent 编码的 斜杠和反斜杠字符(%2F%2f%5C%5c)被解码为 /\,在 MERGE_SLASHES 规范化前。

/a%2fb 规范化为 /a/b

更新此设置以缓解 CVE-2021-31920 的问题。这个设置更为安全,但可能会破坏应用程序。在部署到生产环境中前测试您的应用程序。

规范化算法按以下顺序进行:

  1. 解码百分比 %2F%2f%5C%5c
  2. RFC 3986 和其他在 Envoy 中的 normalize_path 选项实现的规范化。
  3. 合并斜杠。
警告

虽然这些规范化选项代表来自 HTTP 标准和常见行业实践的建议,但应用程序可能会以它选择的任何方式解释 URL。在使用拒绝策略时,请确保您了解应用程序的行为方式。

1.2.2.23.3. 路径规范配置示例

确保 Envoy 规范化请求路径以匹配后端服务的预期,对您的系统安全至关重要。以下示例可用作配置系统的参考。规范化 URL 路径,如果选择 NONE,则原始 URL 路径为:

  1. 用于检查授权策略。
  2. 转发到后端应用程序。

表 1.2. 配置示例

如果您的应用程序…​选择…​

依赖于代理进行规范化

BASEMERGE_SLASHESDECODE_AND_MERGE_SLASHES

根据 RFC 3986 规范化请求路径,且不合并斜杠。

BASE

根据 RFC 3986 和合并斜杠规范化请求路径,但不解码使用百分比编码的斜杠。

MERGE_SLASHES

根据 RFC 3986 规范化请求路径,解码 百分比编码的斜杠以及合并斜杠。

DECODE_AND_MERGE_SLASHES

以与 RFC 3986 不兼容的方式处理请求路径。

NONE

1.2.2.23.4. 为路径规范化配置 SMCP

要为 Red Hat OpenShift Service Mesh 配置路径规范化,请在 ServiceMeshControlPlane 中指定以下内容。使用配置示例来帮助确定您的系统设置。

SMCP v2 路径规范化

spec:
  techPreview:
    global:
      pathNormalization: <option>

1.2.2.23.5. 配置大小写规范化

在某些环境中,在授权策略中对路径进行比较时不区分大小写可能很有用。例如,把 https://myurl/get 视为与 https://myurl/GeT 一样。在这些情况下,您可以使用如下所示的 EnvoyFilter。此过滤器将更改用于比较的路径以及应用程序显示的路径。在本例中,istio-system 是 Service Mesh control plane 项目的名称。

EnvoyFilter 保存到文件中并运行以下命令:

$ oc create -f <myEnvoyFilterFile>
apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: ingress-case-insensitive
  namespace: istio-system
spec:
  configPatches:
  - applyTo: HTTP_FILTER
    match:
      context: GATEWAY
      listener:
        filterChain:
          filter:
            name: "envoy.filters.network.http_connection_manager"
            subFilter:
              name: "envoy.filters.http.router"
    patch:
      operation: INSERT_BEFORE
      value:
        name: envoy.lua
        typed_config:
            "@type": "type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua"
            inlineCode: |
              function envoy_on_request(request_handle)
                local path = request_handle:headers():get(":path")
                request_handle:headers():replace(":path", string.lower(path))
              end

1.2.2.24. Red Hat OpenShift Service Mesh 2.0.3 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

另外,这个版本有以下新特性:

  • must-gather 数据收集工具中添加了一个选项,用于从指定的 Service Mesh control plane 命名空间中收集信息。如需更多信息,请参阅 OSSM-351
  • 提高了带有数百个命名空间的 Service Mesh control plane 的性能

1.2.2.25. Red Hat OpenShift Service Mesh 2.0.2 的新功能

此 Red Hat OpenShift Service Mesh 发行版本添加了对 IBM Z 和 IBM Power Systems 的支持。它还解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.26. Red Hat OpenShift Service Mesh 2.0.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。

1.2.2.27. Red Hat OpenShift Service Mesh 2.0 的新功能

此 Red Hat OpenShift Service Mesh 发行版本添加了对 Istio 1.6.5、Jaeger 1.20.0、Kiali 1.24.2、3scale Istio Adapter 2.0 和 OpenShift Container Platform 4.6 的支持。

另外,这个版本有以下新特性:

  • 简化了 Service Mesh control plane 的安装、升级和管理。
  • 减少 Service Mesh control plane 的资源使用情况和启动时间。
  • 通过降低网络间 control plane 通讯来提高性能。

    • 添加对 Envoy 的 Secret Discovery Service(SDS)的支持。SDS 是一个更加安全有效地向 Envoy side car proxies 发送 secret 的机制。
  • 不再需要使用具有已知安全风险的 Kubernetes Secret。
  • 在轮转证书的过程中提高了性能,因为代理不再需要重启来识别新证书。

    • 添加了对 Istio Telemetry v2 架构的支持,该架构是由 WebAssembly 扩展构建的。这个新架构带来了显著的性能改进。
    • 使用简化的配置将 ServiceMeshControlPlane 资源更新至 v2,以便更轻松地管理 Service Mesh Control Plane。
    • 增加了 WebAsembly 扩展作为技术预览功能

1.2.3. 技术预览

这个版本中的一些功能当前还处于技术预览状态。它们并不适用于在生产环境中使用。

重要

技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅技术预览支持范围

1.2.3.1. Istio 兼容性和支持列表

在下表中,被标记为以下状态的功能:

  • TP: 技术预览
  • GA: 正式发行

请参阅红帽门户网站中关于对技术预览功能支持范围的信息:

表 1.3. Istio 兼容性和支持列表

功能Istio 版本支持状态描述

holdApplicationUntilProxyStarts

1.7

TP

阻止应用程序容器启动,直到代理正在运行

DNS 捕获

1.8

GA

默认启用

1.2.4. 弃用和删除的功能

之前版本中的一些功能已被弃用或删除。

弃用的功能仍然包含在 OpenShift Container Platform 中,并将继续被支持。但是,这个功能会在以后的发行版本中被删除,且不建议在新的部署中使用。

删除的功能不再存在于产品中。

1.2.4.1. Red Hat OpenShift Service Mesh 2.2 已弃用的功能

ServiceMeshExtension API 从版本 2.2 开始已弃用,并将在以后的版本中删除。虽然 ServiceMeshExtension API 仍然在 2.2 版本中被支持,但客户应该开始使用新的 WasmPlugin API。

1.2.4.2. 删除了 Red Hat OpenShift Service Mesh 2.2 的功能

对于所有平台,此发行版本结束了对基于 Service Mesh 1.1 的 Service Mesh Control Planes 的支持。

1.2.4.3. 删除了 Red Hat OpenShift Service Mesh 2.1 的功能

在 Service Mesh 2.1 中,Mixer 组件被删除。程序错误修正和支持会在 Service Mesh 2.0 生命周期结束时提供。

如果启用了 Mixer 插件,则不会从 Service Mesh 2.0.x 升级到 2.1。Mixer 插件必须移植到 WebAssembly 扩展。

1.2.4.4. Red Hat OpenShift Service Mesh 2.0 已弃用的功能

Mixer 组件在版本 2.0 中已弃用,并将在版本 2.1 中删除。虽然在版本 2.0 中仍支持使用 Mixer 来实现扩展,但扩展应该已迁移到新的 WebAsembly 机制。

Red Hat OpenShift Service Mesh 2.0 不再支持以下资源类型:

  • Policy(策略) (authentication.istio.io/v1alpha1)不再被支持。根据策略资源中的具体配置,您可能需要配置多个资源来达到同样效果。

    • 使用 RequestAuthentication (security.istio.io/v1beta1)
    • 使用 PeerAuthentication (security.istio.io/v1beta1)
  • ServiceMeshPolicy (maistra.io/v1)不再被支持。

    • 使用上述 RequestAuthenticationPeerAuthentication,但放置在 Service Mesh control plane 命名空间中。
  • RbacConfig(rbac.istio.io/v1alpha1)不再被支持。

    • AuthorizationPolicy (security.istio.io/v1beta1)替代,其中包含 RbacConfigServiceRoleServiceRoleBinding 的行为。
  • ServiceMeshRbacConfig( maistra.io/v1)不再被支持。

    • 使用上述 AuthorizationPolicy,但保留在 Service Mesh control plane 命名空间中。
  • ServiceRole(rbac.istio.io/v1alpha1)不再被支持。
  • ServiceRoleBinding(rbac.istio.io/v1alpha1)不再被支持。
  • 在 Kiali 中,loginLDAP 策略已被弃用。将来的版本将引入使用 OpenID 供应商的身份验证。

1.2.5. 已知问题

Red Hat OpenShift Service Mesh 中存在以下限制:

  • Red Hat OpenShift Service Mesh 尚不支持 IPv6,因为它还没有被上游 Istio 项目完全支持。因此,Red Hat OpenShift Service Mesh 不支持双栈集群。
  • 图形布局 - Kiali 图形的布局会根据应用程序构架和要显示的数据(图形节点数目及其交互)的不同而有所变化。因为创建一个统一布局的难度较大,所以 Kiali 提供了几种不同布局的选择。要选择不同的布局,可从 Graph Settings 菜单中选择一个不同的 Layout Schema
  • 首次从 Kiali 控制台访问相关服务(如分布式追踪平台和 Grafana)时,必须使用 OpenShift Container Platform 登录凭证接受证书并重新进行身份验证。这是因为框架如何显示控制台中的内置页面中存在问题。
  • Bookinfo 示例应用程序不能安装在 IBM Z 和 IBM Power 上。
  • IBM Z 和 IBM Power 不支持 WebAsembly 扩展。
  • IBM Power 不支持 LuaJIT。

1.2.5.1. Service Mesh 已知问题

Red Hat OpenShift Service Mesh 有以下已知的问题:

  • Istio-14743 因为此 Red Hat OpenShift Service Mesh 版本所基于的 Istio 版本的限制,目前有一些应用程序与 Service Mesh 还不兼容。详参阅社区的相关链接。
  • OSSM-1655 Kiali 仪表板在 SMCP 中启用 mTLS 后显示错误。

    在 SMCP 中启用 spec.security.controlPlane.mtls 设置后,Kiali 控制台会显示以下错误消息 No subsets defined

  • OSSM-1505 只有在 OpenShift Container Platform 4.11 中使用 ServiceMeshExtension 资源时才会发生。当在 OpenShift Container Platform 4.11 上使用 ServiceMeshExtension 时,资源永不会变为就绪。如果使用 oc describe ServiceMeshExtension 检查问题,您会看到以下错误:stderr: Error create mount namespace before pivot: function not implemented

    临时解决方案:ServiceMeshExtension 在 Service Mesh 2.2 中已弃用。从 ServiceMeshExtension 迁移到 WasmPlugin 资源。如需更多信息,请参阅从 ServiceMeshExtension 迁移到 WasmPlugin 资源。

  • OSSM-1396 如果一个网关资源包含 spec.externalIPs 设置,而不是在 ServiceMeshControlPlane 更新时重新创建,则该网关会被删除且永远不会重新创建。
  • OSSM-1168 当以单个 YAML 文件形式创建服务网格资源时,Envoy proxy sidecar 不会可靠地注入 pod。当单独创建 SMCP、SMMR 和 Deployment 资源时,部署可以正常工作。
  • OSSM-1052 在为服务网格 control plane 中为 ingressgateway 配置 Service ExternalIP 时,不会创建该服务。SMCP 的 schema 缺少该服务的参数。

    临时解决方案:禁用 SMCP spec 中的网关创建,手动管理网关部署(包括 Service、Role 和 RoleBinding)。

  • OSSM-882 适用于 Service Mesh 2.1 及更早版本。命名空间位于 accessible_namespace 列表中,但不出现在 Kiali UI 中。默认情况下,Kiali 不会显示任何以"kube"开头的命名空间,因为这些命名空间通常仅供内部使用,而不是网格的一部分。

    例如,如果您创建一个名为 'akube-a' 的命名空间并将其添加到 Service Mesh member roll 中,Kiali UI 不会显示这个命名空间。这是因为对于定义的排除特征,软件会排除以定义特征开始或包括定义特征的命名空间。

    临时解决方案:更改 Kiali 自定义资源设置,以便使用尖号 (^) 前缀设置。例如:

    api:
      namespaces:
        exclude:
        - "^istio-operator"
        - "^kube-.*"
        - "^openshift.*"
        - "^ibm.*"
        - "^kiali-operator"
  • MAISTRA-2692 删除了 Mixer,在 Service Mesh 2.0.x 中定义的自定义指标无法在 2.1 中使用。可以使用 EnvoyFilter 配置自定义指标。除非有明确记录,红帽不支持 EnvoyFilter 配置。这是因为与底层 Envoy API 耦合紧密,这意味着无法维护向后兼容性。
  • MAISTRA-2648 ServiceMeshExtensions 目前与 IBM Z Systems 上部署的网格不兼容。
  • MAISTRA-1959 迁移到 2.0 Prometheus 提取(spec.addons.prometheus.scrape 设置为 true)在启用 mTLS 时无法正常工作。另外,当禁用 mTLS 时,Kiali 会显示无关的图形数据。

    可通过将端口 15020 从代理配置中排除来解决这个问题,例如:

    spec:
      proxy:
        networking:
          trafficControl:
            inbound:
              excludedPorts:
              - 15020
  • MAISTRA-1314 Red Hat OpenShift Service Mesh 尚不支持 IPv6。
  • MAISTRA-453 如果创建新项目并立即部署 pod,则不会进行 sidecar 注入。在创建 pod 前,operator 无法添加 maistra.io/member-of ,因此必须删除 pod 并重新创建它以执行 sidecar 注入操作。
  • MAISTRA-158 应用指向同一主机名的多个网关时,会导致所有网关停止工作。

1.2.5.2. Kiali 已知问题

注意

Kiali 的新问题应该在 OpenShift Service Mesh 项目中创建,Component 设为 Kiali

Kiali 中已知的问题:

  • KIALI-2206 当您第一次访问 Kiali 控制台时,浏览器中没有 Kiali 的缓存数据,Kiali 服务详情页面的 Metrics 标签页中的 “View in grafana” 链接会重定向到错误的位置。只有在第一次访问 Kiali 才会出现这个问题。
  • KIALI-507 Kiali 不支持 Internet Explorer 11。这是因为底层框架不支持 Internet Explorer。要访问 Kiali 控制台,请使用 Chrome 、Edge 、Firefox 或 Safari 浏览器的两个最新版本之一。

1.2.5.3. Red Hat OpenShift 分布式追踪已知问题

Red Hat OpenShift 分布式追踪中存在这些限制:

  • 不支持 Apache spark。
  • IBM Z 和 IBM Power Systems 上不支持通过 AMQ/Kafka 进行流部署。

Red Hat OpenShift 分布式追踪有以下已知的问题:

  • TRACING-2057 Kafka API 已更新至 v1beta2,以支持 Strimzi Kafka Operator 0.23.0。但是,AMQ Streams 1.6.3 不支持这个 API 版本。如果您有以下环境,将不会升级 Jaeger 服务,您无法创建新的 Jaeger 服务或修改现有的 Jaeger 服务:

    • Jaeger Operator 频道:1.17.x stable1.20.x stable
    • AMQ Streams Operator 频道: amq-streams-1.6.x

      要解决这个问题,将 AMQ Streams Operator 的订阅频道切换到 amq-streams-1.7.xstable

1.2.6. 修复的问题

在当前发行本中解决了以下问题:

1.2.6.1. Service Mesh 修复的问题

  • OSSM-2053 使用 Red Hat OpenShift Service Mesh Operator 2.2 或 2.3,在 SMCP 协调过程中,SMMR 控制器会从 SMMR.status.configuredMembers 中删除成员命名空间。这会导致成员命名空间中的服务在一些时间不可用。

    使用 Red Hat OpenShift Service Mesh Operator 2.2 或 2.3,SMMR 控制器不再从 SMMR.status.configuredMembers 中删除命名空间。相反,控制器会将命名空间添加到 SMMR.status.pendingMembers 中,以指示它们不是最新的。在协调过程中,因为每个命名空间与 SMCP 同步,命名空间会自动从 SMMR.status.pendingMembers 中删除。

  • OSSM-1668 一个新的字段 spec.security.jwksResolverCA 已添加到版本 2.1 SMCP 中,但没有存在于 2.2.0 和 2.2.1 版本中。当从存在此字段的 Operator 版本升级到缺少此字段的 Operator 版本时,则 SMCP 中没有 .spec.security.jwksResolverCA 字段。
  • OSSM-1325 istiod pod 崩溃并显示以下出错信息:fatal error: concurrent map iteration and map write
  • OSSM-1211 为故障转移配置联邦服务网格无法正常工作。

    Istiod pilot 日志显示以下错误: envoy connection [C289] TLS error: 337047686:SSL routines:tls_process_server_certificate:certificate verify failed

  • OSSM-1099 Kiali 控制台显示消息 Sorry, there was a problem.Try a refresh or navigate to a different page.
  • OSSM-1074 Pod 注解没有在 pod 中注入。
  • OSSM-999 Kiali retention 无法按预期工作。仪表板图中的日历时间会被问候。
  • OSSM-797 Kiali Operator pod 在安装或更新 Operator 时生成 CreateContainerConfigError
  • kube 开始的 OSSM-722 命名空间从 Kiali 中隐藏。
  • OSSM-569 Prometheus istio-proxy 容器没有 CPU 内存限值。Prometheus istio-proxy sidecar 现在使用 spec.proxy.runtime.container 中定义的资源限值。
  • OSSM-449 VirtualService 和 Service 会导致一个错误 - "Only unique values for domains are permitted.Duplicate entry of domain."
  • 具有类似名称的 OSSM-419 命名空间都显示在 Kiali 命名空间列表中,即使命名空间可能无法在 Service Mesh Member Role 中定义。
  • OSSM-296 当在 Kiali 自定义资源(CR)中添加健康配置时,不会将其复制到 Kiali configmap 中。
  • OSSM-291 在 Kiali 控制台中,在 Applications、Services 和 Workloads 页面中,"Remove Label from Filters"功能无法正常工作。
  • OSSM-289 在 Kiali 控制台中,'istio-ingressgateway' 和 'jaeger-query' 服务的服务详情页面中没有显示 Traces。Jaeger 中存在 trace。
  • OSSM-287 在 Kiali 控制台中没有显示 Graph 服务中的 trace。
  • OSSM-285 试图访问 Kiali 控制台时会收到以下错误消息:"Error trying to get OAuth Metadata"。

    临时解决方案:重启 Kiali pod。

  • MAISTRA-2735 当 Red Hat OpenShift Service Mesh 2.1 中协调 SMCP 更改时,Service Mesh Operator 会删除的资源。在以前的版本中,Operator 删除了带有以下标签的资源:

    • maistra.io/owner
    • app.kubernetes.io/version

    现在,Operator 会忽略没有包括 app.kubernetes.io/managed-by=maistra-istio-operator 标签的资源。如果创建自己的资源,则不应将 app.kubernetes.io/managed-by=maistra-istio-operator 标签添加到其中。

  • MAISTRA-2687 Red Hat OpenShift Service Mesh 2.1 联邦网关在使用外部证书时不会发送完整的证书链。Service Mesh 联邦出口网关仅发送客户端证书。因为联邦入口网关只知道 root 证书,所以它无法验证客户端证书,除非您将 root 证书添加到联合导入 ConfigMap 中。
  • MAISTRA-2635 替换已弃用的 Kubernetes API。从 Red Hat OpenShift Service Mesh 2.0.8 开始,为保持与 OpenShift Container Platform 4.8 的兼容性,apiextensions.k8s.io/v1beta1 API 已被弃用。
  • MAISTRA-2631 WASM 功能不起作用,因为 podman 因 nsenter 二进制不存在而失败。Red Hat OpenShift Service Mesh 生成以下出错信息:Error: error configuring CNI network plugin exec: "nsenter": executable file not found in $PATH。容器镜像现在包含 nsenter,WASM 可以正常工作。
  • MAISTRA-2534 当 istiod 试图为 JWT 规则中指定的签发者获取 JWKS 时,签发者服务会使用 502 响应。这导致代理容器就绪,并导致部署挂起。Service Mesh 2.0.7 版本中包括了对社区程序漏洞的修复。
  • MAISTRA-2411 当 Operator 使用 ServiceMeshControlPlane 中的 spec.gateways.additionaIngress 创建新的入口网关时,Operator 不会为额外的入口网关创建一个 NetworkPolicy,如默认的 istio-ingressgateway。这导致了来自新网关路由的 503 响应。

    临时解决方案:在 <istio-system> 命名空间中手动创建 NetworkPolicy

  • MAISTRA-2401 CVE-2021-3586 servicemesh-operator:NetworkPolicy 资源为 ingress 资源指定错误的端口。为 Red Hat OpenShift Service Mesh 安装的 NetworkPolicy 资源没有正确指定可访问哪些端口。这允许从任何 pod 访问这些资源上的所有端口。应用到以下资源的网络策略会受到影响:

    • Galley
    • Grafana
    • Istiod
    • Jaeger
    • Kiali
    • Prometheus
    • Sidecar injector
  • MAISTRA-2378 当集群被配置为使用带有 ovs-multitenant 的 OpenShiftSDN,且网格包含大量命名空间(200+),OpenShift Container Platform 网络插件无法快速配置命名空间。Service Mesh 超时会导致从服务网格中持续丢弃命名空间,然后重新加入。
  • MAISTRA-2370 Handle tombstones in listerInformer。在将事件从命名空间缓存转换为聚合缓存时,更新的缓存代码库没有处理 tombstones,从而导致在 go 中出现 panic 的问题。
  • MAISTRA-2117 向 operator 添加可选的 ConfigMap 挂载。CSV 现在包含一个可选的 ConfigMap 卷挂载,它会挂载 smcp-templates ConfigMap (如果存在)。如果 smcp-templates ConfigMap 不存在,则挂载的目录为空。创建 ConfigMap 时,目录会填充 ConfigMap 中的条目,并可在 SMCP.spec.profiles 中引用。不需要重启 Service Mesh operator。

    使用带有修改 CSV 的 2.0 operator 挂载 smcp-templates ConfigMap 的用户可升级到 Red Hat OpenShift Service Mesh 2.1。升级后,您可以继续使用现有的 ConfigMap 及其包含的配置集,而无需编辑 CSV。以前使用不同名称的 ConfigMap 的客户需要重命名 ConfigMap 或升级后更新 CSV。

  • MAISTRA-2010 AuthorizationPolicy 不支持 request.regex.headers 字段。validatingwebhook 会拒绝任何带有字段的 AuthorizationPolicy,即使您禁用该字段,Pilot 也会尝试使用相同的代码验证它,且它无法正常工作。
  • MAISTRA-1979 迁移至 2.0 在将 SMCP.status 从 v2 转换为 v1 时,转换 Webhook 会丢弃以下重要字段:

    • conditions
    • components
    • observedGeneration
    • annotations

      将 operator 升级到 2.0 可能会破坏使用 maistra.io/v1 版本读取 SMCP 状态的客户端工具。

      这还会导致在运行 oc get servicemeshcontrolplanes.v1.maistra.io 时 READY 和 STATUS 列为空。

  • MAISTRA-1947 技术预览 更新至 ServiceMeshExtensions 不会被应用。

    临时解决方案:删除并重新创建 ServiceMeshExtensions

  • MAISTRA-1983 迁移到 2.0 把带有存在无效 ServiceMeshControlPlane 的系统升级到 2.0.0 的问题无法被简单修复。ServiceMeshControlPlane 资源中的无效项会导致无法恢复的错误。在这个版本中,这个错误可以被恢复。您可以删除无效的资源,并将其替换为新资源或编辑资源来修复错误。有关编辑资源的更多信息,请参阅 [配置 Red Hat OpenShift Service Mesh 安装]。
  • MAISTRA-1502 由于在版本 1.0.10 中修复了 CVE,Istio 仪表板将不会出现在 Grafana 的 Home Dashboard 菜单中。要访问 Istio 仪表板,点导航面板中的 Dashboard 菜单,然后选择 Manage 选项卡。
  • MAISTRA-1399 Red Hat OpenShift Service Mesh 不再阻止您安装不支持的 CNI 协议。支持的网络配置没有改变。
  • MAISTRA-1089 迁移到在非 control plane 命名空间中创建的 2.0 网关将自动删除。从 SMCP spec 中删除网关定义后,您需要手动删除这些资源。
  • MAISTRA-858 Envoy 日志中以下与 与 Istio 1.1.x 相关的弃用选项和配置相关的信息是正常的:

    • [2019-06-03 07:03:28.943][19][warning][misc] [external/envoy/source/common/protobuf/utility.cc:129] Using deprecated option 'envoy.api.v2.listener.Filter.config'。This configuration will be removed from Envoy soon.
    • [2019-08-12 22:12:59.001][13][warning][misc] [external/envoy/source/common/protobuf/utility.cc:174] Using deprecated option 'envoy.api.v2.Listener.use_original_dst' from file LDS.proto。This configuration will be removed from Envoy soon.
  • MAISTRA-806 被逐出的 Istio Operator Pod 会导致 mesh 和 CNI 不能被部署。

    临时解决方案:如果在部署 control pane 时 istio-operator pod 被逐出,删除被逐出的 istio-operator pod。

  • MAISTRA-681 当 Service Mesh control plane 有多个命名空间时,可能会导致出现性能问题。
  • MAISTRA-193 当为 citadel 启用了健康检查功能时,会出现预期外的控制台信息。
  • Bugzilla 1821432 OpenShift Container Platform 自定义资源详情页面中的切换控件无法正确更新 CR。OpenShift Container Platform Web 控制台中的 Service Mesh Control Plane (smcp) Overview 页面中的 UI 切换控制有时会更新资源中的错误字段。要更新 SMCP,直接编辑 YAML 内容,或者从命令行更新资源,而不是点击 toggle 控件。

1.2.6.2. Red Hat OpenShift 分布式追踪问题

  • TRACING-2337 Jaeger 在 Jaeger 日志中记录一个重复的警告信息,如下所示:

    {"level":"warn","ts":1642438880.918793,"caller":"channelz/logging.go:62","msg":"[core]grpc: Server.Serve failed to create ServerTransport: connection error: desc = \"transport: http2Server.HandleStreams received bogus greeting from client: \\\"\\\\x16\\\\x03\\\\x01\\\\x02\\\\x00\\\\x01\\\\x00\\\\x01\\\\xfc\\\\x03\\\\x03vw\\\\x1a\\\\xc9T\\\\xe7\\\\xdaCj\\\\xb7\\\\x8dK\\\\xa6\\\"\"","system":"grpc","grpc_log":true}

    这个问题已通过只公开查询服务的 HTTP(S)端口而不是 gRPC 端口来解决。

  • TRACING-2009 已更新 Jaeger Operator,使其包含对 Strimzi Kafka Operator 0.23.0 的支持。
  • TRACING-1907 Jaeger 代理 sidecar 注入失败,因为应用程序命名空间中缺少配置映射。因为 OwnerReference 字段设置不正确,配置映射会被自动删除,因此应用程序 pod 不会超过 "ContainerCreating" 阶段。已删除不正确的设置。
  • TRACING-1725 转入到 TRACING-1631。额外的程序漏洞修复,可确保当存在多个生产环境的 Jaeger 实例,它们使用相同的名称但在不同的命名空间中时,Elasticsearch 证书可以被正确协调。另请参阅 BZ-1918920
  • TRACING-1631 多 Jaeger 生产环境实例使用相同的名称但在不同命名空间中,因此会导致 Elasticsearch 证书问题。安装多个服务网格时,所有 Jaeger Elasticsearch 实例都有相同的 Elasticsearch secret 而不是单独的 secret,这导致 OpenShift Elasticsearch Operator 无法与所有 Elasticsearch 集群通信。
  • 在使用 Istio sidecar 时,在 Agent 和 Collector 间的连接会出现 TRACING-1300 失败。对 Jaeger Operator 的更新默认启用了 Jaeger sidecar 代理和 Jaeger Collector 之间的 TLS 通信。
  • TRACING-1208 访问 Jaeger UI 时的身份验证 "500 Internal Error" 错误。当尝试使用 OAuth 验证 UI 时,会得到 500 错误,因为 oauth-proxy sidecar 不信任安装时使用 additionalTrustBundle 定义的自定义 CA 捆绑包。
  • TRACING-1166 目前无法在断开网络连接的环境中使用 Jaeger 流策略。当一个 Kafka 集群被置备时,它会产生一个错误: Failed to pull image registry.redhat.io/amq7/amq-streams-kafka-24-rhel7@sha256:f9ceca004f1b7DCCB3b82d9a8027961f9fe4104e0ed69752c0bdd8078b4a1076
  • TRACING-809 Jaeger Ingester 与 Kafka 2.3 不兼容。当存在两个或多个 Jaeger Ingester 实例时,它会不断在日志中生成重新平衡信息。这是由于在 Kafka 2.3 里存在一个程序错误,它已在 Kafka 2.3.1 中修复。如需更多信息,请参阅 Jaegertracing-1819
  • BZ-1918920/LOG-1619 / LOG-1619,Elasticsearch Pod 在更新后不会自动重启。

    临时解决方案:手动重启 pod。