升级

安装最新的 Global Alauda Service Mesh Essentials 集群插件

请访问 Alauda Service Mesh Essentials 了解安装说明。

将最新的 operator 上传到全局集群和目标集群

将以下 operator 的最新版本上传到 全局 集群和目标集群(请勿手动安装):

  • Alauda Service Mesh Operator
  • Flagger Operator
  • Alauda Build of Jaeger Operator
  • Alauda Build of OpenTelemetry Operator

有关使用 violet 工具的上传操作步骤,请访问 安装 Operator

WARNING

使用 violet push 上传 operator 时,请不要添加 --target-catalog-source 参数,而是使用 operator 中定义的默认 catalog source。

升级业务集群组件

升级前

该平台为 service mesh 中的 Istio 提供 canary 升级,会先部署 istiod 组件的新版本。待所有 data plane 都升级完成后,再下线 istiod 组件的旧版本。

由于 Istio 版本与 Kubernetes 版本之间存在强依赖关系,请在升级 Istio 之前,确保当前集群的 Kubernetes 版本满足 Istio 升级要求,以便 canary 升级能够成功完成。

下表展示了当前平台版本支持的 Istio 升级路径,以及这些路径所要求的 Kubernetes 版本。

支持的 Istio 升级路径Kubernetes 版本要求
Istio 从 1.20 升级到 1.22Kubernetes 版本 1.271.28
Istio 从 1.18 升级到 1.22Kubernetes 版本 1.27

注意

  • 表中仅描述 Istio 和 Kubernetes 的主版本;次版本不会影响兼容性。
  • 您可以通过 组件 列表查看集群中当前正在运行的 Istio 和 Kubernetes 版本。
  • 如果集群当前的 Kubernetes 版本低于 Istio 升级所需版本,则需要通过 升级组件 将 Kubernetes 升级到兼容版本。
  • 有关更多信息,请参阅 Community 对 Istio 支持的 Kubernetes 版本

升级操作步骤

完整的 service mesh 升级流程包括以下步骤:

  1. 升级集群中 service mesh 的非 Istio 组件,例如 asm operator、flagger operator 等。
  2. 在集群中部署新版本的 istiod
  3. 检查集群中是否存在 EnvoyFilters
  4. 升级集群中的所有 Istio data plane
  5. 下线集群中旧版本的 istiod

升级操作

升级集群中 service mesh 的非 Istio 组件

  1. 在左侧导航的 平台管理 中,点击 Service Mesh > Meshes
  2. 点击需要升级的 Service Mesh Name 进入 mesh 详情页。
  3. 在 mesh 详情页的 Mesh Deployment 区域,会列出已部署该 service mesh 的集群。点击 Cluster Name,在新标签页中打开集群详情页。
  4. 在集群详情页切换到 组件,然后点击升级,将集群中的 service mesh 非 Istio 组件升级到最新版本。有关升级组件的详细说明,请参见 升级组件

注意:service mesh 的非 Istio 组件包括 asm、Flagger Operator、Asm Operator、Jaeger Operator。

部署新版本的 istiod

注意:在部署新版本的 istiod 之前,请先参考 升级前,确保集群的 Kubernetes 版本满足升级路径要求。

  1. 返回 mesh 详情页,在 Mesh Deployment 区域,点击对应集群的 Istio Version 右侧的 升级 按钮。弹窗中将显示 Istio 的升级路径。
  2. 点击弹窗中的 升级 按钮。

检查集群中是否存在 EnvoyFilters

  1. 在左侧导航的 平台管理 中,点击 Service Mesh > EnvoyFilter

    注意:如果平台中有多个 service mesh,可以通过顶部导航栏切换到集群所在的 service mesh。

  2. 检查 EnvoyFilter 列表中是否有数据。

    • 如果未找到数据,则检查完成。
    • 如果找到数据,请联系 EnvoyFilter 创建者,使所有 EnvoyFilters 适配新版本的 Istio,或联系技术支持。

