
# 使用ingress中转方案
#### 前提
- 确保[准备工作](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_1011.html#asm_bestpractice_1011__section8260108181414)已完成。
- 网格仅使用了网关能力。

- 已经创建和原网格网关同规格的ELB实例。
 
#### 创建Ingress资源
1. 证书secret从istio-system空间迁移到业务命令空间，可使用如下命令： 
   kubectl -nistio-system get secret {证书名} -oyaml \> /tmp/{证书名}.yaml
   进行如下修改：
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001952690618.png)
   kubectl -n{业务命名空间} create -f /tmp/{证书名}.yaml
   
   
2. （推荐）根据现有的Ingress-gateway配置，登录cce控制台，单击集群名称进入集群详情页面，在左侧菜单栏依次单击"服务-路由-创建路由"创建Ingress配置，并配置https证书。 
   
   
   
   
3. 验证流量是否正常，确保Ingress流量正常后方可进行下一步。 
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001862646633.png)
   ingress和istio-gateway同时支持httpbin.example.com域名，通过更改host可以切换不同的流量。
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001815726834.png)
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001815886610.png)
   
   
 
#### 业务切流
1. 在本地host将域名对应的ELB IP地址改为新的ELB IP。
2. 本地验证功能，验证成功后修改DNS 配置，将域名解析IP地址改为新ELB的IP。
 
#### 迁移
1. 登录[应用服务网格控制台](https://console.huaweicloud.com/asm/?locale=zh-cn)，单击待迁移的企业版网格名称进入网格详情页面，在网关管理页面删除网格内的所有网关资源。
   
   
   
   
2. 在网格详情页，单击"网格配置"进入基本信息页签，单击集群后面的"移除"按钮 。 
   
   
   
3. 是否重启已有服务选择"是"，勾选"取消注入sidecar会重启关联的Pod，将会暂时中断您的业务"，单击"确定"。 
   
   
   
4. 选择从企业版网格移除出来的集群创建基础版网格。建议创建istio最新版本的网格。 
   
   
   
5. 在网格详情页，依次单击"网格配置-sidecar管理-sidecar管理"，选择需要开启自动注入的命名空间（[准备工作中步骤11](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_1011.html#asm_bestpractice_1011__li5411812381)中记录的命名空间），是否重启已有服务选择"是"，勾选"取消注入sidecar会重启关联的Pod，将会暂时中断您的业务"，单击"确定"。
   
   
   
   
   
6. 单击创建出来的网格名称进入详情页，依次单击"服务网关-添加网关"手动创建网关，选择原ELB实例。 
   
   
   
7. 将准备工作中备份的配置文件在新网格中恢复，若未配置kubectl命令，可参考[CCE配置kubectl](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html#section1) 。
   
   ```
   kubectl create -f all-vs.yaml
   kubectl create -f all-dr.yaml
   ```
   ![](https://support.huaweicloud.com/bestpractice-asm/public_sys-resources/caution_3.0-zh-cn.png)
   若出现"Error from server (AlreadyExists): xxxxx already exists" 已存在的报错则忽略。
   
   
 
#### 功能验证
1. 查看应用服务网格基本功能是否正常，如网关路由显示 ，网关访问等。 
   
   
   
2. 修改host地址为老ELB IP，验证业务功能是否正常。
3. 若功能正常则将DNS解析地址改为老ELB IP。
4. 验证正常后删除CCE ingress。
 
#### 异常回退
若在迁移过程中出现异常，可按照如下步骤回退。
1. 登录[应用服务网格控制台](https://console.huaweicloud.com/asm/?locale=zh-cn)，在网格列表页面单击待删除网格右上角的卸载按钮卸载网格，是否重启已有服务选择"是"，勾选"取消注入sidecar会重启关联的Pod，将会暂时中断您的业务"，单击"确定"。
   
   
   
   
   
2. 在网格详情页，依次单击"网格配置-基本信息-添加集群"将卸载后集群重新添加回1.0企业版里面。 
   
   
   
3. 添加集群时，集群 选择"扁平网格"，选择需要开启自动注入的命名空间（[准备工作中步骤11](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_1011.html#asm_bestpractice_1011__li5411812381)中记录的命名空间），是否重启已有服务选择"是"，勾选"取消注入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。
 
