文档首页/ 应用服务网格 ASM/ 最佳实践/ 1.0企业版网格迁移到基础版/ 1.0企业版多集群场景(使用原集群创建网格)
更新时间:2024-06-26 GMT+08:00
分享

1.0企业版多集群场景(使用原集群创建网格)

前提

  1. 确保准备工作已完成。
  2. 梳理网格下各个集群的网关和跨集群svc。

    集群

    网关

    跨集群访问的服务

    A

    a-gw

    集群A 、集群B

    B

    b-gw

    集群B

    ...

    ...

    ...

  3. 关闭mtls以及访问授权,是用如下命名查看是否存在对应资源。
    kubectl get PeerAuthentication -A
    kubectl get AuthorizationPolicy -A
    kubectl get RequestAuthentication -A
    • 查看查询到的PeerAuthentication ,若spec.mtls.mode为STRICT,则需要将STRICT改为PERMISSIVE。
    • 查看查询到的AuthorizationPolicy, 若使用了该功能,则需要在迁移过程中暂时删除访问授权。
    • 查看查询到的RequestAuthentication, 若使用了该功能,则需要在迁移过程中暂时删除请求认证。
  4. 允许迁移期间业务访问中断。
  5. 解除业务上使用k8s域名进行跨集群访问。

解除业务跨集群k8s服务访问(可选)

  • 方案一:将有访问关系的服务迁移到同一个集群中。
  • 方案二:通过创建网关进行服务间访问。

业务解除跨集群流量访问,如A集群a服务访问B集群b服务,此步骤需要在迁移集群后操作。

  1. 在B集群移除出企业版网格之后新建的基础版网格上新建网关访问b服务,路由选择前缀匹配,URL选择 "/"。
  2. (可选) 在A集群上创建b服务所在网格网关对应的ServiceEntry 和 WorkloadEntry代替b服务,在B网格新建的Gateway中添加'*', VirtualService中的 hosts 改为 '*' 。

    apiVersion: networking.istio.io/v1alpha3
    kind: ServiceEntry
    metadata:
      name: b-mesh-gateway
    spec:
      hosts:
      - b-mesh-gateway.default.svc.cluster.local
      location: MESH_EXTERNAL
      ports:
      - name: http
        number: 80      //创建的网关访问端口
        protocol: HTTP
        targetPort: 80  //创建的网关访问端口
      resolution: STATIC
      workloadSelector:
        labels:
          app: b-mesh-gateway
    ---
    apiVersion: networking.istio.io/v1alpha3
    kind: WorkloadEntry
    metadata:
      name: b-mesh-gateway
    spec:
      address: x.x.x.x  //新ELB的IP地址
      labels:
        app: b-mesh-gateway

    gateway和virtualSevice host添加‘*’

  3. 开启istio DNS访问

    在A业务集群上使用如下命令

    kubectl edit iop {iop名} -nistio-system

    在spec.meshConfig.defaultConfig.proxyMetadata下如下添加配置

    ISTIO_META_DNS_CAPTURE: "true"
    ISTIO_META_DNS_AUTO_ALLOCATE: "true"

  4. 修改访问地址,确保流量已经访问到新集群

    1. 如使用springcloud,需要修改FeignClient访问地址,在注解中指定新url地址(producer.default:8089 -> b-mesh-gateway.default:8089,若第二步未操作,则直接替换为网关地址)

    1. 创建灰度任务,切部分流量到修改了配置的新版本
    2. 验证功能正常后将流量都切到新版本

迁移集群

  1. 删除该集群上部署的网关。在待迁移网格详情页,网关管理页面查看待迁移集群上有几个网关路由。即“所属集群”字段是待迁移集群的全部网关。
  2. 将对应的集群移除出企业版网格。
  3. 在ASM控制台 ,创建基础版本网格,选择移除出企业版网格的集群。

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

  5. 进行服务诊断,并处理异常。
  6. 恢复istio资源,选择如下任意一个方案执行。

    方案一:重新手动创建网关,并添加路由。

    方案二:将准备工作中备份的该集群资源上传到集群节点,执行如下命令恢复,其中xx为备份的文件名。

    kubectl create -f xx.yaml

  7. (可选)执行解除业务跨集群访问方案二
  8. 重复执行上述步骤1-7,直至所有集群迁移完毕。

功能验证

验证业务功能。

相关文档