1.11.4.4. 将 Red Hat OpenShift Service Mesh 从版本 1.1 迁移到版本 2.0
从版本 1.1 升级到 2.0 需要手动步骤将工作负载和应用程序迁移到运行新版本的 Red Hat OpenShift Service Mesh 的新实例中。
先决条件
- 在升级到 Red Hat OpenShift Service Mesh 2.0 之前,您必须升级到 OpenShift Container Platform 4.7。
- 您必须具有 Red Hat OpenShift Service Mesh 版本 2.0 operator。如果选择了 自动 升级路径,Operator 将自动下载最新信息。但是,您必须执行一些步骤来使用 Red Hat OpenShift Service Mesh 版本 2.0 中的功能。
1.11.4.4.1. 升级 Red Hat OpenShift Service Mesh
要升级 Red Hat OpenShift Service Mesh,必须在新命名空间中创建一个 Red Hat OpenShift Service Mesh ServiceMeshControlPlane
v2 资源实例。然后,配置完成后,将微服务应用程序和工作负载从旧的网格移到新服务网格中。
流程
检查 v1
ServiceMeshControlPlane
资源配置,以确保它有效。运行以下命令,将您的
ServiceMeshControlPlane
资源视为 v2 资源。$ oc get smcp -o yaml
-
查看输出中的
spec.techPreview.errored.message
字段,以了解有关任何无效字段的信息。 - 如果您的 v1 资源中存在无效字段,则该资源不会被协调,且无法作为 v2 资源编辑。v2 字段的所有更新都会被原始 v1 设置覆盖。要修复无效字段,可以替换、补丁或编辑资源的 v1 版本。您还可以在不修复的情况下删除资源。在资源修复后,它可以被协调,您可以修改或查看资源的 v2 版本。
要通过编辑文件来修复资源,请使用
oc get
检索资源,在本地编辑文本文件,并将资源替换为您编辑的文件。$ oc get smcp.v1.maistra.io <smcp_name> > smcp-resource.yaml #Edit the smcp-resource.yaml file. $ oc replace -f smcp-resource.yaml
要使用补丁修复资源,请使用
oc patch
。$ oc patch smcp.v1.maistra.io <smcp_name> --type json --patch '[{"op": "replace","path":"/spec/path/to/bad/setting","value":"corrected-value"}]'
要通过使用命令行工具编辑资源,请使用
oc edit
。$ oc edit smcp.v1.maistra.io <smcp_name>
备份 Service Mesh control plane 配置。切换到包含
ServiceMeshControlPlane
资源的项目。在本例中,istio-system
是 Service Mesh control plane 项目的名称。$ oc project istio-system
输入以下命令来检索当前的配置。您的 <smcp_name> 在您的
ServiceMeshControlPlane
资源元数据中指定,如basic-install
或full-install
。$ oc get servicemeshcontrolplanes.v1.maistra.io <smcp_name> -o yaml > <smcp_name>.v1.yaml
将
ServiceMeshControlPlane
转换为 v2 control plane 版本,其包含您的配置信息作为起点。$ oc get smcp <smcp_name> -o yaml > <smcp_name>.v2.yaml
创建一个项目。在 OpenShift Container Platform 控制台项目菜单中,点
New Project
,并为项目输入名称如istio-system-upgrade
。或者,您可以通过 CLI 运行这个命令。$ oc new-project istio-system-upgrade
-
使用新项目名称更新 v2
ServiceMeshControlPlane
中的metadata.namespace
字段。在本例中,使用istio-system-upgrade
。 -
将
version
字段从 1.1 更新至 2.0,或将其从 v2ServiceMeshControlPlane
中删除。 在新命名空间中创建一个
ServiceMeshControlPlane
。在命令行中,运行以下命令,使用您检索的ServiceMeshControlPlane
的 v2 版本部署 control plane。在这个示例中将 '<smcp_name.v2> ' 替换为您的文件的路径。$ oc create -n istio-system-upgrade -f <smcp_name>.v2.yaml
另外,您可以使用控制台创建 Service Mesh control plane。在 OpenShift Container Platform web 控制台中点 Project。然后选择您刚刚输入的项目名称。
-
点 Operators
Installed Operators。 - 点 Create ServiceMeshControlPlane。
-
选择 YAML view,把获取的 YAML 文件的内容复制到这个项。检查
apiVersion
字段是否已设置为maistra.io/v2
,并修改metadata.namespace
字段以使用新命名空间,如istio-system-upgrade
。 - 点 Create。
-
点 Operators