2.15. 网关迁移
				作为网络管理员,部署入口和出口网关的首选方法是使用网关注入的 Deployment 资源。
			
2.15.1. 关于网关迁移
					在 Red Hat OpenShift Service Mesh 2.x 中,Service Mesh Operator 默认在 control plane 命名空间中创建入口和出口网关。您可以在 ServiceMeshControlPlane 资源中定义额外的网关。
				
					使用网关注入使用 Deployment 资源部署入口和出口网关提供了更大的灵活性和控制。这种部署方法是一种更好的做法,因为它允许您管理网关以及相应的应用,而不是在 control plane 资源中管理。因此,您应该禁用默认网关,离开 Service Mesh Control Plane 声明,并开始使用网关注入。
				
2.15.2. 从 SMCP-Defined 网关迁移到网关注入
					此流程解释了如何使用零停机时间从 ServiceMeshControlPlane 资源中定义的网关迁移到使用网关注入管理的网关。此迁移是通过使用现有网关 Service 对象为目标的新网关部署来实现,该部署使用网关注入创建。
				
先决条件
- 
							以 cluster-admin用户身份登录到 OpenShift Container Platform Web 控制台。
- 必须安装 Red Hat OpenShift Service Mesh Operator。
- 
							ServiceMeshControlPlane资源必须部署,且配置中存在入口网关。
流程
- 创建新的入口网关,配置为使用网关注入。 注意- 此流程从 - ServiceMeshControlPlane资源中定义的默认入口网关部署迁移到网关注入。该流程可以被修改,以便从 SMCP 中配置的额外入口网关迁移。- 带有网关注入的 ingress 网关资源示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证新网关部署是否已成功处理请求。 - 如果在 - ServiceMeshControlPlane资源中配置了访问日志记录,请查看新网关部署的访问日志以确认行为。
- 缩减旧部署并扩展新部署。 - 通过执行以下步骤,逐步将流量从旧网关部署移到新的网关部署: - 运行以下命令,增加新网关部署的副本数: - oc scale -n istio-system deployment/<new_gateway_deployment> --replicas <new_number_of_replicas> - $ oc scale -n istio-system deployment/<new_gateway_deployment> --replicas <new_number_of_replicas>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来减少旧网关部署的副本数量: - oc scale -n istio-system deployment/<old_gateway_deployment> --replicas <new_number_of_replicas> - $ oc scale -n istio-system deployment/<old_gateway_deployment> --replicas <new_number_of_replicas>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
									重复运行前面的两个命令。每次,增加新网关部署的副本数量,并减少旧网关部署的副本数量。继续重复,直到新网关部署处理到网关 Service对象的所有流量。
 
- 运行以下命令,从网关 - Service对象中删除- app.kubernetes.io/managed-by标签:- oc label service -n istio-system istio-ingressgateway app.kubernetes.io/managed-by- - $ oc label service -n istio-system istio-ingressgateway app.kubernetes.io/managed-by-- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 删除标签可防止在 - ServiceMeshControlPlane资源中禁用网关时删除服务。
- 运行以下命令,从网关 - Service对象中删除- ownerReferences对象:- oc patch service -n istio-system istio-ingressgateway --type='json' -p='[{"op": "remove", "path": "/metadata/ownerReferences"}]'- $ oc patch service -n istio-system istio-ingressgateway --type='json' -p='[{"op": "remove", "path": "/metadata/ownerReferences"}]'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 删除此对象可防止删除 - ServiceMeshControlPlane资源时收集服务。
- 运行以下命令,禁用由 - ServiceMeshControlPlane资源管理的旧网关部署:- oc patch smcp -n istio-system <smcp_name> --type='json' -p='[{"op": "replace", "path": "/spec/gateways/ingress/enabled", "value": false}]'- $ oc patch smcp -n istio-system <smcp_name> --type='json' -p='[{"op": "replace", "path": "/spec/gateways/ingress/enabled", "value": false}]'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 
										当禁用旧的 ingress 网关 Service对象时,它不会被删除。您可以将此Service对象保存到文件中,并将其与新的网关注入资源一起进行管理。
- 
										如果您为 ServiceMeshControlPlane资源明确设置了/spec/gateways/ingress/enabled路径,则可用。如果使用默认值,则必须为入口和出口网关修补/spec/gateways/enabled路径。
 
- 
										当禁用旧的 ingress 网关