
# 新建集群和网格迁移方案
![](https://support.huaweicloud.com/bestpractice-asm/public_sys-resources/caution_3.0-zh-cn.png)
- 请务必确保[准备工作](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_1011.html#asm_bestpractice_1011__section8260108181414)完成。
- 请根据自身需求选择集群版本和网格版本，推荐使用最新集群和网格版本。
 
#### 新建集群和网格
1. 登录CCE控制台选择在当前企业版集群所在的同VPC下[创建集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0028.html)。
2. 在应用服务网格ASM控制台 ，创建基础版本网格，选择[步骤1]新建的集群。
   
   
   
   
3. 在新建的网格详情页，依次单击"网格配置-sidecar管理-sidecar管理"，选择需要开启自动注入的命名空间（[准备工作中步骤11](https://support.huaweicloud.com/bestpractice-asm/asm_bestpractice_1011.html#asm_bestpractice_1011__li5411812381)中记录的命名空间），是否重启已有服务选择"是"，勾选"取消注入sidecar会重启关联的Pod，将会暂时中断您的业务"，单击"确定"。
   
   
   
   
   
4. 查看网格使用了几个ELB，新建同等数量和规格的ELB。
 
#### 配置同步
**方案一 手动同步网格配置（推荐）**
手动在新建的网格上添加网关路由，并同步1.0企业版网格配置。
**方案二 使用备份网格资源还原配置**
1. 查看企业版网格网关使用了几个ELB，使用新建的几个ELB进行替换，如下图所示使用了两个ELB： 
   ELB1：（3dbb4787-75c1-42f0-897a-1f683f7e89a0）\* .\*.\*.\*
   ELB2：（e60fdaa7-3398-4a19-8bd1-d53598c6917e）\* .\*.\*.\*
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001862635721.png)
   新建两个ELB。
   newELB1：（caf6ec4a-2fa8-42ae-bdfb-388f8b13778a）\* .\*.\*.\*
   newELB2：（792c0a3d-190d-413d-a5b9-5c1ac3fe3705）\* .\*.\*.\*
   将准备工作中备份的istio 配置文件拷贝一份到新集群节点上, 执行如下命令：
   ```
   #查看老ELB IP
   grep -i "老ELB IP" *.yaml
   #ELB IP 替换
   sed -i 's/老ELB IP/新ELB IP/g' *.yaml
   #ELB ID 替换
   sed -i 's/老ELB ID/新ELB ID/g' *.yaml
   #替换clusterID
   sed -i 's/老clusterID/新clusterID/g' *.yaml
   #替换CluseterName
   sed -i 's/老ClusterName/新ClusterName/g' *.yaml
   #替换完成后查看 
   grep -i "新ELB IP" *.yaml
   grep -i "新ELB ID" *.yaml
   grep -i "新clusterID" *.yaml
   grep -i "新ClusterName" *.yaml
   ```
   替换完成后如下所示：
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001815875706.png)
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001862555513.png)
   
   
2. 将准备工作中备份的配置文件在新网格中恢复，若未配置kubectl命令，可参考[CCE配置kubectl](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html#section1) 。
   
   ```
   kubectl create -f all-svc.yaml
   //kubectl create -f all-secret.yaml
   kubectl create -f all-vs.yaml
   kubectl create -f all-dr.yaml
   kubectl create -f all-gw.yaml
   kubectl create -f all-se.yaml
   kubectl create -f all-ef.yaml
   kubectl create -f all-sidecar.yaml
   kubectl create -f all-we.yaml
   kubectl create -f all-wg.yaml
   kubectl create -f all-pa.yaml
   kubectl create -f all-ra.yaml
   kubectl create -f all-ap.yaml
   kubectl create -f user-all-svc.yaml
   kubectl create -f user-all-secret.yaml
   ```
   ![](https://support.huaweicloud.com/bestpractice-asm/public_sys-resources/caution_3.0-zh-cn.png)
   若出现"Error from server (AlreadyExists): xxxxx already exists" 已存在的报错则忽略。
   
   
3. 删除新版本无用配置。 
   - 若源版本是1.6企业版则执行如下命令：
   
   
   ```
   kubectl -nistio-system delete svc istiod-remote
   kubectl -nistio-system delete svc istiod-elb
   kubectl -nistio-system delete vs istiod
   ```
   - 若源版本是1.8企业版则执行如下命令：
   
   
   ```
   kubectl -nistio-system delete envoyfilter metadata-exchange-1.6 
   kubectl -nistio-system delete envoyfilter metadata-exchange-1.7 
   kubectl -nistio-system delete envoyfilter metadata-exchange-1.8 
   kubectl -nistio-system delete envoyfilter stats-filter-1.6
   kubectl -nistio-system delete envoyfilter stats-filter-1.7
   kubectl -nistio-system delete envoyfilter stats-filter-1.8
   kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.6
   kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.7
   kubectl -nistio-system delete envoyfilter tcp-metadata-exchange-1.8
   kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.6
   kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.7
   kubectl -nistio-system delete envoyfilter tcp-stats-filter-1.8
   kubectl -nistio-system delete svc istiod-remote
   kubectl -nistio-system delete svc istiod-elb
   kubectl -nistio-system delete vs istiod
   ```
   
   
4. 验证业务功能若出现服务异常场景，单击处理，查看异常错误。 
   
   在CCE service页面修改
   ![](https://support.huaweicloud.com/bestpractice-asm/zh-cn_image_0000001862635725.png)
   
   
 
#### 业务切流
业务切流有两种方案，可根据需要进行选择。
**方案一 使用DNS切换后端ELB IP**
1. 在本地host将域名对应的ELB IP地址改为新的ELB IP。
2. 本地验证功能，验证成功后修改DNS 配置，将域名解析IP地址改为新ELB的IP。
**方案二 使用ServiceEntry和WorkloadEntry进行灰度切流（待定，感觉没使用场景）**
#### 功能验证
1. 业务切流进行全面功能验证。
 
#### 异常回退
若在迁移过程中出现异常，可按照如下步骤回退
1. 将DNS 配置复原。
2. 将新建网格集群删除。
 
