1.0企业版多集群场景(使用原集群创建网格)
前提
- 确保准备工作已完成。
- 梳理网格下各个集群的网关和跨集群svc。
集群
网关
跨集群访问的服务
A
a-gw
集群A 、集群B
B
b-gw
集群B
...
...
...
- 关闭mtls以及访问授权,是用如下命名查看是否存在对应资源。
kubectl get PeerAuthentication -A kubectl get AuthorizationPolicy -A kubectl get RequestAuthentication -A
- 查看查询到的PeerAuthentication ,若spec.mtls.mode为STRICT,则需要将STRICT改为PERMISSIVE。
- 查看查询到的AuthorizationPolicy, 若使用了该功能,则需要在迁移过程中暂时删除访问授权。
- 查看查询到的RequestAuthentication, 若使用了该功能,则需要在迁移过程中暂时删除请求认证。
- 允许迁移期间业务访问中断。
- 解除业务上使用k8s域名进行跨集群访问。
解除业务跨集群k8s服务访问(可选)
- 方案一:将有访问关系的服务迁移到同一个集群中。
- 方案二:通过创建网关进行服务间访问。
业务解除跨集群流量访问,如A集群a服务访问B集群b服务,此步骤需要在迁移集群后操作。
- 在B集群移除出企业版网格之后新建的基础版网格上新建网关访问b服务,路由选择前缀匹配,URL选择 "/"。
- (可选) 在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添加‘*’
- 开启istio DNS访问
在A业务集群上使用如下命令
kubectl edit iop {iop名} -nistio-system
在spec.meshConfig.defaultConfig.proxyMetadata下如下添加配置
ISTIO_META_DNS_CAPTURE: "true" ISTIO_META_DNS_AUTO_ALLOCATE: "true"
- 修改访问地址,确保流量已经访问到新集群
- 如使用springcloud,需要修改FeignClient访问地址,在注解中指定新url地址(producer.default:8089 -> b-mesh-gateway.default:8089,若第二步未操作,则直接替换为网关地址)
- 创建灰度任务,切部分流量到修改了配置的新版本
- 验证功能正常后将流量都切到新版本
迁移集群
- 删除该集群上部署的网关。在待迁移网格详情页,网关管理页面查看待迁移集群上有几个网关路由。即“所属集群”字段是待迁移集群的全部网关。
- 将对应的集群移除出企业版网格。
- 在ASM控制台 ,创建基础版本网格,选择移除出企业版网格的集群。
- 在新建的网格详情页,依次单击“网格配置-sidecar管理-sidecar管理”,选择需要开启自动注入的命名空间(准备工作中步骤11中记录的命名空间),是否重启已有服务选择“是”,勾选“取消注入sidecar会重启关联的Pod,将会暂时中断您的业务”,单击“确定”。
- 进行服务诊断,并处理异常。
- 恢复istio资源,选择如下任意一个方案执行。
方案一:重新手动创建网关,并添加路由。
方案二:将准备工作中备份的该集群资源上传到集群节点,执行如下命令恢复,其中xx为备份的文件名。
kubectl create -f xx.yaml
- (可选)执行解除业务跨集群访问方案二
- 重复执行上述步骤1-7,直至所有集群迁移完毕。
功能验证
验证业务功能。