1.2. Service Mesh 发行注记

1.2.1. 使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

1.2.2. 新功能及功能增强

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

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

此 Red Hat OpenShift Service Mesh 发行版本添加了新的功能,解决了 CVE 报告的安全漏洞问题(CVE),包含程序错误修复,并受 OpenShift Container Platform 4.12 及更新的版本的支持。

此发行版本结束了对 OpenShift Service Mesh 版本 2.2 的维护支持。如果使用 OpenShift Service Mesh 版本 2.2,您应该升级到受支持的版本。

1.2.2.1.1. Red Hat OpenShift Service Mesh 2.5 的组件版本
组件版本

Istio

1.18.5

Envoy Proxy

1.26.8

Kiali

1.73.4

1.2.2.1.2. Istio 1.18 支持

Service Mesh 2.5 基于 Istio 1.18,它引入了新功能和产品改进。虽然 Red Hat OpenShift Service Mesh 支持许多 Istio 1.18 功能,但请注意以下例外:

  • 不支持 ambient mesh
  • 不支持 Istio 中的 QuickAssist Technology (QAT) PrivateKeyProvider
1.2.2.1.3. 集群范围的网格迁移

此发行版本添加了从多租户网格迁移到集群范围代理的文档。如需更多信息,请参阅以下文档:

  • "关于迁移到集群范围的网格"
  • "从集群范围的网格中排除命名空间"
  • "定义哪些命名空间在集群范围的网格中接收 sidecar 注入"
  • "不包括集群范围的网格中的单个 pod"
1.2.2.1.4. 基于 ARM 的集群中的 Red Hat OpenShift Service Mesh Operator

此发行版本在基于 ARM 的集群上提供了 Red Hat OpenShift Service Mesh Operator,作为正式发布的功能。

1.2.2.1.5. 与 Red Hat OpenShift distributed tracing Platform (Tempo) Stack 集成

此发行版本引入了对追踪扩展供应商的通用集成。您可以通过将指定元素和 zipkin 供应商附加到 spec.meshConfig.extensionProviders 规格,将追踪数据公开给 Red Hat OpenShift distributed tracing 平台(Tempo) 堆栈。然后,遥测自定义资源将 Istio 代理配置为收集 trace 并将其发送到 Tempo 经销商服务端点。

注意

{ibm-z-title} 不支持 Red Hat OpenShift distributed tracing Platform (Tempo) Stack。

1.2.2.1.6. OpenShift Service Mesh 控制台插件

此发行版本引入了 OpenShift Service Mesh 控制台 (OSSMC) 插件的通用版本。

OSSMC 插件是 OpenShift 控制台的扩展,可为您的 Service Mesh 提供可见性。安装 OSSMC 插件后,在 web 控制台的导航框中提供了一个新的 Service Mesh 菜单选项,以及增强现有 Workloads 和 Service 控制台页面的新的 Service Mesh 标签页。

OSSMC 插件的功能与独立 Kiali 控制台的功能非常相似。OSSMC 插件不会替换 Kiali 控制台,在安装 OSSMC 插件后,您仍可以访问独立 Kiali 控制台。

1.2.2.1.7. Istio OpenShift 路由 (IOR) 默认设置更改

Istio OpenShift 路由 (IOR) 的默认设置已更改。从这个版本开始,对于 ServiceMeshControlPlane 资源的新实例,默认禁用自动路由。

对于 ServiceMeshControlPlane 资源的新实例,您可以通过在 ServiceMeshControlPlane 资源的 gateway .openshiftRoute 规格中将 enabled 字段设置为 true 来使用自动路由。

ServiceMeshControlPlane 资源示例

apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
spec:
  gateways:
    openshiftRoute:
      enabled: true

ServiceMeshControlPlane 资源的现有实例更新至 Red Hat OpenShift Service Mesh 版本 2.5 时,自动路由会默认启用。

1.2.2.1.8. Istio 代理并发配置增强

networking.istio API 中的 concurrency 参数配置 Istio 代理运行的 worker 线程数量。

为了维护部署间的一致性,Istio 现在根据分配给代理容器的 CPU 限制配置 concurrency 参数。例如,2500m 的限制会将 concurrency 参数设置为 3。如果将 concurrency 参数设置为不同的值,则 Istio 会使用该值来配置代理运行的线程数量,而不是使用 CPU 限制。

在以前的版本中,参数的默认设置是 2

1.2.2.1.9. 网关 API CRD 版本
重要

OpenShift Container Platform Gateway API 支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

现在提供了网关 API 自定义资源定义 (CRD) 的新版本。请参阅下表来确定应使用的 OpenShift Service Mesh 版本安装哪个网关 API 版本:

Service Mesh 版本Istio 版本网关 API 版本

2.5.x

1.18.x

0.6.2

