ASM Ambient 模式如何革新 Kubernetes 出口流量管理

简介: ASM Ambient 模式通过 Waypoint 代理简化 Kubernetes 出口流量管理,大幅降低配置复杂度。

【阅读原文】戳:ASM Ambient 模式如何革新 Kubernetes 出口流量管理

在 Kubernetes 集群中,高效管理应用的出口(Egress)流量是一个绕不开的话题。基础的安全管控可以通过云平台的安全组或 Kubernetes 原生的网络策略(Network Policy)来实现,但这些方法大多停留在网络三、四层,也就是依据 IP 地址和端口进行访问控制。当我们需要更精细化的管理,比如控制应用只能访问某个外部 API 的特定路径,或是对访问外部服务的性能(如 QPS、延迟)进行监控时,这些传统方法便显得捉襟见肘。

 

为了实现七层(L7)的精细化流量管控,越来越多的企业选择服务网格来管理出口流量。然而,传统的 Sidecar 模式虽然功能强大,其出口流量管理的配置却相对复杂。在 Sidecar 模式下,要让集群内的服务通过出口网关安全的访问一个外部域名,通常需要手动配置 ServiceEntryGatewayVirtualServiceDestinationRule 等多个资源,并确保它们之间正确关联。这个过程不仅对使用者的 Istio 知识储备有一定要求,也很容易因配置疏忽而出错。为了简化这一流程,ASM 虽专门推出了 ASMEgressTrafficPolicy 这一策略资源来打包复杂配置,但仍然对用户有一定的理解成本。

 

 

 

 

Ambient模式:出口流量管理的新思路

 

 

 

现在,ASM 推出的 Ambient 模式提供了一种更简洁的解决路径。它利用 Waypoint 组件,从根本上改变了现状,显著简化了出口流量的管理流程。

 

在 Ambient 模式下,管理出口流量的核心步骤被大大简化:

 

  • 定义 ServiceEntry:和 Sidecar 模式一样,您首先需要创建一个 ServiceEntry 资源,将需要访问的外部服务(例如 api.externalservice.com)注册到服务网格中。这一步的目的是让网格能够识别这个外部目标。
  • 启用 Waypoint 代理:接下来,您只需为代表外部服务的 ServiceEntry 添加一个标签,即可将其流量交由 Waypoint 代理来处理。

 

通过这两个简单的步骤,L7 出口流量的管控链路就建立起来了。不再需要手动配置专门的出口网关(Egress Gateway)和复杂的路由规则,Waypoint 代理自动承担了过去需要多个资源组合才能完成的工作。

 

配置对比:直观感受“大道至简”

 

这里以管理一个普通的 HTTP 出口服务为例,对比 Sidecar 和 Ambient 模式下的配置复杂度。

 

apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: external-svc-http
spec:
  hosts:
  - aliyun.com
  location: MESH_EXTERNAL
  ports:
  - number: 80
    name: http
    protocol: HTTP
  resolution: DNS
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: egress-gateway
  namespace: default
spec:
  selector:
    istio: egressgateway
  servers:
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP
    tls:
      mode: ISTIO_MUTUAL
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: egressgateway-vs
spec:
  hosts:
  - aliyun.com
  gateways:
  - egress-gw
  - mesh
  http:
  - match:
    - gateways:
      - mesh
      port: 80
    route:
    - destination:
        host: istio-egressgateway.istio-system.svc.cluster.local
        port:
          number: 80
      weight: 100
  - match:
    - gateways:
      - egress-gw
      port: 80
    route:
    - destination:
        host: aliyun.com
        port:
          number: 80
      weight: 100

 

这里配置的 Gateway 和 VirtualService 比较高阶,对于初学者而言理解和排错都颇具挑战。

 

Ambient 模式下,外部流量配置变得十分简洁:

 

# 部署Waypoint
# 支持共享Waypoint,如果已经有Waypoint,可以跳过这一步
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: waypoint
spec:
  gatewayClassName: istio-waypoint
  listeners:
  - name: mesh
    port: 15008
    protocol: HBONE
---
apiVersion: networking.istio.io/v1beta1
kind: ServiceEntry
metadata:
  name: external-svc-http
  labels:
    istio.io/use-waypoint: waypoint
spec:
  hosts:
  - aliyun.com
  location: MESH_EXTERNAL
  ports:
  - number: 80
    name: http
    protocol: HTTP
  resolution: DNS

 

是的,这就是全部所需配置。通过一个简单的标签,就将复杂的出口路由逻辑委托给了 Waypoint,实现了配置的极致简化。

 

 

 

 

