更新公告

升级到 Istio 1.5 需注意的重要变更。

此页面描述了从 Istio 1.4.x 升级到 1.5.x 时需要注意的更改。在这里,我们详细介绍了有意不再向下兼容情况。还提到了保留向下兼容但引入了新行为的情况,熟悉 Istio 1.4 的使用和操作的人可能会感到惊讶。

重构控制平面

在 Istio 1.5 中,我们开始使用新的控制平面 deployment 模型,其中整合了许多组件。下面各功能迁移位置的说明。

Istiod

Istio 1.5,会有一个新的 deployment:istiod。该组件是控制平面的核心,负责处理配置、证书分发以及 sidecar 注入等。

sidecar 注入

以前,sidecar 注入是通过一个可变的 webhook 处理的,该 webhook 由名为 istio-sidecar-injector 的 deployment 处理。在 Istio 1.5 中,保留了相同的可变 webhook,但现在它指向 istiod deployment,其它所有注入逻辑保持不变。

Galley

Citadel

以前,Citadel 有两个功能:将证书写入至每个命名空间中的 secret、在使用 SDS 时通过 gRPC 将 secret 提供给 nodeagent。在 Istio 1.5 中,secret 不再写入至每个命名空间。而是仅通过 gRPC 提供服务。并且,此功能已迁移至 istiod deployment。

SDS 节点代理

移除 nodeagent deployment。现在,此功能存在于 Envoy sidecar 中。

Sidecar

以前,sidecar 可以通过两种方式访问证书:通过作为文件挂载的 secret 或 SDS(通过 nodeagent)。在 Istio 1.5 中,已对此进行了简化。所有 secret 信息将通过本地运行的 SDS 服务器提供。对于大多数用户而言,这些 secret 将从 istiod deployment 中获取。对于具有自定义 CA 的用户,仍可以使用文件挂载的 secret,但是,本地 SDS 服务器仍将提供这些 secret。这意味着证书轮换不再需要重启 Envoy。

CNI

istio-cni deployment 没有变化。

Pilot

移除 istio-pilot deployment,以便支持 istiod deployment,istiod 包含了 Pilot 曾经拥有的所有功能。为了向下兼容,保留了一些对 Pilot 的引用。

弃用 Mixer

Mixer,即 istio-telemetryistio-policy deployment 背后的过程,在 1.5 版本中被弃用了。Istio 1.3 开始,默认禁用了 istio-policy,而 Istio 1.5 ,默认禁用了 istio-telemetry

遥测现在是使用的不再需要 Mixer 的代理内扩展机制(Telemetry V2)收集的。

如果您依赖 Mixer 的某些特有的特性,如进程外适配器,则可以手动重新启用 Mixer。在 Istio 1.7 之前,Mixer 将继续收到 bug 修复程序和安全修复程序。Mixer 支持的许多特性都能在弃用 Mixer 文档中找到替代方法,包括基于 WebAssembly 沙箱 API 的代理内扩展

如果您需要 Mixer 没有的特性,我们建议您公开问题并在社区中进行讨论。

查看弃用 Mixer 获取详细信息。

Telemetry V2 和 Mixer Telemetry 的差异

认证策略

Istio 1.5 引入了 PeerAuthenticationRequestAuthentication (它们取代了 Authentication API 的 Alpha 版本)。有关新 API 的更多信息,请参见 authentication policy 教程。

$ kubectl delete policies.authentication.istio.io --all-namespaces --all
$ kubectl delete meshpolicies.authentication.istio.io --all

Istio workload 密钥及证书配置

控制平面安全

作为 Istiod 努力的一部分,我们已经更改了代理与控制平面安全通信的方式。在以前的版本中,当配置了 values.global.controlPlaneSecurityEnabled=true 设置时,代理将安全地连接到控制平面,这也是 Istio 1.4 的默认设置。每个控制平面组件都运行带有 Citadel 证书的 sidecar,并且代理通过端口 15011 连接到 Pilot。

在 Istio 1.5 中,代理与控制平面连接的推荐或默认方式不再是这样;相反,可以使用由 Kubernetes 或 Istiod 签名的 DNS 证书,通过 15012 端口连接到 Istiod。

注意:尽管如此,但在 Istio 1.5 中,将 controlPlaneSecurityEnabled 设置为 false 时,默认情况下控制平面之间的通信已经是安全的。

多集群安装

Helm 升级

如果您使用 helm upgrade 将群集更新到较新的 Istio 版本,则建议您使用 istioctl upgrade 或遵循 helm template 的步骤。