使用 experimental 分支,因为 v0.6.2 缺少 ReferenceGrand

2.4.x

1.16.x

0.5.1

对于多租户网格部署,所有网关 API CRD 都必须存在。使用 experimental 分支。

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

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

1.2.2.2.1. Red Hat OpenShift Service Mesh 2.4.6 的组件版本
组件版本

Istio

1.16.7

Envoy Proxy

1.24.12

Kiali

1.65.11

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

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.11 及更新的版本的支持。

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

Istio

1.16.7

Envoy Proxy

1.24.12

Jaeger

1.47.0

Kiali

1.65.11

1.2.2.4. Red Hat OpenShift Service Mesh 版本 2.4.4 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.11 及更新的版本的支持。

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

Istio

1.16.7

Envoy Proxy

1.24.12

Jaeger

1.47.0

Kiali

1.65.10

1.2.2.5. Red Hat OpenShift Service Mesh 版本 2.4.3 的新功能

  • Red Hat OpenShift Service Mesh Operator 现在在基于 ARM 的集群上作为技术预览功能提供。
  • 添加了 envoyExtAuthzGrpc 字段,该字段用于使用 gRPC API 配置外部授权提供程序。
  • 解决了常见的漏洞和风险(CVE)。
  • 此发行版本在 OpenShift Container Platform 4.10 及更新的版本中被支持。
1.2.2.5.1. Red Hat OpenShift Service Mesh 2.4.3 版中包含的组件版本
组件版本

Istio

1.16.7

Envoy Proxy

1.24.10

Jaeger

1.42.0

Kiali

1.65.8

1.2.2.5.2. Red Hat OpenShift Service Mesh operator 到基于 ARM 的集群
重要

Red Hat OpenShift Service Mesh operator 到 ARM 的集群只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

此发行版本使 Red Hat OpenShift Service Mesh Operator 在基于 ARM 的集群上作为技术预览功能提供。提供了 Istio, Envoy, Prometheus, Kiali, 和 Grafana 镜像。没有 Jaeger 镜像,因此 Jaeger 必须作为 Service Mesh 附加组件禁用。

1.2.2.5.3. 远程过程调用(gRPC) API 支持外部授权配置

此功能增强添加了 envoyExtAuthzGrpc 字段,以使用 gRPC API 配置外部授权供应商。

1.2.2.6. Red Hat OpenShift Service Mesh 版本 2.4.2 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

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

Istio

1.16.7

Envoy Proxy

1.24.10

Jaeger

1.42.0

Kiali

1.65.7

1.2.2.7. Red Hat OpenShift Service Mesh 版本 2.4.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

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

Istio

1.16.5

Envoy Proxy

1.24.8

Jaeger

1.42.0

Kiali

1.65.7

1.2.2.8. Red Hat OpenShift Service Mesh 版本 2.4 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

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

Istio

1.16.5

Envoy Proxy

1.24.8

Jaeger

1.42.0

Kiali

1.65.6

1.2.2.8.2. 集群范围的部署

此功能增强引入了集群范围的部署的通用版本。集群范围的部署包含一个服务网格 control plane,用于监控整个集群的资源。control plane 在所有命名空间中使用单个查询来监控影响网格配置的每个 Istio 或 Kubernetes 资源。减少集群范围的部署中 control plane 执行的查询数量可提高性能。

1.2.2.8.3. 支持发现选择器

此功能增强引入了一个通用的 meshConfig.discoverySelectors 字段版本,该字段可用于集群范围的部署来限制服务网格 control plane 可以发现的服务。

spec:
  meshConfig
    discoverySelectors:
    - matchLabels:
        env: prod
        region: us-east1
    - matchExpressions:
      - key: app
        operator: In
        values:
          - cassandra
          - spark
1.2.2.8.4. 与 cert-manager istio-csr 集成

在这个版本中,Red Hat OpenShift Service Mesh 与 cert-manager 控制器和 istio-csr 代理集成。cert-manager 在 Kubernetes 集群中将证书和证书签发者添加为资源类型,并简化了获取、续订和使用这些证书的过程。cert-manager 为 Istio 提供并轮转中间 CA 证书。与 istio-csr 集成可让用户将 Istio 代理的签名证书请求委派给 cert-managerServiceMeshControlPlane v2.4 接受 cert-manager 提供的 CA 证书作为 cacerts secret。

注意

IBM Power、IBM Z 和 IBM® LinuxONE 不支持与 cert-manageristio-csr 集成。

1.2.2.8.5. 与外部授权系统集成

此功能增强引入了一种通用可用的方法,使用 AuthorizationPolicy 资源的 action: CUSTOM 字段将 Red Hat OpenShift Service Mesh 与外部授权系统集成。使用 envoyExtAuthzHttp 字段将访问控制委派给外部授权系统。

