第 5 章 迁移网关


5.1. 迁移网关

如果您在 Red Hat OpenShift Service Mesh 2.6.9 中使用网关并将其迁移到 OpenShift Service Mesh 3.0,您可以像常规工作负载一样将网关从 OpenShift Service Mesh 2 迁移到 OpenShift Service Mesh 3。

使用以下两种方法之一将网关从 Red Hat OpenShift Service Mesh 2 迁移到 OpenShift Service Mesh 3:

  • 网关 Canary 迁移
  • 网关迁移

5.1.1. 网关 Canary 迁移

当您想逐步推出部署时,请使用网关 Canary 迁移方法。它使用多个网关版本,并对网关推出部署进行最大控制。

注意

网关命名空间的标签在 mulitenant 和集群范围的网格之间有所不同。要了解在特定迁移情况下要使用哪些标签,以及 maistra.io/ignore-namespace: "true" 标签要求,请参阅"多租户迁移指南"或"Cluster-wide migration guide"部分。

步骤

  1. 运行以下命令标记网关命名空间,以确保新网格启用了网关注入,并添加 maistra.io/ignore-namespace: "true" 标签:

    $ oc label namespace <gateway_namespace> istio.io/rev=<istio_revision_name> maistra.io/ignore-namespace="true"
    Copy to Clipboard Toggle word wrap
    1. 如果需要,删除 istio-injection=enabled 标签。
  2. 使用以下示例部署 canary 网关:

    Canary 网关的 YAML 示例

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: istio-ingressgateway-canary
      namespace: istio-ingress 
    1
    
    spec:
       selector:
         matchLabels:
           istio: ingressgateway 
    2
    
       template:
         metadata:
           annotations:
             inject.istio.io/templates: gateway
           labels:
             istio: ingressgateway
             istio.io/rev: canary 
    3
    
         spec:
           containers:
           - name: istio-proxy
             image: auto
    Copy to Clipboard Toggle word wrap

    1
    Deployment 资源必须与现有网关位于同一个命名空间中。
    2
    您的 spec.selector.matchlabels.istio 参数必须与现有的网关服务选择器匹配。
    3
    将 OpenShift Service Mesh 3.0 control plane 修订版本设置为 istio.io/rev 标签的值。
  3. 确保新网关部署使用新修订版本运行,并正在处理请求:

    1. 检查 pod 是否正在运行并处于 Ready 状态。
    2. 运行以下命令,检查网关是否正在运行新修订版本:

      $ istioctl ps -n istio-ingress
      Copy to Clipboard Toggle word wrap
    3. 通过网关测试示例路由。
  4. 在部署间逐渐移动流量:

    1. 运行以下命令,为新网关增加副本:

      $ oc scale -n istio-ingress deployment/<new_gateway_deployment> --replicas <new_number_of_replicas>
      Copy to Clipboard Toggle word wrap
    2. 运行以下命令来减少旧网关的副本:

      $ oc scale -n istio-ingress deployment/<old_gateway_deployment> --replicas <new_number_of_replicas>
      Copy to Clipboard Toggle word wrap
    3. 重复此过程,逐步调整副本数,直到新网关处理到网关服务的所有流量。

后续步骤

5.1.2. 网关迁移

如果您需要对网关迁移的详细控制,您可以对迁移执行网关。这个方法适用于带有专用网关的命名空间,以及使用多个命名空间共享的集中式网关的环境。

注意

网关命名空间的标签在 mulitenant 和集群范围的网格之间有所不同。要了解在特定迁移情况下要使用哪些标签,以及 maistra.io/ignore-namespace: "true" 标签要求,请参阅"多租户迁移指南"或"Cluster-wide migration guide"部分。

步骤

  1. 运行以下命令标记网关命名空间,以确保新网格启用了网关注入,并添加 maistra.io/ignore-namespace: "true" 标签:

    $ oc label namespace <gateway_namespace> istio.io/rev=<istio_revision_name> maistra.io/ignore-namespace="true"
    Copy to Clipboard Toggle word wrap
    1. 如果需要,删除 istio-injection=enabled 标签。
  2. 运行以下命令来重启网关部署:

    $ oc -n ${app_namespace} rollout restart deployment ${gateway_name}
    Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令,检查网关是否正在运行新修订版本:

    $ istioctl ps -n istio-ingress
    Copy to Clipboard Toggle word wrap
  2. 测试特定于应用程序的路由。

后续步骤

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat