规划升级

本页面提供的信息可帮助您规划 Anthos Service Mesh 升级。我们还建议您查看 Istio 升级说明

Canary 版升级简介

我们建议您首先运行新控制层面基于 canary 的部署,以升级 Anthos Service Mesh。采用 Canary 版升级时,asmcli 会将控制平面的新修订版本与旧的控制平面一起安装。旧控制层面和新控制层面都标有 revision 标签,该标签充当控制层面的标识符。

要将工作负载迁移到新的控制层面,请执行以下操作:

  1. 在其中一个命名空间中设置新控制层面的 revision 标签。

  2. 执行滚动重启。重启会在 pod 中重新注入边车代理,以使代理使用新的控制层面。

  3. 监控升级对工作负载的影响。如果需要测试应用,请重复上述步骤。

  4. 测试应用后,您可以将所有流量迁移到新控制层面或回滚到旧控制层面。

与新控制层面替换旧控制层面的就地升级相比,Canary 升级更为安全。如需了解详细步骤,请参阅切换到新的控制层面

自定义控制层面

如果您自定义了先前的安装,则在升级 Anthos Service Mesh 时也需要使用相同的自定义设置。如果您通过向 istioctl install 添加 --set values 标志来自定义安装,则必须将这些设置添加到 IstioOperator YAML 文件(称为 叠加文件。您可以在运行 asmcli 时使用 --custom_overlay 选项和文件名来指定叠加文件。

GitHub 中的 anthos-service-mesh 软件包包含许多叠加层文件。这些文件包含默认配置的常见自定义。您可以按原样使用这些文件,也可以根据需要对这些文件进行其他更改。启用可选的 Anthos Service Mesh 功能需要一些文件。当您运行 asmcli验证项目和集群时,系统会下载 anthos-service-mesh 软件包。

使用 asmcli install 安装 Anthos Service Mesh 时,您可以使用 --option--custom_overlay 指定一个或多个叠加层文件。如果您不需要对 anthos-service-mesh 代码库中的文件进行任何更改,则可以使用 --option,该脚本将从 GitHub 中提取文件。否则,您可以更改叠加文件,然后使用 --custom_overlay 选项将其传递给 asmcli

选择证书授权机构

如果您目前的 Anthos Service Mesh 安装使用 Anthos Service Mesh 证书授权机构 (Mesh CA) 作为颁发双向 TLS (mTLS) 证书的证书授权机构 (CA),我们建议您继续使用 Mesh CA,原因如下:

  • Mesh CA 是一项高度可靠的可扩缩服务,针对 Google Cloud 上动态扩缩的工作负载进行了优化。
  • 通过 Mesh CA,Google 负责管理 CA 后端的安全性和可用性。
  • Mesh CA 让您可在集群中依赖单个信任根。

如果当前的 Anthos Service Mesh 安装使用 Istio CA(以前称为“Citadel”),则可以在升级时切换到 Mesh CA,但需要安排停机时间。在升级期间,mTLS 流量会中断,直到所有工作负载都切换为通过 Mesh CA 使用新控制层面。

来自 Mesh CA 的证书包含有关应用的服务的以下数据:

  • Google Cloud 项目 ID
  • GKE 命名空间
  • GKE 服务账号名称

标识您的 CA

运行 asmcli install 进行升级时,您可以指定 asmcli 应在新控制平面上启用的 CA。

在将工作负载部署到新控制层面时,更改 CA 会导致停机。如果您无法安排停机时间,请务必为旧控制层面使用的新控制层面指定相同的 CA。如果您不确定在网格上启用了哪个 CA,请运行以下命令:

  1. 从您的某个命名空间中获取 Pod 列表:

    kubectl get pods -n NAMESPACE
    
  2. POD_NAME 替换为以下命令中某个 Pod 的名称:

    kubectl get pod POD_NAME -n NAMESPACE -o yaml | grep CA_ADDR -A 1
    

    如果在命名空间上启用了 Mesh CA,您会看到以下输出:

    - name: CA_ADDR
      value: meshca.googleapis.com:443
    

准备网关配置

Anthos Service Mesh 允许您将网关部署和管理为服务网格的一部分。网关描述了在网格边缘运行的负载均衡器,用于接收传入或传出 HTTP/TCP 连接。网关是 Envoy 代理,可让您精确控制进出网格的流量。

默认情况下,asmcli 不会安装 istio-ingressgateway。我们建议您单独部署和管理控制平面和网关。如需了解详情,请参阅安装和升级网关。如果您需要随集群内控制层面安装的默认 istio-ingressgateway,请添加 --option legacy-default-ingressgateway 参数。

后续步骤