1.2.2.8.6. 与外部 Prometheus 安装集成

此功能增强引入了 Prometheus 扩展供应商的通用版本。您可以通过在 spec.meshConfig 规格中将 extensionProviders 字段的值设置为 prometheus,将指标公开给 OpenShift Container Platform 监控堆栈或自定义 Prometheus 安装。Telemetry 对象配置 Istio 代理来收集流量指标。Service Mesh 只支持 Prometheus 指标的 Telemetry API。

spec:
  meshConfig:
    extensionProviders:
    - name: prometheus
      prometheus: {}
---
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
  name: enable-prometheus-metrics
spec:
  metrics:
  - providers:
    - name: prometheus
1.2.2.8.7. 单堆栈 IPv6 支持

此功能增强引进了对单堆栈 IPv6 集群的常用支持,提供对更广泛的 IP 地址的访问。不支持双堆栈 IPv4 或 IPv6 集群。

注意

IBM Power、IBM Z 和 IBM® LinuxONE 上不支持单一堆栈 IPv6。

1.2.2.8.8. OpenShift Container Platform Gateway API 支持
重要

OpenShift Container Platform Gateway API 支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

此功能增强引入了 OpenShift Container Platform Gateway API 的更新技术预览版本。默认情况下禁用 OpenShift Container Platform 网关 API。

1.2.2.8.8.1. 启用 OpenShift Container Platform 网关 API

要启用 OpenShift Container Platform Gateway API,在 ServiceMeshControlPlane 资源的 techPreview.gatewayAPI 规格中将 enabled 字段的值设置为 true

spec:
  techPreview:
    gatewayAPI:
      enabled: true

在以前的版本中,环境变量用于启用网关 API。

spec:
  runtime:
    components:
      pilot:
        container:
          env:
            PILOT_ENABLE_GATEWAY_API: "true"
            PILOT_ENABLE_GATEWAY_API_STATUS: "true"
            PILOT_ENABLE_GATEWAY_API_DEPLOYMENT_CONTROLLER: "true"
1.2.2.8.9. 在基础架构节点上部署 control plane

Service Mesh control plane 部署现在在 OpenShift 基础架构节点上被支持并记录。如需更多信息,请参阅以下文档:

  • 配置所有 Service Mesh control plane 组件以便在基础架构节点上运行
  • 配置单个 Service Mesh control plane 组件以便在基础架构节点上运行
1.2.2.8.10. Istio 1.16 支持

Service Mesh 2.4 基于 Istio 1.16,它引入了新功能和产品改进。虽然很多 Istio 1.16 功能被支持,但请注意以下例外:

  • 对于 sidecar 的 HBONE 协议是一个实验性功能,它不被支持。
  • 不支持 ARM64 架构上的 Service Mesh。
  • OpenTelemetry API 仍是一个技术预览功能。

1.2.2.9. Red Hat OpenShift Service Mesh 版本 2.3.10 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.11 及更新的版本的支持。

1.2.2.9.1. Red Hat OpenShift Service Mesh 2.3.10 的组件版本
组件版本

Istio

1.14.5

Envoy Proxy

1.22.11

Kiali

1.57.14

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

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.11 及更新的版本的支持。

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

Istio

1.14.5

Envoy Proxy

1.22.11

Jaeger

1.47.0

Kiali

1.57.14

1.2.2.11. Red Hat OpenShift Service Mesh 版本 2.3.8 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.11 及更新的版本的支持。

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

Istio

1.14.5

Envoy Proxy

1.22.11

Jaeger

1.47.0

Kiali

1.57.13

1.2.2.12. Red Hat OpenShift Service Mesh 版本 2.3.7 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

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

Istio

1.14.6

Envoy Proxy

1.22.11

Jaeger

1.42.0

Kiali

1.57.11

1.2.2.13. Red Hat OpenShift Service Mesh 版本 2.3.6 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

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

Istio

1.14.5

Envoy Proxy

1.22.11

Jaeger

1.42.0

Kiali

1.57.10

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

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

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

Istio

1.14.5

Envoy Proxy

1.22.9

Jaeger

1.42.0

Kiali

1.57.10

1.2.2.15. Red Hat OpenShift Service Mesh 版本 2.3.4 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

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

Istio

1.14.6

Envoy Proxy

1.22.9

Jaeger

1.42.0

Kiali

1.57.9

1.2.2.16. Red Hat OpenShift Service Mesh 版本 2.3.3 的新功能

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

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

Istio

1.14.5

Envoy Proxy

1.22.9

Jaeger

1.42.0

Kiali

1.57.7

1.2.2.17. Red Hat OpenShift Service Mesh 版本 2.3.2 的新功能

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

1.2.2.17.1. Red Hat OpenShift Service Mesh 2.3.2 版中包含的组件版本
组件版本

Istio

1.14.5

Envoy Proxy

1.22.7

Jaeger

1.39

Kiali

1.57.6

1.2.2.18. Red Hat OpenShift Service Mesh 版本 2.3.1 的新功能

此 Red Hat OpenShift Service Mesh 发行版本引入了新功能,解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。

1.2.2.18.1. Red Hat OpenShift Service Mesh 2.3.1 版中包含的组件版本
组件版本

Istio

1.14.5

Envoy Proxy

1.22.4

Jaeger

1.39

Kiali

1.57.5

1.2.2.19. Red Hat OpenShift Service Mesh 版本 2.3 的新功能

此 Red Hat OpenShift Service Mesh 发行版本引入了新功能,解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。

1.2.2.19.1. Red Hat OpenShift Service Mesh 2.3 版中包含的组件版本
组件版本

Istio

1.14.3

Envoy Proxy

1.22.4

Jaeger

1.38

Kiali

1.57.3

1.2.2.19.2. 新的 Container Network Interface (CNI) DaemonSet 容器和 ConfigMap

openshift-operators 命名空间包括一个新的 istio CNI DaemonSet istio-cni-node-v2-3 和一个新的 ConfigMap 资源 istio-cni-config-v2-3

当升级到 Service Mesh Control Plane 2.3 时,现有的 istio-cni-node DaemonSet 不会改变,并创建新的 istio-cni-node-v2-3 DaemonSet。

此名称更改不会影响之前的版本或任何使用上一发行版本的 Service Mesh Control Plane 关联的 istio-cni-node CNI DaemonSet。

1.2.2.19.3. 网关注入支持

此发行版本引入了对网关注入的通用支持。网关配置适用于在网格边缘运行的独立的 Envoy 代理,而不是与您的服务负载一同运行的 sidecar Envoy 代理。这可让自定义网关选项。在使用网关注入时,您必须在要运行网关代理的命名空间中创建以下资源:ServiceDeploymentRoleRoleBinding

1.2.2.19.4. Istio 1.14 支持

Service Mesh 2.3 基于 Istio 1.14,它引入了新功能和产品改进。虽然很多 Istio 1.14 功能被支持,但请注意以下例外:

  • 除 image 字段外,支持 proxyConfig API。
  • Telemetry API 是一个技术预览功能。
  • SPIRE 运行时不受支持。
1.2.2.19.5. OpenShift Service Mesh 控制台
重要

OpenShift Service Mesh 控制台只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

此发行版本引入了 OpenShift Container Platform Service Mesh 控制台的一个技术预览版本,它将 Kiali 界面直接集成到 OpenShift web 控制台中。如需更多信息,请参阅 引入 OpenShift Service Mesh 控制台(技术预览)

1.2.2.19.6. 集群范围的部署
重要

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

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

此发行版本引入了集群范围的部署,作为技术预览功能。集群范围的部署包含一个 Service Mesh Control Plane,它监控整个集群的资源。control plane 对所有命名空间使用一个查询来监控影响网格配置的每个 Istio 或 Kubernetes 资源类型。相反,多租户方法为每个命名空间使用每个命名空间的查询。减少集群范围的部署中 control plane 执行的查询数量可提高性能。

注意

此集群范围的部署文档仅适用于使用 SMCP v2.3 创建的 SMCP v2.3 集群范围的部署,与使用 SMCP v2.4 创建的集群范围的部署不兼容。

1.2.2.19.6.1. 配置集群范围的部署

以下示例 ServiceMeshControlPlane 对象配置集群范围的部署。

要为集群范围的部署创建 SMCP,用户必须属于 cluster-admin ClusterRole。如果为集群范围的部署配置了 SMCP,它必须是集群中的唯一 SMCP。您无法将 control plane 模式从多租户改为集群范围的(或从集群范围到多租户)。如果多租户 control plane 已存在,请删除它并创建新 control plane。

本例为集群范围的部署配置 SMCP。

  apiVersion: maistra.io/v2
  kind: ServiceMeshControlPlane
  metadata:
    name: cluster-wide
    namespace: istio-system
  spec:
    version: v2.3
    techPreview:
      controlPlaneMode: ClusterScoped 1
1
启用 Istiod 监控集群级别的资源,而不是监控每个命名空间。

另外,还必须为集群范围的部署配置 SMMR。本例为集群范围的部署配置 SMMR。

  apiVersion: maistra.io/v1
  kind: ServiceMeshMemberRoll
  metadata:
    name: default
  spec:
    members:
    - '*' 1
1
将所有命名空间添加到网格中,包括您随后创建的任何命名空间。以下命名空间不是网格的一部分:kube、openshift、kube-* 和 openshift-*。

1.2.2.20. Red Hat OpenShift Service Mesh 版本 2.2.12 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.11 及更新的版本的支持。

