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

新建集群和网格迁移方案

  • 请务必确保准备工作完成。
  • 请根据自身需求选择集群版本和网格版本,推荐使用最新集群和网格版本。

新建集群和网格

  1. 登录CCE控制台选择在当前企业版集群所在的同VPC下创建集群
  2. 在应用服务网格ASM控制台 ,创建基础版本网格,选择步骤1新建的集群。

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

  4. 查看网格使用了几个ELB,新建同等数量和规格的ELB。

配置同步

方案一 手动同步网格配置(推荐)

手动在新建的网格上添加网关路由,并同步1.0企业版网格配置。

方案二 使用备份网格资源还原配置

  1. 查看企业版网格网关使用了几个ELB,使用新建的几个ELB进行替换,如下图所示使用了两个ELB:

    ELB1:(3dbb4787-75c1-42f0-897a-1f683f7e89a0)* .*.*.*

    ELB2:(e60fdaa7-3398-4a19-8bd1-d53598c6917e)* .*.*.*

    新建两个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/老CluseterName/新CluseterName/g' *.yaml
    
    #替换完成后查看 
    grep -i "新ELB IP" *.yaml
    grep -i "新ELB ID" *.yaml
    grep -i "新clusterID" *.yaml
    grep -i "新CluseterName" *.yaml

    替换完成后如下所示:

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

    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

    若出现“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页面修改

业务切流

业务切流有两种方案,可根据需要进行选择。

方案一 使用DNS切换后端ELB IP

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

方案二 使用ServiceEntry和WorkloadEntry进行灰度切流(待定,感觉没使用场景)

功能验证

  1. 业务切流进行全面功能验证。

异常回退

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

  1. 将DNS 配置复原。
  2. 将新建网格集群删除。

相关文档