用于现代化改造的配置更新

本文档介绍了在将网格从 ISTIOD 控制平面现代化改造为 TRAFFIC_DIRECTOR 控制平面之前,您可能需要对托管式 Cloud Service Mesh 进行的配置更新。

如需详细了解现代化改造工作流,请参阅托管式控制平面现代化改造页面。

从 Istio Secret 迁移到 multicluster_mode

当集群使用 TRAFFIC_DIRECTOR 控制平面时,不支持多集群 Secret。本文档介绍了如何从使用 Istio 多集群 Secret 现代化改造到使用 multicluster_mode

Istio Secret 与声明式 API 概览

开源 Istio 多集群端点发现的工作原理是:使用 istioctl 或其他工具在集群中创建 Kubernetes Secret。借助此 Secret,集群可以将流量负载均衡到网格中的其他集群。然后,ISTIOD 控制平面会读取此 Secret,并开始将流量路由到该其他集群。

Cloud Service Mesh 具有声明式 API 来控制多集群流量,而不是直接创建 Istio Secret。此 API 会将 Istio Secret 视为实现详细信息,且比手动创建 Istio Secret 更可靠。将来的 Cloud Service Mesh 功能将依赖于声明式 API,您无法直接将这些新功能与 Istio Secret 搭配使用。声明式 API 是未来唯一受支持的路径。

如果您使用的是 Istio Secret,请尽快迁移到使用声明式 API。请注意,multicluster_mode 设置会指示每个集群将流量定向到网格中的每个其他集群。使用 Secret 可实现更灵活的配置,让您为每个集群配置它应将流量定向到网格中的哪个其他集群。如需查看声明式 API 和 Istio Secret 支持的功能之间的差异的完整列表,请参阅使用 Istio API 支持的功能

从 Istio Secret 迁移到声明式 API

如果您使用舰队功能 API 通过自动管理配置 Cloud Service Mesh,则无需按照这些说明操作。 仅当您使用 asmcli --managed 进行初始配置时,才需要执行这些步骤。

请注意,此过程会更改指向集群的 Secret。在此过程中,系统会移除端点,然后重新添加端点。在移除和添加端点之间,流量会暂时还原到本地路由,而不是负载均衡到其他集群。 如需了解详情,请参阅 GitHub 问题

如需从使用 Istio Secret 迁移到声明式 API,请按照以下步骤操作。 同时或连续执行以下步骤:

  1. 通过设置 multicluster_mode=connected,为舰队中要启用多集群端点发现的每个集群启用声明式 API。请注意,如果您不希望集群可发现,则需要明确设置 multicluster_mode=disconnected

    使用以下命令将集群加入多集群端点发现:

     kubectl patch configmap/asm-options -n istio-system --type merge -p '{"data":{"multicluster_mode":"connected"}}'
    

    使用以下命令将集群从端点发现中退出:

     kubectl patch configmap/asm-options -n istio-system --type merge -p '{"data":{"multicluster_mode":"disconnected"}}'
    
  2. 删除旧 Secret。

    在集群上设置 multicluster_mode=connected 后,每个集群都会为已设置 multicluster_mode=connected 的每个其他集群生成一个新 Secret。Secret 位于 istio-system 命名空间中,格式如下:

    istio-remote-secret-projects-PROJECT_NAME-locations-LOCATION-memberships-MEMBERSHIPS
    

    每个 Secret 还会应用标签 istio.io/owned-by: mesh.googleapis.com

    创建新 Secret 后,您可以删除使用 istioctl create-remote-secret 手动创建的任何 Secret:

    kubectl delete secret SECRET_NAME -n istio-system
    

迁移完成后,检查请求指标,以确保请求按预期路由。