升级集群中的所有 Istio data plane

集群中的 Istio data plane 包括 Sidecar、ingress gateway 和 egress gateway。

方式 1:通过交互式命令行工具升级

交互式命令行工具可以批量升级集群中的所有 Sidecar 和 gateway。此方式适合熟悉命令行操作的用户,尤其适合需要一次性快速升级整个集群的场景。

kubectl -ncpaas-system exec -it deploy/asm-controller -- /app/asm-controller bfg rollout

注意:您也可以使用无需确认的快速升级参数来执行升级。

kubectl -ncpaas-system exec -it deploy/asm-controller -- /app/asm-controller bfg rollout --no-prompt

注意:ingress 和 egress gateway 的滚动升级过程会先删除旧 Pod,然后创建新 Pod,直到所有 Pod 都更新为新版本的 data plane 镜像。因此,如果 gateway 只有一个 Pod,则在 gateway 升级期间将无法访问。

方式 2:通过 UI 升级

通过 UI 升级支持按不同命名空间批量升级,或指定单个 service/gateway 升级。此方式适合偏好使用可视化界面的用户,尤其适合需要灵活选择升级目标的场景。

升级 ingress 和 egress gateway

  1. 在左侧导航栏中,点击 Service Mesh > Gateways注意:在集群的 gateway 列表中,Istio Version 右侧的 图标表示该 gateway 的 data plane proxy 可以升级。
  2. 点击 Istio Version 右侧的 升级 按钮,然后点击 确认

升级 Sidecar

  1. 在左侧导航的 平台管理 中,点击 Service Mesh > Meshes
  2. 点击需要升级 Sidecar 的 Service Mesh Name 进入 mesh 详情页。
  3. 在 mesh 详情页的 Namespaces 区域,会列出该 service mesh 管理的命名空间。点击 Namespace Name,在新标签页中打开 Service Mesh,并进入 Sidecar 所在的命名空间。 注意:请依次对所有命名空间执行 Sidecar 升级。
  4. 在左侧导航栏中,点击 Service List注意:当 Service Name 旁出现 图标时,表示该 service 的 Sidecar 可以升级。
  5. 点击 批量升级 Sidecars注意:点击该 service 记录中 图标右侧的 升级 按钮,可升级单个 service。
  6. 全选、单选或多选 service,然后点击 升级注意:平台会通过滚动更新不同当前版本和目标版本 Sidecar 的 Pod 来升级该 service 的 Sidecar。如果升级失败,请检查 Container Platform 中的容器组事件以了解失败原因,或尝试 重新升级

注意:Sidecar 通过对 service 的 Deployment 执行滚动更新来完成 Pod 的 data plane 镜像更新。因此,如果 service 存在长连接,在 Pod 滚动更新期间会有短暂的服务中断。

下线集群中旧版本的 istiod

只有在集群中的所有 Istio data plane 都升级完成后,才能下线集群中旧版本的 istiod。

注意事项

  • 如果不下线集群中旧版本的 istiod,将无法使用 service mesh 的添加集群和 Sidecar 配置功能。
  • 当平台上有新的可升级版本时,如果任一集群尚未下线旧版本的 istiod,则平台无法升级。
  • 在多集群 service mesh 中,只有在所有集群都完成 Istio data plane 升级后,才能依次下线各集群中的旧版本 istiod。

操作步骤

  1. 返回 mesh 详情页,在 Mesh Deployment 区域,点击对应集群的 Istio Version 右侧的 下线旧版本 按钮。此时会显示 下线旧版本 弹窗。
  2. 点击弹窗中的 确认 按钮。

注意:如果集群中仍有未升级的数据平面,点击 下线旧版本 后,弹窗会展示集群中尚未升级的 ingress gateway、egress gateway 和 Sidecar,便于快速定位需要升级的数据平面。