更新时间:2024-08-21 GMT+08:00
分享

使用ingress中转方案

前提

  • 确保准备工作已完成。
  • 网格仅使用了网关能力。
  • 已经创建和原网格网关同规格的ELB实例。

创建Ingress资源

  1. 证书secret从istio-system空间迁移到业务命令空间,可使用如下命令:

    kubectl -nistio-system get secret {证书名} -oyaml > /tmp/{证书名}.yaml

    进行如下修改:

    kubectl -n{业务命名空间} create -f /tmp/{证书名}.yaml

  2. (推荐)根据现有的Ingress-gateway配置,登录cce控制台,单击集群名称进入集群详情页面,在左侧菜单栏依次单击“服务-路由-创建路由”创建Ingress配置,并配置https证书。

  3. 验证流量是否正常,确保Ingress流量正常后方可进行下一步。

    ingress和istio-gateway同时支持httpbin.example.com域名,通过更改host可以切换不同的流量。

业务切流

  1. 在本地host将域名对应的ELB IP地址改为新的ELB IP。
  2. 本地验证功能,验证成功后修改DNS 配置,将域名解析IP地址改为新ELB的IP。

迁移

  1. 登录应用服务网格控制台,单击待迁移的企业版网格名称进入网格详情页面,在在网关管理页面删除网格内的所有网关资源。

  2. 在网格详情页,单击“网格配置”进入基本信息页签,单击集群后面的“移除”按钮 。

  3. 是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。

  4. 选择从企业版网格移除出来的集群创建基础版网格。建议创建istio最新版本的网格。

  5. 在网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。

  6. 单击创建出来的网格名称进入详情页,依次单击“服务网关-添加网关”手动创建网关,选择原ELB实例。

  7. 将准备工作中备份的配置文件在新网格中恢复,若未配置kubectl命令,可参考CCE配置kubectl

    kubectl create -f all-vs.yaml
    kubectl create -f all-dr.yaml

    若出现“Error from server (AlreadyExists): xxxxx already exists” 已存在的报错则忽略。

功能验证

  1. 查看应用服务网格基本功能是否正常,如网关路由显示 ,网关访问等。

  2. 修改host地址为老ELB IP,验证业务功能是否正常。
  3. 若功能正常则将DNS解析地址改为老ELB IP。
  4. 验证正常后删除CCE ingress。

异常回退

若在迁移过程中出现异常,可按照如下步骤回退。

  1. 登录应用服务网格控制台,在网格列表页面单击待删除网格右上角的卸载按钮卸载网格,是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。

  2. 在网格详情页,依次单击“网格配置-基本信息-添加集群”将卸载后集群重新添加回1.0企业版里面。

  3. 添加集群时,集群 选择“扁平网格”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。

  4. 使用控制面kubectl 执行如下命令。

    kubectl create -f all-svc.yaml
    kubectl create -f all-vs.yaml
    kubectl create -f all-dr.yaml
    kubectl create -f all-gw.yaml

  5. 功能验证。

    • 网关访问正常

    • 路由显示正常

  6. 修改DNS解析地址为网关ELB IP。
  7. 删除CCE ingress。

相关文档