1.2.2.20.1. Red Hat OpenShift Service Mesh 2.2.12 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.47.0

Kiali

1.48.11

1.2.2.21. Red Hat OpenShift Service Mesh 版本 2.2.11 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.11 及更新的版本的支持。

1.2.2.21.1. Red Hat OpenShift Service Mesh 2.2.11 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.47.0

Kiali

1.48.10

1.2.2.22. Red Hat OpenShift Service Mesh 版本 2.2.10 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

1.2.2.22.1. Red Hat OpenShift Service Mesh 2.2.10 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.42.0

Kiali

1.48.8

1.2.2.23. Red Hat OpenShift Service Mesh 版本 2.2.9 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

1.2.2.23.1. Red Hat OpenShift Service Mesh 2.2.9 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.42.0

Kiali

1.48.7

1.2.2.24. Red Hat OpenShift Service Mesh 版本 2.2.8 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

1.2.2.24.1. Red Hat OpenShift Service Mesh 2.2.8 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.42.0

Kiali

1.48.7

1.2.2.25. Red Hat OpenShift Service Mesh 版本 2.2.7 的新功能

此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。

1.2.2.25.1. Red Hat OpenShift Service Mesh 2.2.7 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.42.0

Kiali

1.48.6

1.2.2.26. Red Hat OpenShift Service Mesh 版本 2.2.6 的新功能

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

1.2.2.26.1. Red Hat OpenShift Service Mesh 2.2.6 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.39

Kiali

1.48.5

1.2.2.27. Red Hat OpenShift Service Mesh 版本 2.2.5 的新功能

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

1.2.2.27.1. Red Hat OpenShift Service Mesh 2.2.5 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.39

Kiali

1.48.3

1.2.2.28. New features Red Hat OpenShift Service Mesh version 2.2.4

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

1.2.2.28.1. Red Hat OpenShift Service Mesh 2.2.4 版中包含的组件版本
组件版本

Istio

1.12.9

Envoy Proxy

1.20.8

Jaeger

1.36.14

Kiali

1.48.3

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

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

1.2.2.29.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.30. Red Hat OpenShift Service Mesh 版本 2.2.2 的新功能

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

1.2.2.30.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.30.2. 复制路由标签

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

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

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

1.2.2.31.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.32. Red Hat OpenShift Service Mesh 2.2 的新功能

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

1.2.2.32.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.32.2. WasmPlugin API

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

1.2.2.32.3. ROSA 支持

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

1.2.2.32.4. istio-node DaemonSet 重命名

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

1.2.2.32.5. Envoy sidecar 网络更改

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

1.2.2.32.6. Service Mesh Control Plane 1.1

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

1.2.2.32.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.32.8. Kubernetes Gateway API
重要

Kubernetes Gateway API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

Kubernetes Gateway API 是一个技术预览功能,默认为禁用。如果 Kubernetes API 部署控制器被禁用,您必须手动部署并将入口网关链接到创建的网关对象。

如果启用了 Kubernetes API 部署控制器,则在创建网关对象时,入口网关会自动部署。

1.2.2.32.8.1. 安装 Gateway API CRD

默认情况下,网关 API CRD 不会在 OpenShift 集群中预安装。在 SMCP 中启用网关 API 支持前安装 CRD。

