ASM网关迁移方案示例

简介: 本文介绍了在集群拆分过程中,如何通过配置ServiceEntry和流量规则将老网关上的TCP流量转发至新集群的网关,确保部分仍访问老网关的客户端能顺利过渡。内容包括配置Istio组件、回滚方法及内网SLB创建方式,适用于ASM+ACK架构下的平滑迁移场景。

背景

由于业务需要,当前集群需要进行拆分,部分业务需要迁移到新的集群中。

此时在新老环境中各有一个ASM和一个ACK实例。

由于一些特殊原因,DNS切流无法覆盖所有客户端,部分客户端依然通过IP访问到老的网关。

本文主要介绍如何处理老网关上的流量。

推荐方案:使用网关作为TCP Proxy转发流量

1. 在旧集群中创建新网关的对应的ServiceEntry

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: new-gateway-se
  namespace: istio-system
spec:
  hosts:
  - ${新网关SLB地址}
  addresses:
  - ${新网关SLB地址}
  ports:
  - number: 80
    name: port-0
    protocol: TCP
  - number: 443
    name: port-1
    protocol: TCP
  location: MESH_EXTERNAL
  resolution: STATIC 
  endpoints:
  - address: ${新网关SLB地址}
EOF

2. 保存当前已有的配置

保存网关配置

kubectl get gateway -A -o yaml > gateway.yaml

保存virtualservice配置:

kubectl get virtualservice -A -o yaml > virtualservice.yaml

vs全部下载之后,需要删除掉不在网关上生效的VS。

apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: httpbin
  namespace: default
spec:
  gateways:
  - default/httpbin
  hosts:
  - '*'
  http:
  - name: httpbin
    route:
    - destination:
        host: httpbin
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: httpbin
  namespace: default
spec:
  gateways:
  - mesh # 没有gateways默认就是mesh
  hosts:
  - '*'
  http:
  - name: httpbin
    route:
    - destination:
        host: httpbin

3. 删除当前配置

kubectl delete -f gateway.yaml
kubectl delete -f virtualservice.yaml

4. 创建流量规则,TCP原样转发到新网关

以下内容保存到tcp_gateway_rules.yaml

apiVersion: networking.istio.io/v1
kind: Gateway
metadata:
  name: tcp-gateway
  namespace: default
spec:
  selector:
    istio: ingressgateway # 需要选中对应的网关
  servers:
  - hosts:
    - '*'
    port:
      name: tcp-0
      number: 80
      protocol: TCP
  - hosts:
    - '*'
    port:
      name: tcp-1
      number: 443
      protocol: TCP
---
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
  name: tcp-vs
spec:
  hosts:
  - "*"
  gateways:
  - tcp-gateway
  tcp:
  - match:
    - port: 80
    route:
    - destination:
        host: ${新网关SLB地址}
        port:
          number: 80
  - match:
    - port: 443
    route:
    - destination:
        host: ${新网关SLB地址}
        port:
          number: 443

执行

kubectl apply -f tcp_gateway_rules.yaml

5. 出现问题如何回滚

kubectl delete -f tcp_gateway_rules.yaml
kubectl apply -f gateway.yaml
kubectl apply -f virtualservice.yaml

6. 如果新旧两个网关在同一个VPC内部,如何通过内网访问呢?

假如您的新旧两个网关在同一个VPC内部,并且新的网关已经是公网SLB,并没有内网IP。

如何使用内网访问新的网关呢?

您可以给新的网关创建一个内网SLB。

手动创建一个Service,并且将这个Service绑定到ASM网关上即可。

首先您可以使用以下命令获取当前ASM网关的Service:

kubectl -n istio-system get svc istio-${asm网关名称} -o yaml > istio-gateway-svc.yaml

删除所有label。

修改一个新的name。

删除spec中的clusterIP和clusterIPs字段,删除status字段。

保存,重新apply

kubectl apply -f istio-gateway-svc.yaml

这样您就为这个网关创建了一个对应的内网SLB。注意:这个service只能用于迁移临时使用,在ASM网关上进行的任何配置变更都不会影响这个Service,迁移完成后请手动删除新创建的Service。

目录
相关文章
|
6月前
|
安全 网络安全 网络虚拟化
配置总部采用冗余网关与分支建立IPSec隧道示例
本文介绍了企业总部与分支间通过公网通信的组网需求及配置思路。为提高可靠性,分支网关AR5可接入两台总部网关(AR2和AR3),并建立IPSec隧道保障通信安全。配置步骤包括:1) 配置接口IP地址与静态路由;2) 定义ACL保护数据流;3) 创建IPSec安全提议;4) 配置IKE对等体;5) 创建安全策略;6) 在接口应用安全策略组。最终通过ping测试与查看隧道状态验证配置结果,确保流量安全传输。
配置总部采用冗余网关与分支建立IPSec隧道示例
|
前端开发 Java API
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
本文是Vert.x学习系列的第五部分,讨论了回调函数的限制、Future和Promise在异步操作中的应用、响应式扩展以及Kotlin协程,并通过示例代码展示了如何在Vert.x中使用这些异步编程模式。
364 5
vertx学习总结5之回调函数及其限制,如网关/边缘服务示例所示未来和承诺——链接异步操作的简单模型响应式扩展——一个更强大的模型,特别适合组合异步事件流Kotlin协程
|
网络协议 网络虚拟化 数据中心
干货 | 集中式网关部署方式的VXLAN示例(静态方式)
干货 | 集中式网关部署方式的VXLAN示例(静态方式)
265 0
18SpringCloud - 服务网关 zuul项目示例
18SpringCloud - 服务网关 zuul项目示例
93 0
|
Java Serverless API
API网关触发函数计算处理示例教程(runtime=java8)
本示例对API网关触发函数计算的使用步骤进行详细介绍,并以运行环境为Java为例,对API网关传入的请求参数进行解析。 通过示例,您将了解 1. 如何使用API网关触发函数计算; 2. 如何在函数中获取API网关传入函数的参数,并将处理结果返回给API网关(以Java运行环境为例)。
4221 0
|
前端开发 Java 数据库
JHipster生成微服务架构的应用栈(四)- 网关微服务示例
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈。 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业务微服务:microservice1 网关微服务:gateway 实体名:role 主机IP:192.
2919 0
|
6月前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
361 14
|
监控 负载均衡 安全
微服务(五)-服务网关zuul(一)
微服务(五)-服务网关zuul(一)
|
安全 5G 网络性能优化
深入理解5G中的SAEGW:服务网关边界
【10月更文挑战第9天】
499 0
|
运维 Kubernetes 安全
利用服务网格实现全链路mTLS(一):在入口网关上提供mTLS服务
阿里云服务网格(Service Mesh,简称ASM)提供了一个全托管式的服务网格平台,兼容Istio开源服务网格,用于简化服务治理,包括流量管理和拆分、安全认证及网格可观测性,有效减轻开发运维负担。ASM支持通过mTLS提供服务,要求客户端提供证书以增强安全性。本文介绍如何在ASM入口网关上配置mTLS服务并通过授权策略实现特定用户的访问限制。首先需部署ASM实例和ACK集群,并开启sidecar自动注入。接着,在集群中部署入口网关和httpbin应用,并生成mTLS通信所需的根证书、服务器证书及客户端证书。最后,配置网关上的mTLS监听并设置授权策略,以限制特定客户端对特定路径的访问。
423 2

热门文章

最新文章