本指南介绍了如何在 GKE on VMware 上将 Anthos Service Mesh 从 1.5.10 降级为 1.4.10。
重新部署 Anthos Service Mesh 控制层面组件大约需要 5 到 10 分钟才能完成。此外,您需要在所有工作负载中注入新的 Sidecar 代理,以便这些 Sidecar 代理通过当前 Anthos Service Mesh 版本进行更新。更新 Sidecar 代理所需的时间取决于多种因素,例如 Pod 数量、节点数量、部署扩缩设置、Pod 中断预算和其他配置设置。更新 Sidecar 代理所需的时间估计约为每分钟 100 个 Pod。
降级概览
本部分概述了降级 Anthos Service Mesh 所需执行的步骤。
查看支持的功能和本指南,熟悉这些功能和降级流程。
如果您在安装以前版本的 Anthos Service Mesh 时启用了可选功能,则需要在降级时启用相同的功能。如需启用可选功能,您可以添加
--set values
标志,或在运行istioctl apply
命令时通过 YAML 文件指定-f
标志。如果您要从 Anthos Service Mesh 1.5.10 降级至 1.4.10,并且您在 YAML 文件中启用了可选功能,则需要将 YAML 从 IstioOperator API 转换为 IstioControlPlane API。
安排停机时间。完成降级可能需要长达 1 小时的时间,具体取决于集群的规模。 请注意,这不包括需要重新部署工作负载以更新 Sidecar 代理所需的时间。
设置您的环境
在本地机器上,安装并初始化 Google Cloud CLI。
如果您已安装 gcloud CLI,请执行以下操作:
使用 gcloud CLI 进行身份验证:
gcloud auth login
更新组件:
gcloud components update
安装
kubectl
:gcloud components install kubectl
获取在其中创建集群的项目的项目 ID:
gcloud
gcloud projects list
控制台
在 Google Cloud 控制台中,前往信息中心页面:
点击页面顶部的从以下列表中选择:下拉列表。在随即显示的从以下列表中选择:窗口中,选择您的项目。项目 ID 会显示在项目信息中心的项目信息卡片上。
设置 Google Cloud CLI 的默认项目 ID:
gcloud config set project PROJECT_ID
设置凭据和权限
-
确保您在要安装 Anthos Service Mesh 的 GKE on VMware 用户集群上具有
kubectl
。请注意,您只能在用户集群上安装 Anthos Service Mesh,不能在管理员集群上安装。 -
向当前用户授予集群管理员权限。您需要这些权限,以便为 Anthos Service Mesh 创建必要的基于角色的访问权限控制 (RBAC) 规则:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user="$(gcloud config get-value core/account)"
如果您看到
"cluster-admin-binding" already exists
错误,可以放心地忽略该错误并继续使用现有的集群管理员绑定。
下载安装文件
-
将 Anthos Service Mesh 安装文件下载到当前工作目录中:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz
-
下载签名文件并使用
openssl
验证签名:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-linux.tar.gz.1.sig openssl dgst -verify - -signature istio-1.4.10-asm.18-linux.tar.gz.1.sig istio-1.4.10-asm.18-linux.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
预期输出为
Verified OK
-
将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
tar xzf istio-1.4.10-asm.18-linux.tar.gz
该命令会在当前工作目录中创建一个名为
istio-1.4.10-asm.18
的安装目录,其中包含:samples
中的示例应用bin
目录中的以下工具:istioctl
:您使用istioctl
来安装 Anthos Service Mesh。asmctl
:安装 Anthos Service Mesh 后,您可以使用asmctl
来帮助验证安全配置。(目前,GKE on VMware 不支持asmctl
。)
-
将 Anthos Service Mesh 安装文件下载到当前工作目录中:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz
-
下载签名文件并使用
openssl
验证签名:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.4.10-asm.18-osx.tar.gz.1.sig istio-1.4.10-asm.18-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
预期输出为
Verified OK
-
将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
tar xzf istio-1.4.10-asm.18-osx.tar.gz
该命令会在当前工作目录中创建一个名为
istio-1.4.10-asm.18
的安装目录,其中包含:samples
中的示例应用bin
目录中的以下工具:istioctl
:您使用istioctl
来安装 Anthos Service Mesh。asmctl
:安装 Anthos Service Mesh 后,您可以使用asmctl
来帮助验证安全配置。(目前,GKE on VMware 不支持asmctl
。)
-
将 Anthos Service Mesh 安装文件下载到当前工作目录中:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip
-
下载签名文件并使用
openssl
验证签名:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.4.10-asm.18-win.zip.1.sig openssl dgst -verify - -signature istio-1.4.10-asm.18-win.zip.1.sig istio-1.4.10-asm.18-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
预期输出为
Verified OK
-
将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
tar xzf istio-1.4.10-asm.18-win.zip
该命令会在当前工作目录中创建一个名为
istio-1.4.10-asm.18
的安装目录,其中包含:samples
中的示例应用bin
目录中的以下工具:istioctl
:您使用istioctl
来安装 Anthos Service Mesh。asmctl
:安装 Anthos Service Mesh 后,您可以使用asmctl
来帮助验证安全配置。(目前,GKE on VMware 不支持asmctl
。)
-
确保您位于 Anthos Service Mesh 安装的根目录。
cd istio-1.4.10-asm.18
-
为方便起见,请将
/bin
目录中的工具添加到 PATH:export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
降级 Anthos Service Mesh
本部分介绍如何降级 Anthos Service Mesh 以及如何启用在支持的功能页面中列出的支持的默认功能。如需了解如何启用支持的可选功能,请参阅启用可选功能。
如需安装 Anthos Service Mesh,请运行以下命令:
选择以下任一命令,以在 PERMISSIVE
双向 TLS (mTLS) 身份验证模式或 STRICT
mTLS 模式下配置 Anthos Service Mesh。
PERMISSIVE mTLS
istioctl manifest apply --set profile=asm-onprem
STRICT mTLS
istioctl manifest apply --set profile=asm-onprem \ --set values.global.mtls.enabled=true
检查控制层面组件
降级需要重新安装控制层面组件,此过程大约需要 5 到 10 分钟才能完成。旧的控制层面组件会被终止,然后在安装新组件时被删除。您可以通过查看工作负载的 AGE
列中的值来检查进度。
kubectl get pod -n istio-system
输出示例
NAME READY STATUS RESTARTS AGE
istio-citadel-64f6d7c7c7-jtmw7 1/1 Running 0 38s
istio-galley-6b4878d445-c4rtt 1/2 Running 0 37s
istio-ingressgateway-7866c5c88f-llp28 0/1 Running 0 37s
istio-ingressgateway-7866c5c88f-m9sck 1/1 Terminating 0 25m
istio-pilot-7f4fdcb89c-r98jl 1/2 Running 0 37s
istio-sidecar-injector-65cbd565b9-q4wm9 1/1 Running 0 37s
promsd-78dfdf7c7d-2bhr6 2/2 Running 1 37s
在此示例中,有两个 istio-ingressgateway
实例。系统正在终止 AGE
列中具有 25m
的实例。所有其他组件均为新安装组件。
更新 Sidecar 代理
降级 Anthos Service Mesh 之前在集群上运行的任何工作负载都需要注入或更新边车代理,以使其具有当前 Anthos Service Mesh 版本。
借助自动 Sidecar 注入,您可以通过 Pod 重启来更新现有 Pod 的 Sidecar。如何重启 Pod 取决于 Pod 是否在 Deployment 中创建。
如果您使用了 Deployment,请重启 Deployment,这会重启所有安装了 Sidecar 的 Pod:
kubectl rollout restart YOUR_DEPLOYMENT -n YOUR_NAMESPACE
如果您未使用 Deployment,请删除 Pod,系统会自动重新创建 Pod 及其 Sidecar:
kubectl delete pod -n YOUR_NAMESPACE --all
检查命名空间中的所有 Pod 是否都已注入 Sidecar:
kubectl get pod -n YOUR_NAMESPACE --all
在上一个命令的以下示例输出中,注意
READY
列表示每个工作负载均有两个容器:主容器和边车代理的容器。NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...