本页面提供的信息可帮助您规划 Anthos Service Mesh 升级。我们还建议您查看 Istio 升级说明。
Canary 版升级简介
我们建议您首先运行新控制层面基于 canary 的部署,以升级 Anthos Service Mesh。采用 Canary 版升级时,asmcli
会将控制平面的新修订版本与旧的控制平面一起安装。旧控制层面和新控制层面都标有 revision
标签,该标签充当控制层面的标识符。
然后,您可以通过在命名空间上设置相同的 revision
标签并执行滚动重启,将工作负载迁移到新的控制层面。重启会重新注入 Pod 中的 Sidecar 代理,以便代理使用新的控制层面。通过这种方法,您可以监控升级对一小部分工作负载的影响。测试应用后,您可以将所有流量迁移到新控制平面或回滚到旧控制平面。此方法比执行就地升级更安全,因为新控制平面将替换旧控制平面。
对于此初始预览,asmcli
会默认安装带有修订版本标签的 istio-ingressgateway
。这样,您就可以对 istio-ingressgateway
和控制层面进行 Canary 升级。
自定义控制层面
如果您自定义了先前的安装,则在升级 Anthos Service Mesh 时也需要使用相同的自定义设置。如果您通过向 istioctl install
添加 --set values
标志来自定义安装,则必须将这些设置添加到 IstioOperator
YAML 文件(称为 叠加文件。您可以在运行脚本时使用 --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,请运行以下命令:
从您的某个命名空间中获取 Pod 列表:
kubectl get pods -n NAMESPACE
将
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
参数。