$ kubectl get crd gateways.gateway.networking.k8s.io || { kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v0.4.0" | kubectl apply -f -; }
1.2.2.32.8.2. 启用 Kubernetes 网关 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.32.8.3. 手动将现有网关链接到网关资源

如果 Kubernetes API 部署控制器被禁用,您必须手动部署,然后将入口网关链接到创建的网关资源。

  apiVersion: gateway.networking.k8s.io/v1alpha2
  kind: Gateway
  metadata:
    name: gateway
  spec:
    addresses:
    - value: ingress.istio-gateways.svc.cluster.local
      type: Hostname

1.2.2.33. New features Red Hat OpenShift Service Mesh 2.1.6

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

1.2.2.33.1. Red Hat OpenShift Service Mesh 2.1.6 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.5

Jaeger

1.36

Kiali

1.36.16

1.2.2.34. New features Red Hat OpenShift Service Mesh 2.1.5.2

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

1.2.2.34.1. Red Hat OpenShift Service Mesh 2.1.5.2 版中包含的组件版本
组件版本

Istio

1.9.9

Envoy Proxy

1.17.5

Jaeger

1.36

Kiali

1.24.17

1.2.2.35. New features Red Hat OpenShift Service Mesh 2.1.5.1

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

1.2.2.35.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.36. Red Hat OpenShift Service Mesh 2.1.5 的新功能

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

1.2.2.36.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.37. Red Hat OpenShift Service Mesh 2.1.4 的新功能

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

1.2.2.37.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.38. Red Hat OpenShift Service Mesh 2.1.3 的新功能

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

1.2.2.38.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.39. Red Hat OpenShift Service Mesh 2.1.2.1 的新功能

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

1.2.2.39.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.40. Red Hat OpenShift Service Mesh 2.1.2 的新功能

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

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

1.2.2.40.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.41. Red Hat OpenShift Service Mesh 2.1.1 的新功能

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

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

1.2.2.41.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.41.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.42. 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.42.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.42.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.42.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.42.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.42.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.42.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.42.7. 改进了 Service Mesh operator 性能

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

1.2.2.42.8. Kiali 更新

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

  • Service Mesh 故障排除功能

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

1.2.2.43. New features Red Hat OpenShift Service Mesh 2.0.11.1

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

1.2.2.43.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.44. Red Hat OpenShift Service Mesh 2.0.11 的新功能

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

1.2.2.44.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.45. Red Hat OpenShift Service Mesh 2.0.10 的新功能

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

1.2.2.45.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.46. Red Hat OpenShift Service Mesh 2.0.9 的新功能

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

1.2.2.46.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.47. Red Hat OpenShift Service Mesh 2.0.8 的新功能

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

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

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

1.2.2.48.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.48.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.49. Red Hat OpenShift Service Mesh 2.0.7 的新功能

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

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

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

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

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

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

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

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

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

重要

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

1.2.2.53.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.53.2. 更新路径规范化配置

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

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

表 1.1. 规范化方案

OptionDescriptionExample备注

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.53.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.53.4. 为路径规范化配置 SMCP

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

SMCP v2 路径规范化

spec:
  techPreview:
    global:
      pathNormalization: <option>

1.2.2.53.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.54. 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.55. Red Hat OpenShift Service Mesh 2.0.2 的新功能

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

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

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

1.2.2.57. 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.4. 弃用和删除的功能

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

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

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

1.2.4.1. 弃用和删除的功能 Red Hat OpenShift Service Mesh 2.4

v2.1 ServiceMeshControlPlane 资源不再被支持。客户应升级其网格部署,以使用更新的 ServiceMeshControlPlane 资源版本。

对 Istio OpenShift 路由 (IOR) 的支持已弃用,并将在以后的发行版本中删除。

对 Grafana 的支持已弃用,并将在以后的发行版本中删除。

对 Red Hat OpenShift Service Mesh 2.3 中已弃用的以下密码套件的支持已从客户端和服务器端的 TLS 协商中使用的默认密码列表中删除。当从代理发起 TLS 连接时,需要访问需要这些密码套件之一的服务的应用程序将无法连接。

  • ECDHE-ECDSA-AES128-SHA
  • ECDHE-RSA-AES128-SHA
  • AES128-GCM-SHA256
  • AES128-SHA
  • ECDHE-ECDSA-AES256-SHA
  • ECDHE-RSA-AES256-SHA
  • AES256-GCM-SHA384
  • AES256-SHA

1.2.4.2. Red Hat OpenShift Service Mesh 2.3 中已弃用和删除的功能

对以下密码套件的支持已弃用。在以后的发行版本中,它们将从客户端和服务器端的 TLS 协商中使用的默认密码列表中删除。

  • ECDHE-ECDSA-AES128-SHA
  • ECDHE-RSA-AES128-SHA
  • AES128-GCM-SHA256
  • AES128-SHA
  • ECDHE-ECDSA-AES256-SHA
  • ECDHE-RSA-AES256-SHA
  • AES256-GCM-SHA384
  • AES256-SHA

ServiceMeshExtension API 在 Red Hat OpenShift Service Mesh 版本 2.2 中已弃用,在 Red Hat OpenShift Service Mesh 版本 2.3 中删除。如果使用 ServiceMeshExtension API,则必须迁移到 WasmPlugin API 以继续使用 WebAssembly 扩展。

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

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

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

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

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

1.2.5.1. Service Mesh 已知问题

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

  • OSSM-3890 尝试在多租户网格部署中使用网关 API 会生成类似如下的错误消息:

    2023-05-02T15:20:42.541034Z	error	watch error in cluster Kubernetes: failed to list *v1alpha2.TLSRoute: the server could not find the requested resource (get tlsroutes.gateway.networking.k8s.io)
    2023-05-02T15:20:42.616450Z	info	kube	controller "gateway.networking.k8s.io/v1alpha2/TCPRoute" is syncing...

    要在多租户网格部署中支持网关 API,集群中必须存在所有网关 API 自定义资源定义(CRD)文件。

    在多租户网格部署中,禁用了 CRD 扫描,Istio 无法发现集群中存在哪些 CRD。因此,Istio 会尝试监视所有支持的网关 API CRD,但如果这些 CRD 不存在,则会生成错误。

    Service Mesh 2.3.1 及更新的版本支持 v1alpha2v1beta1 CRD。因此,两个 CRD 版本都必须存在才能多租户网格部署来支持网关 API。

    临时解决方案: 在以下示例中,kubectl get 操作会安装 v1alpha2v1beta1 CRD。请注意,URL 包含额外的 experimental 片段,并相应地更新任何现有脚本:

    $ kubectl get crd gateways.gateway.networking.k8s.io ||   { kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v0.5.1" | kubectl apply -f -; }
  • 名为 default 的 SMCP 的 OSSM-2042 Deployment 失败。如果您要创建 SMCP 对象,并将其 version 字段设置为 v2.3,则对象的名称不能是 default。如果名称是 default,则 control plane 无法部署,OpenShift 会生成带有以下信息的 Warning 事件:

    Error processing component mesh-config: error: [mesh-config/templates/telemetryv2_1.6.yaml: Internal error occurred: failed calling webhook "rev.validation.istio.io": Post "https://istiod-default.istio-system.svc:443/validate?timeout=10s": x509: certificate is valid for istiod.istio-system.svc, istiod-remote.istio-system.svc, istio-pilot.istio-system.svc, not istiod-default.istio-system.svc, mesh-config/templates/enable-mesh-permissive.yaml

  • 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-1115 spec.proxy API 的 concurrency 字段没有传播到 istio-proxy。当使用 ProxyConfig 设置时,concurrency 字段可以正常工作。concurrency 字段指定要运行的 worker 线程数量。如果字段设为 0,则可用的 worker 线程数量等于 CPU 内核数。如果没有设置该字段,则可使用的 worker 线程数量默认为 2

    在以下示例中,concurrency 字段设置为 0

    apiVersion: networking.istio.io/v1beta1
    kind: ProxyConfig
    metadata:
      name: mesh-wide-concurrency
      namespace: <istiod-namespace>
    spec:
      concurrency: 0
  • 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 服务网格扩展目前与 IBM Z 上部署的网格不兼容。
  • MAISTRA-1959 迁移到 2.0 Prometheus 提取(spec.addons.prometheus.scrape 设置为 true)在启用 mTLS 时无法正常工作。另外,当禁用 mTLS 时,Kiali 会显示无关的图形数据。

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

    spec:
      proxy:
        networking:
          trafficControl:
            inbound:
              excludedPorts:
              - 15020
  • 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.6. 修复的问题

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

  • OSSM-3647 以前,在 Service Mesh control plane (SMCP) v2.2 (Istio 1.12)中,WasmPlugins 仅适用于入站监听程序。从 SMCP v2.3 (Istio 1.14)开始,WasmPlugins 默认应用于入站和出站监听程序,这为 3scale WasmPlugin 的用户引入了回归。现在,添加了环境变量 APPLY_WASM_PLUGINS_TO_INBOUND_ONLY,它允许从 SMCP v2.2 安全地迁移到 v2.3 和 v2.4。

    以下设置应添加到 SMCP 配置中:

    spec:
      runtime:
        components:
          pilot:
            container:
              env:
                APPLY_WASM_PLUGINS_TO_INBOUND_ONLY: "true"

    要确保安全迁移,请执行以下步骤:

    1. 在 SMCP v2.2 中设置 APPLY_WASM_PLUGINS_TO_INBOUND_ONLY
    2. 升级到 2.4。
    3. 在 WasmPlugins 中设置 spec.match[].mode: SERVER
    4. 删除之前添加的环境变量。

在之前的版本中解决了以下问题:

1.2.6.1. Service Mesh 修复的问题

  • OSSM-4851 以前,当 runAsGrouprunAsUserfsGroup 参数为 nil 时,Operator 在网格内部署新 pod 时会出错。现在,添加了 yaml 验证以避免 nil 值。
  • OSSM-3771 以前,对于 Service Mesh Control Plane (SMCP) 中定义的额外入口网关无法禁用 OpenShift 路由。现在,可以将 routeConfig 块添加到每个 additionalIngress 网关中,以便为每个网关启用或禁用 OpenShift 路由。
  • OSSM-4197 在以前的版本中,如果您部署了 'ServiceMeshControlPlane' 资源的 v2.2 或 v2.1,则不会创建 /etc/cni/multus/net.d/ 目录。因此,istio-cni pod 无法就绪,istio-cni pod 日志包含以下消息:

    $ error   Installer exits with open /host/etc/cni/multus/net.d/v2-2-istio-cni.kubeconfig.tmp.841118073: no such file or directory

    现在,如果您部署 'ServiceMeshControlPlane' 资源的 v2.2 或 v2.1,则 /etc/cni/multus/net.d/ 目录已创建,并且 istio-cni pod 变为 ready。

  • OSSM-3993 之前,Kiali 只通过标准 HTTPS 端口 443 上的代理支持 OpenShift OAuth。现在,Kiali 通过非标准 HTTPS 端口支持 OpenShift OAuth。要启用端口,您必须将 spec.server.web_port 字段设置为 Kiali CR 中的代理的非标准 HTTPS 端口。
  • OSSM-3936 在之前的版本中,injection_label_revinjection_label_name 属性的值被硬编码。这导致自定义配置无法在 Kiali 自定义资源定义(CRD)中生效。现在,属性值不会被硬编码。您可以在 spec.istio_labels 规格中自定义 injection_label_revinjection_label_name 属性的值。
  • OSSM-3644 以前,联邦 egress-gateway 收到网络网关端点的错误更新,从而导致额外的端点条目。现在,在服务器端更新了 federation-egress 网关,以便它接收正确的网络网关端点。
  • OSSM-3595 以前,istio-cni 插件有时会在 RHEL 上失败,因为 SELinux 不允许工具 iptables-restore 打开 /tmp 目录中的文件。现在,SELinux 通过 stdin 输入流而不是通过一个文件传递 iptables-restore
  • OSSM-3586 之前,当 Google Cloud Platform (GCP) 元数据服务器不可用时,Istio 代理会较慢。当您升级到 Istio 1.14.6 时,Istio 代理会在 GCP 上按预期启动,即使元数据服务器不可用。
  • OSSM-3025 Istiod 有时无法就绪。有时,当网格包含很多成员命名空间时,为因为 Istiod 中的死锁 导致 Istiod pod 未就绪。现在,死锁已被解决,pod 现在会如预期启动。
  • OSSM-2493 SMCP 中的默认 nodeSelectortolerations 不会传递给 Kiali。您添加到 SMCP.spec.runtime.defaultsnodeSelectortolerations 现在可以传递给 Kiali 资源。
  • OSSM-2492 默认容限没有传递给 Jaeger。您添加到 SMCP.spec.runtime.defaultsnodeSelectortolerations 现在可以传递给 Jaeger 资源。
  • OSSM-2374 如果您删除了其中一个 ServiceMeshMember 资源,则 Service Mesh operator 会删除 ServiceMeshMemberRoll。虽然当您删除最后一个 ServiceMeshMember 时这是预期的行为,但如果它还包含任何成员,Operator 不应该删除 ServiceMeshMemberRoll。这个问题现已解决,Operator 仅在最后一个 ServiceMeshMember 资源被删除时才删除 ServiceMeshMemberRoll。
  • OSSM-2373 登录时尝试获取 OAuth 元数据的错误。要获取集群版本,请使用 system:anonymous 帐户。使用集群的默认捆绑的 ClusterRole 和 ClusterRoleBinding,匿名帐户可以正确地获取版本。如果 system:anonymous 帐户丢失了获取集群版本的权限,OpenShift 身份验证将不可用。

    这个问题已通过使用 Kiali SA 获取集群版本来解决。这可以提高集群上的安全性。

  • OSSM-2371 虽然 Kiali 配置为 "view-only",但用户可以通过 Workload details 的 kebab 菜单更改代理日志级别。这个问题已被解决,当 Kiali 配置为 "view-only" 时,"Set Proxy Log Level" 下的选项被禁用。
  • OSSM-2344 重启 Istiod 会导致 Kiali 使用 port-forward 请求大量 CRI-O。当 Kiali 无法连接到 Istiod,而 Kiali 同时向 istiod 发出大量请求时会出现这种情况。Kiali 现在限制它发送到 istiod 的请求数。
  • OSSM-2335 将鼠标指针拖放到 Traces scatterchart 图表上,有时会导致 Kiali 控制台因为并发后端请求停止响应。
  • OSSM-2221 以前,ServiceMeshControlPlane 命名空间中的网关注入无法进行,因为 ignore-namespace 标签默认应用到命名空间。

    在创建 v2.4 control plane 时,命名空间不再应用 ignore-namespace 标签,并可进行网关注入。

    在以下示例中,oc label 命令从现有部署中的命名空间中删除 ignore-namespace 标签:

    $ oc label namespace istio-system maistra.io/ignore-namespace-

    其中:

    istio_system
    指定 ServiceMeshControlPlane 命名空间的名称。
  • 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-1962 在联邦控制器中使用 EndpointSlices。联邦控制器现在使用 EndpointSlices,这可以提高大型部署中的可扩展性和性能。默认情况下启用 PILOT_USE_ENDPOINT_SLICE 标志。禁用标志可防止使用联邦部署。
  • 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-535 支持 SMCP 中的验证消息。Service Mesh Control Plane 中的 ValidationMessages 字段现在可以设置为 True。这会写入资源状态的日志,这在进行故障排除时很有用。
  • 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 控件。