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.4.2 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.1.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.2. Red Hat OpenShift Service Mesh 版本 2.4.1 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.2.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.3. Red Hat OpenShift Service Mesh 版本 2.4 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.3.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.3.2. 集群范围的部署
此功能增强引入了集群范围的部署的通用版本。集群范围的部署包含一个服务网格 control plane,用于监控整个集群的资源。control plane 在所有命名空间中使用单个查询来监控影响网格配置的每个 Istio 或 Kubernetes 资源。减少集群范围的部署中 control plane 执行的查询数量可提高性能。
1.2.2.3.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.3.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-manager
。ServiceMeshControlPlane
v2.4 接受 cert-manager
提供的 CA 证书作为 cacerts
secret。
IBM Power、IBM Z 和 {linuxoneProductName} 不支持与 cert-manager
和 istio-csr
集成。
1.2.2.3.5. 与外部授权系统集成
此功能增强引入了一种通用可用的方法,使用 AuthorizationPolicy
资源的 action: CUSTOM
字段将 Red Hat OpenShift Service Mesh 与外部授权系统集成。使用 envoyExtAuthzHttp
字段将访问控制委派给外部授权系统。
1.2.2.3.6. 与外部 Prometheus 安装集成
此功能增强引入了 Prometheus 扩展供应商的通用版本。您可以通过在 spec.meshConfig
规格中将 extensionProviders
字段的值设置为 prometheus
,将指标公开给 OpenShift Container Platform 监控堆栈或自定义 Prometheus 安装。Telemetry 对象配置 Istio 代理来收集流量指标。Service Mesh 只支持 Prometheus 指标的 Telemetry API。
spec: meshConfig: extenstionProviders: - name: prometheus prometheus: {} --- apiVersion: telemetry.istio.io/v1alpha1 kind: Telemetry metadata: name: enable-prometheus-metrics spec: metrics: - providers: - name: prometheus
1.2.2.3.7. 单堆栈 IPv6 支持
此功能增强引进了对单堆栈 IPv6 集群的常用支持,提供对更广泛的 IP 地址的访问。不支持双堆栈 IPv4 或 IPv6 集群。
IBM Power、IBM Z 和 {linuxoneProductName} 不支持单堆栈 IPv6。
1.2.2.3.8. OpenShift Container Platform Gateway API 支持
OpenShift Container Platform Gateway API 支持只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
此功能增强引入了 OpenShift Container Platform Gateway API 的更新技术预览版本。默认情况下禁用 OpenShift Container Platform 网关 API。
1.2.2.3.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.3.9. 在基础架构节点上部署 control plane
Service Mesh control plane 部署现在在 OpenShift 基础架构节点上被支持并记录。如需更多信息,请参阅以下文档:
- 配置所有 Service Mesh control plane 组件以便在基础架构节点上运行
- 配置单个 Service Mesh control plane 组件以便在基础架构节点上运行
1.2.2.3.10. Istio 1.16 支持
Service Mesh 2.4 基于 Istio 1.16,它引入了新功能和产品改进。虽然很多 Istio 1.16 功能被支持,但请注意以下例外:
- 对于 sidecar 的 HBONE 协议是一个实验性功能,它不被支持。
- 不支持 ARM64 架构上的 Service Mesh。
- OpenTelemetry API 仍是一个技术预览功能。
1.2.2.4. Red Hat OpenShift Service Mesh 版本 2.3.6 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.4.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.5. Red Hat OpenShift Service Mesh 2.3.5 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.5.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.6. Red Hat OpenShift Service Mesh 版本 2.3.4 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.6.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.7. Red Hat OpenShift Service Mesh 版本 2.3.3 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.7.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.8. Red Hat OpenShift Service Mesh 版本 2.3.2 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.8.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.9. Red Hat OpenShift Service Mesh 版本 2.3.1 的新功能
此 Red Hat OpenShift Service Mesh 发行版本引入了新功能,解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.9.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.10. Red Hat OpenShift Service Mesh 版本 2.3 的新功能
此 Red Hat OpenShift Service Mesh 发行版本引入了新功能,解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.10.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.10.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.10.3. 网关注入支持
此发行版本引入了对网关注入的通用支持。网关配置适用于在网格边缘运行的独立的 Envoy 代理,而不是与您的服务负载一同运行的 sidecar Envoy 代理。这可让自定义网关选项。在使用网关注入时,您必须在要运行网关代理的命名空间中创建以下资源:Service
、Deployment
、Role
和 RoleBinding
。
1.2.2.10.4. Istio 1.14 支持
Service Mesh 2.3 基于 Istio 1.14,它引入了新功能和产品改进。虽然很多 Istio 1.14 功能被支持,但请注意以下例外:
- 除 image 字段外,支持 proxyConfig API。
- Telemetry API 是一个技术预览功能。
- SPIRE 运行时不受支持。
1.2.2.10.5. OpenShift Service Mesh 控制台
OpenShift Service Mesh 控制台只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
此发行版本引入了 OpenShift Container Platform Service Mesh 控制台的一个技术预览版本,它将 Kiali 界面直接集成到 OpenShift web 控制台中。如需更多信息,请参阅 引入 OpenShift Service Mesh 控制台(技术预览)
1.2.2.10.6. 集群范围的部署
集群范围的部署只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
此发行版本引入了集群范围的部署,作为技术预览功能。集群范围的部署包含一个 Service Mesh Control Plane,它监控整个集群的资源。control plane 对所有命名空间使用一个查询来监控影响网格配置的每个 Istio 或 Kubernetes 资源类型。相反,多租户方法为每个命名空间使用每个命名空间的查询。减少集群范围的部署中 control plane 执行的查询数量可提高性能。
此集群范围的部署文档仅适用于使用 SMCP v2.3 创建的 SMCP v2.3 集群范围的部署,与使用 SMCP v2.4 创建的集群范围的部署不兼容。
1.2.2.10.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.11. Red Hat OpenShift Service Mesh 版本 2.2.9 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.11.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.12. Red Hat OpenShift Service Mesh 版本 2.2.8 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.12.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.13. Red Hat OpenShift Service Mesh 版本 2.2.7 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.10 及更新的版本的支持。
1.2.2.13.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.14. Red Hat OpenShift Service Mesh 版本 2.2.6 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.14.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.15. Red Hat OpenShift Service Mesh 版本 2.2.5 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.15.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.16. 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.16.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.17. Red Hat OpenShift Service Mesh 版本 2.2.3 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.17.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.18. Red Hat OpenShift Service Mesh 版本 2.2.2 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.18.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.18.2. 复制路由标签
在这个版本中,除了复制注解外,您还可以为 OpenShift 路由复制特定的标签。Red Hat OpenShift Service Mesh 将 Istio 网关资源中存在的所有标签和注解(从 kubectl.kubernetes.io 开始的注解除外)复制到受管 OpenShift Route 资源中。
1.2.2.19. Red Hat OpenShift Service Mesh 版本 2.2.1 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.19.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.20. Red Hat OpenShift Service Mesh 2.2 的新功能
此 Red Hat OpenShift Service Mesh 发行版本添加了新的功能和改进,并被 OpenShift Container Platform 4.9 和更新版本支持。
1.2.2.20.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.20.2. WasmPlugin
API
此发行版本添加了对 WasmPlugin
API 的支持,并弃用了 ServiceMeshExtension
API。
1.2.2.20.3. ROSA 支持
此发行版本引进了对 AWS(ROSA)上的 Red Hat OpenShift 的服务网格支持,包括多集群联邦。
1.2.2.20.4. istio-node
DaemonSet 重命名
在此发行版本中,istio-node
DaemonSet 被重命名为 istio-cni-node
,以匹配上游 Istio 中的名称。
1.2.2.20.5. Envoy sidecar 网络更改
Istio 1.10 更新了 Envoy,默认使用 eth0
而不是 lo
将流量发送到应用程序容器。
1.2.2.20.6. Service Mesh Control Plane 1.1
对于所有平台,此发行版本结束了对基于 Service Mesh 1.1 的 Service Mesh Control Planes 的支持。
1.2.2.20.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.20.8. Kubernetes Gateway API
Kubernetes Gateway API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
Kubernetes Gateway API 是一个技术预览功能,默认为禁用。如果 Kubernetes API 部署控制器被禁用,您必须手动部署并将入口网关链接到创建的网关对象。
如果启用了 Kubernetes API 部署控制器,则在创建网关对象时,入口网关会自动部署。
1.2.2.20.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.20.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"
使用 SameNamespace
或 All
设置在 Gateway API 监听器上限制路由附加功能可能。Istio 会忽略 listeners.allowedRoutes.namespaces
中标签选择器的使用,并恢复到默认行为 (SameNamespace
)。
1.2.2.20.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.21. 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.21.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.22. 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.22.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.23. 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.23.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.24. Red Hat OpenShift Service Mesh 2.1.5 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题 (CVE),包含程序错误修复,并受 OpenShift Container Platform 4.9 及更新的版本的支持。
1.2.2.24.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.25. Red Hat OpenShift Service Mesh 2.1.4 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.25.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.26. Red Hat OpenShift Service Mesh 2.1.3 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.26.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.27. Red Hat OpenShift Service Mesh 2.1.2.1 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.27.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.28. 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.28.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.29. Red Hat OpenShift Service Mesh 2.1.1 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
此发行版本还添加了禁用自动创建网络策略的功能。
1.2.2.29.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.29.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
对象。系统管理员负责管理网络并修复可能导致的任何问题。
流程
-
在 OpenShift Container Platform web 控制台中,点击 Operators
Installed Operators。 -
从 Project 菜单中选择安装 Service Mesh control plane 的项目,如
istio-system
。 -
点 Red Hat OpenShift Service Mesh Operator。在 Istio Service Mesh Control Plane 栏中,点
ServiceMeshControlPlane
的名称,如basic-install
。 -
在 Create ServiceMeshControlPlane Details 页中,点
YAML
修改您的配置。 将
ServiceMeshControlPlane
字段spec.security.manageNetworkPolicy
设置为false
,如下例所示。apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane spec: security: trust: manageNetworkPolicy: false
- 点 Save。
1.2.2.30. 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.30.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.30.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.30.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.30.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.30.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.30.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.30.7. 改进了 Service Mesh operator 性能
Red Hat OpenShift Service Mesh 在每个 ServiceMeshControlPlane
协调结束时用于修剪旧资源的时间已经减少。这会更快地进行 ServiceMeshControlPlane
部署,并允许应用到现有 SMCP 的更改更快地生效。
1.2.2.30.8. Kiali 更新
Kiali 1.36 包括以下功能和增强:
Service Mesh 故障排除功能
- control plane 和网关监控
- 代理同步状态
- Envoy 配置视图
- 显示 Envoy 代理和应用程序日志处于交集的统一视图
- 支持联邦服务网格视图的命名空间和集群选择
- 新的验证、向导和分布式追踪增强
1.2.2.31. 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.31.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.32. Red Hat OpenShift Service Mesh 2.0.11 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题(CVE)、程序错误修正,并受 OpenShift Container Platform 4.9 和更高版本的支持。
1.2.2.32.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.33. Red Hat OpenShift Service Mesh 2.0.10 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.33.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.34. Red Hat OpenShift Service Mesh 2.0.9 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.34.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.35. Red Hat OpenShift Service Mesh 2.0.8 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了程序错误修正。
1.2.2.36. Red Hat OpenShift Service Mesh 2.0.7.1 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题。
1.2.2.36.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.36.2. 授权策略所需的更新
Istio 为主机名本身和所有匹配端口生成主机名。例如,用于 "httpbin.foo" 主机的虚拟服务或网关会生成匹配 "httpbin.foo 和 httpbin.foo:*" 的配置。但是,完全匹配授权策略仅与为 hosts
或 notHosts
字段给出的确切字符串匹配。
如果您使用精确字符串比较的 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.37. Red Hat OpenShift Service Mesh 2.0.7 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.38. 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.39. Red Hat OpenShift Service Mesh 2.0.6 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.40. Red Hat OpenShift Service Mesh 2.0.5 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.41. Red Hat OpenShift Service Mesh 2.0.4 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
要解决 CVE-2021-29492 和 CVE-2021-31920 的问题,则必须完成手动步骤。
1.2.2.41.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
字段特征,您的集群会受到这个漏洞的影响。这些模式可能会被意外的策略绕过。
在以下情况下,集群不会受到此漏洞的影响:
- 您没有授权策略。
-
您的授权策略没有定义
paths
或notPaths
字段。 -
您的授权策略使用
ALLOW action + paths
字段或DENY action + notPaths
字段特征。这些模式只会导致意外的拒绝,而不是绕过策略。对于以上情况,升级是可选的。
路径规范化的 Red Hat OpenShift Service Mesh 配置位置与 Istio 配置不同。
1.2.2.41.2. 更新路径规范化配置
Istio 授权策略可能基于 HTTP 请求中的 URL 路径。路径规范化 (也称为 URI 规范化)、修改和标准化传入请求的路径,以便能够以标准的方式处理规范化路径。在路径规范化后,同步不同路径可能是等同的。
Istio 在根据授权策略和路由请求前,支持请求路径中的以下规范化方案:
Option | Description | Example | 备注 |
---|---|---|---|
| 没有进行规范化。Envoy 接收的任何内容都会完全按原样转发到任何后端服务。 |
| 此设置会受到 CVE-2021-31920 的影响。 |
|
这是目前 Istio 默认安装中使用的选项。这在 Envoy 代理上应用 |
| 此设置会受到 CVE-2021-31920 的影响。 |
| 斜杠会在 BASE 规范化后合并。 |
| 更新此设置以缓解 CVE-2021-31920 的问题。 |
|
默认允许所有流量时的最严格设置。建议使用此设置,请注意您必须对您的授权策略路由进行彻底测试。Percent 编码的 斜杠和反斜杠字符( |
| 更新此设置以缓解 CVE-2021-31920 的问题。这个设置更为安全,但可能会破坏应用程序。在部署到生产环境中前测试您的应用程序。 |
规范化算法按以下顺序进行:
-
解码百分比
%2F
、%2f
、%5C
和%5c
。 -
RFC 3986 和其他在 Envoy 中的
normalize_path
选项实现的规范化。 - 合并斜杠。
虽然这些规范化选项代表来自 HTTP 标准和常见行业实践的建议,但应用程序可能会以它选择的任何方式解释 URL。在使用拒绝策略时,请确保您了解应用程序的行为方式。
1.2.2.41.3. 路径规范配置示例
确保 Envoy 规范化请求路径以匹配后端服务的预期,对您的系统安全至关重要。以下示例可用作配置系统的参考。规范化 URL 路径,如果选择 NONE
,则原始 URL 路径为:
- 用于检查授权策略。
- 转发到后端应用程序。
如果您的应用程序… | 选择… |
---|---|
依赖于代理进行规范化 |
|
根据 RFC 3986 规范化请求路径,且不合并斜杠。 |
|
| |
| |
以与 RFC 3986 不兼容的方式处理请求路径。 |
|
1.2.2.41.4. 为路径规范化配置 SMCP
要为 Red Hat OpenShift Service Mesh 配置路径规范化,请在 ServiceMeshControlPlane
中指定以下内容。使用配置示例来帮助确定您的系统设置。
SMCP v2 路径规范化
spec: techPreview: global: pathNormalization: <option>
1.2.2.41.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.42. 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.43. Red Hat OpenShift Service Mesh 2.0.2 的新功能
此 Red Hat OpenShift Service Mesh 发行版本添加了对 IBM Z 和 IBM Power Systems 的支持。它还解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.44. Red Hat OpenShift Service Mesh 2.0.1 的新功能
此 Red Hat OpenShift Service Mesh 发行版本解决了 CVE 报告的安全漏洞问题以及程序错误。
1.2.2.45. 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)不再被支持。-
使用上述
RequestAuthentication
或PeerAuthentication
,但放置在 Service Mesh control plane 命名空间中。
-
使用上述
RbacConfig
(rbac.istio.io/v1alpha1)不再被支持。-
由
AuthorizationPolicy
(security.istio.io/v1beta1)替代,其中包含RbacConfig
、ServiceRole
和ServiceRoleBinding
的行为。
-
由
ServiceMeshRbacConfig
( maistra.io/v1)不再被支持。-
使用上述
AuthorizationPolicy
,但保留在 Service Mesh control plane 命名空间中。
-
使用上述
-
ServiceRole
(rbac.istio.io/v1alpha1)不再被支持。 -
ServiceRoleBinding
(rbac.istio.io/v1alpha1)不再被支持。 -
在 Kiali 中,
login
和LDAP
策略已被弃用。将来的版本将引入使用 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 控制台访问相关服务(如分布式追踪平台和 Grafana)时,必须使用 OpenShift Container Platform 登录凭证接受证书并重新进行身份验证。这是因为框架如何显示控制台中的内置页面中存在问题。
- Bookinfo 示例应用程序不能安装在 IBM Power、IBM Z 和 {linuxoneProductName} 中。
- IBM Power、IBM Z 和 {linuxoneProductName} 不支持 WebAsembly 扩展。
- IBM Power、IBM Z 和 {linuxoneProductName} 不支持 LuaJIT。
- IBM Power、IBM Z 和 {linuxoneProductName} 不支持单堆栈 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 及更新的版本支持
v1alpha2
和v1beta1
CRD。因此,两个 CRD 版本都必须存在才能多租户网格部署来支持网关 API。临时解决方案: 在以下示例中,
kubectl get
操作会安装v1alpha2
和v1beta1
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.5.3. Red Hat OpenShift 分布式追踪已知问题
Red Hat OpenShift 分布式追踪中存在这些限制:
- 不支持 Apache spark。
- IBM Z 和 IBM Power Systems 上不支持通过 AMQ/Kafka 进行流部署。
Red Hat OpenShift 分布式追踪有以下已知的问题:
-
OBSDA-220 在某些情况下,如果您尝试使用分布式追踪数据收集拉取镜像,则镜像拉取失败,并显示
Failed to pull image
错误消息。这个问题还没有临时解决方案。 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 stable 或 1.20.x stable
AMQ Streams Operator 频道: amq-streams-1.6.x
要解决这个问题,将 AMQ Streams Operator 的订阅频道切换到 amq-streams-1.7.x 或 stable。
1.2.6. 修复的问题
在当前发行本中解决了以下问题:
1.2.6.1. Service Mesh 修复的问题
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_rev
和injection_label_name
属性的值被硬编码。这导致自定义配置无法在 Kiali 自定义资源定义(CRD)中生效。现在,属性值不会被硬编码。您可以在spec.istio_labels
规格中自定义injection_label_rev
和injection_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 中的默认
nodeSelector
和tolerations
不会传递给 Kiali。您添加到SMCP.spec.runtime.defaults
的nodeSelector
和tolerations
现在可以传递给 Kiali 资源。 -
OSSM-2492 默认容限没有传递给 Jaeger。您添加到
SMCP.spec.runtime.defaults
的nodeSelector
和tolerations
现在可以传递给 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.1SMCP
中,但没有存在于 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 内存限值。Prometheusistio-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 控件。
1.2.6.2. Red Hat OpenShift 分布式追踪问题
- OSSM-1910 因为版本 2.6 中引入了问题,所以无法在 OpenShift Container Platform Service Mesh 中建立 TLS 连接。在这个版本中,通过更改服务端口名称以匹配 OpenShift Container Platform Service Mesh 和 Istio 所使用的约定解决了这个问题。
- OBSDA-208 在更新之前,默认的 200m CPU 和 256Mi 内存资源限制可能会导致分布式追踪数据收集在大型集群中持续重启。在这个版本中,通过删除这些资源限值解决了这个问题。
- OBSDA-222 在此更新之前,可以在 OpenShift Container Platform 分布式追踪平台中丢弃 span。为了帮助防止这个问题发生,这个版本会更新版本依赖项。
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。