Ambient 模式带来的实际好处

 

 

 

这种简化的工作流,为出口流量管理带来了实实在在的便利:

 

  • 配置极大简化:将过去需要配置多个关联资源的复杂任务,简化为“一个”。这大大降低了服务网格的使用门槛和运维负担。
  • 功能不打折扣:尽管配置简化,但强大的 L7 管控能力依然保留。您可以通过 AuthorizationPolicy、DestinationRule、VirtualService 等策略,精确控制哪些内部服务可以访问外部API 的哪些路径,或者对出口流量执行重试、超时等,之前的 TLS 升级也依旧支持。
  • 完善的可观测能力:所有经由 Waypoint 代理的出口流量都会被自动记录。您可以轻松获取访问外部服务的 QPS、P99 延迟、请求成功率等关键指标,而无需修改任何应用代码。

 

总而言之,ASM Ambient 模式为复杂的 L7 出口流量管理提供了一条更平坦的路径。它通过 Waypoint 代理剥离了繁琐的配置细节,让开发者和运维团队能更专注于实现业务所需的安全与可观测性策略,而非底层设施的搭建。

 

ASM 已在 1.25 版本中正式支持 Ambient 模式,欢迎广大用户升级体验,共同迈入服务网格的极简时代。您可以点击阅读原文参考 ASM 官方文档获取更多信息。



我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。

欢迎关注 “阿里云基础设施”同名微信微博知乎

获取关于我们的更多信息~


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
Kubernetes 安全 数据安全/隐私保护
阿里云服务网格 ASM 正式支持 Ambient 模式
阿里云服务网格ASM 1.25版本正式支持Ambient模式,通过Ztunnel和Waypoint代理实现分层流量处理,降低理解成本,提升转发性能。
|
Kubernetes 大数据 调度
使用Kmesh作为阿里云服务网格ASM Sidecarless模式数据面
阿里云服务网格ASM支持Sidecar和Sidecarless两种模式,本文介绍了如何在阿里云ACK集群中部署Kmesh作为Sidecarless数据面并连接ASM控制面。
|
Kubernetes 调度 容器
使用Kmesh作为阿里云服务网格ASM Sidecarless模式数据面
阿里云服务网格ASM支持Sidecar和Sidecarless两种模式,其中Sidecarless模式如Istio Ambient、ACMG和Kmesh等,可减少延迟和资源消耗。Kmesh基于eBPF技术,通过内核空间拦截流量,结合Waypoint Proxy处理L7流量,实现高效的服务治理。本文介绍了如何在阿里云ACK集群中部署Kmesh并连接ASM控制面,包括安装步骤、检查服务状态和流量调度示例。
355 0
|
Cloud Native 容器 Kubernetes
基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道
本文简要讨论了使用流量泳道来实现全链路流量灰度管理的场景与方案,并回顾了阿里云服务网格 ASM 提供的严格与宽松两种模式的流量泳道、以及这两种模式各自的优势与挑战。接下来介绍了一种基于 OpenTelemetry 社区提出的 baggage 透传能力实现的无侵入式的宽松模式泳道,这种类型的流量泳道同时具有对业务代码侵入性低、同时保持宽松模式的灵活特性的特点。同时,我们还介绍了新的基于权重的流量引流策略,这种策略可以基于统一的流量匹配规则,将匹配到的流量以设定好的比例分发到不同的流量泳道。
73781 16
基于阿里云服务网格流量泳道的全链路流量管理(三):无侵入式的宽松模式泳道
|
运维 Serverless API
两全其美,Sidecarless 与 Sidecar 模式融合的服务网格新形态
本文主要介绍 ASM 如何落地这种 Sidecarless 和 Sidecar 模式融合的服务网格新形态,以及服务网格的 Serverless 化。
53253 105
|
网络协议 Linux Perl
如何构建 Sidecarless 模式的高性能服务网格
如何构建 Sidecarless 模式的高性能服务网格
708 73
|
运维 负载均衡 监控
如何构建Sidecarless模式的高性能服务网格
以上步骤可以帮助你构建一个Sidecarless模式的高性能服务网格。但是,请记住,每个应用都有其特定的需求和约束,你可能需要根据你的具体情况进行调整。
141 1
|
负载均衡 安全 Cloud Native
服务网格的工作原理:解析服务网格的核心组件和通信模式
服务网格的工作原理:解析服务网格的核心组件和通信模式
215 0
|
Oracle 关系型数据库
oracle asm 磁盘显示offline
oracle asm 磁盘显示offline
817 2