文档

ASM网关概述

更新时间:

ASM网关可以为网格内应用提供统一的流量入口和出口,实现端到端安全加密和流量控制。本文介绍ASM入口网关和出口网关的相关功能。

入口网关

入口网关为Kubernetes集群提供了七层网关功能,根据HTTP请求的内容将来自同一个TCP端口的请求分发到不同的Kubernetes服务。ASM提供了网关的全生命周期管理,支持多种协议,具有强大的流量管理、安全以及可观测能力。

功能

描述

相关文档

生命周期管理

当您的应用程序需要为用户提供统一的公网或内网入口时,可以在Kubernetes集群中部署ASM入口网关(Ingress Gateway)。入口网关作为统一的访问入口,可以简化流量的管理和路由,并利用七层负载均衡能力根据HTTP请求的路径、主机头或其他属性将流量智能分发至相应的后端服务。您可以通过ASM控制台管理入口网关。

创建入口网关

使用ASM Serverless网关提升高可用性和弹性

ASM Serverless网关是ASM推出的全新服务网格网关形态,更适合应对突发流量,降低计算成本,提升稳定性。相比运行于数据面ACK Kubernetes集群之上的ASM网关形态,ASM Serverless网关具有高稳定性、高弹性和低成本的优势,以Serverless的形式单独部署,并完全由ASM管理,具备独立于ACK Kubernetes集群的高可用性。

使用ASM Serverless网关提升高可用性和弹性

使用网络型负载均衡NLB

网络型负载均衡NLB(Network Load Balancer)是阿里云面向万物互联时代推出的新一代四层负载均衡,支持超高性能和自动弹性能力,具有更高的可用性,能够进一步提升网关流量的稳定性。ASM网关支持使用NLB。配置ASM网关的ServiceType为LoadBalancer时,默认会关联一个CLB作为网关Service的负载均衡器。

在ASM入口网关中使用网络型负载均衡NLB

多协议支持

ASM网关提供了图形化创建目标规则和虚拟服务的功能,无需您编写YAML文件,简化流量管理操作。

使用ASM网关的流量路由功能

当您需要优化网络拓扑、扩容应用服务器或调整业务流量时,可以通过ASM的流量管理中心实现TCP应用流量的平滑迁移,确保关键业务的连续性和服务的高可用性。

通过ASM实现TCP应用流量迁移

当您需要对外提供加密的HTTPS访问时,可以通过ASM网关启用HTTPS安全服务。ASM网关支持证书的动态加载,您可以实时动态地配置私钥、服务器证书和根证书,无需重启网关或依赖Secret卷挂载,降低操作复杂性并消除因重启造成的服务中断风险。ASM网关能够监控并管理多个证书和私钥对,为不同的主机提供灵活且安全的通信能力,加强数据传输的安全性。

通过ASM网关启用HTTPS安全服务

您可以通过ASM入口网关安全地访问网格内的gRPC服务,实现对gRPC服务的精确访问控制,提升服务治理能力,保障服务间通信的安全性。

通过ASM入口网关访问网格内gRPC服务

ASMGrpcJsonTranscoder用于进行JSON/HTTP-gRPC协议转码。客户端可以使用HTTP/JSON访问服务网格内的gRPC服务。

基于ASMGrpcJsonTranscoder实现以HTTP/JSON方式请求网格内gRPC服务

WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。WebSocket允许服务端主动向客户端推送数据。遵守WebSocket协议的服务即为WebSocket服务。

通过入口网关访问网格内WebSocket服务

常用流量管理

在大促等场景下,瞬间洪峰流量会使系统超出最大负载,调用大量堆积,导致整个调用链路卡死。ASM提供了本地限流功能,支持对网关和服务进行流量限制,达到保护系统的目的。

为入口网关配置本地限流

在面临高流量冲击、服务过载、资源耗尽或恶意攻击的情况下,通过对入口网关的特定路由配置全局限流,可以实现对流量的精准控制,从而保护后端服务的稳定性,降低成本并提升用户体验。

为入口网关配置全局限流

ASM支持通过编写VirtualService和DestinationRule等资源,实现微服务的无侵入的流量治理能力,包括流量路由、限流、熔断、镜像流量等功能。

使用ASM路由级熔断功能

Gateway API是由SIG-NETWORK社区管理的开源项目,通过提供可表达的、可扩展的、面向角色的接口来改善服务网络。您可以使用Gateway API对集群内应用访问的路由规则进行条件限制。

使用Gateway API定义路由规则

ASM支持在管理的集群中使用Ingress资源,并指定特定的ASM网关作为Ingress Controller。

使用ASM网关作为Ingress Controller暴露集群内的服务

流量镜像功能可以将生产的流量镜像拷贝到测试集群或者新的测试版本中,在不影响实际生产环境的情况下,测试具有实际生产流量的服务,帮助您减低版本变更的风险。

基于网格层跨集群使用流量镜像

会话保持(Session Affinity)又称为粘性会话(Sticky Sessions),是一种负载均衡技术,能够确保来自同一用户(或会话)的所有请求均被发送到同一后端服务器。该技术适用于需要保持用户状态的应用,例如在线购物车、登录会话和个性化设置等。

在ASM网关中实现会话保持

安全支持及证书动态加载

当您需要对外提供加密的HTTPS访问时,可以通过ASM网关启用HTTPS安全服务。ASM网关支持证书的动态加载,您可以实时动态地配置私钥、服务器证书和根证书,无需重启网关或依赖Secret卷挂载,降低操作复杂性并消除因重启造成的服务中断风险。ASM网关能够监控并管理多个证书和私钥对,为不同的主机提供灵活且安全的通信能力,加强数据传输的安全性。

通过ASM网关启用HTTPS安全服务

在ASM网关和Sideca代理之间,所有数据均通过mTLS隧道传输。如果应用注入了Sidecar,建议在网关处配置TLS终止,此时仍能保证全程加密。如果应用没有注入Sidecar或者有其他特殊情况,ASM网关同样支持TLS透传。

通过ASM网关启用TLS透传

ASM网关支持HTTPS安全支持和证书动态加载功能,以此提高ASM网关的安全性。您可以在ASM网关的CLB侧绑定证书,创建HTTPS类型的监听。HTTPS请求将在CLB侧解密,然后以HTTP请求的形式发送给后端的网关Pod。

在ASM网关的CLB侧创建HTTPS监听

ASM证书管理可以在网格内进行统一的证书同步,能够更好地支持ASM的多集群场景,还提供了证书信息展示和过期告警等功能,方便您进行证书维护。

使用ASM证书管理

当面临因使用老旧TLS协议引发的安全隐患时,您可以在ASM网关配置TLS协议版本至最新安全标准,通过禁用不安全的旧版本(如TLS 1.0和1.1)并启用更强大的TLS 1.2及更高版本,从而有效抵御中间人攻击、防止数据泄露等安全风险,确保服务与客户端之间HTTPS连接的稳固性和安全性。

在ASM网关配置TLS协议版本增强安全性

借助ASM网关,您可以配置带有mTLS安全机制的gRPC服务,确保仅授权的客户端能够访问,并在整个数据传输过程中实施端到端加密和双向身份验证,有效防止信息被窃听、篡改及非法访问。

通过ASM网关配置基于mTLS的gRPC服务

ASM支持以图形化的方式为域名添加证书,便于您使用HTTPS等协议访问域名,提升服务网关的安全性。

为域名添加证书

ASM网关支持对接WAF,并且可以通过自定义访问日志格式来查看WAF对回源请求添加的Header,更方便线上运维。

使用ASM网关对接WAF

cert-manager是一个证书生命周期管理系统,支持证书的申请、部署等功能。您可以使用cert-manager颁发ASM网关的证书,从而可以使用HTTPS协议通过ASM网关访问服务,保证数据传输的安全。

使用cert-manager管理网关的证书

授权管理

当您需要精确控制用户对服务的访问权限时,可以在ASM网关中配置黑白名单。ASM网关支持从源地址、HTTP域名、端口、远程源IP四个维度对流量进行精确控制,以保障网格内应用的安全。本文以源地址为例,介绍如何在ASM网关中配置IP黑名单和白名单。

在ASM网关中配置黑白名单

当您需要按照自身需求定制访问控制策略时,例如基于HTTP域名、HTTP路径、HTTP方法等对请求进行鉴权,可以在ASM网关上使用自定义授权服务,确保只有经过认证的用户才能访问关键服务。

在ASM网关上使用自定义授权服务

OIDC(OpenID Connect)是基于OAuth 2.0协议实现的一种身份认证与授权协议,主要用于实现单点登录(SSO)。通过在ASM网关中配置OIDC单点登录,您可以借助阿里云IDaaS或其他符合OIDC标准的身份提供者,无需修改应用本身,即可实现一次登录、多次访问。这不仅增强了应用的安全性,还简化了应用系统的开发和管理。

在ASM网关中配置OIDC单点登录

JWT(JSON Web Token)是一种常用的身份认证和鉴权机制。JWT中会携带一些用户信息和一个存储加密后信息的字段。将加密后的信息字段进行解密,与原始用户信息字段进行比较,可以验证该用户的信息是否有效,从而完成身份认证。您可以在ASM网关中配置JWT认证。

在ASM网关中配置JWT认证

当您需要实现动态的访问控制时,可以在ASM网关中接入OPA(Open Policy Agent)执行引擎,根据用户身份或请求内容定制授权策略,实时控制服务间的通信行为,有效防止未经授权的访问并降低数据泄露风险,加强网格应用的安全性。以入口网关访问httpbin应用为例,本文介绍如何在ASM网关上使用OPA执行引擎对到达网关的请求进行认证和鉴权。

在ASM网关中接入OPA执行引擎

ASM支持“无侵入”的接入自定义授权服务,以实现网格内应用的单点登录,降低应用的改造、运维等成本。

ASM集成阿里云IDaaS实现网格内应用单点登录

使用自建的Keycloak作为IdP来提供身份服务,可以实现网格内应用的单点登录。

ASM中集成Keycloak实现网格内应用单点登录

服务网格中配置JWT(JSON Web Token)请求授权,可以实现来源认证,又称为最终用户认证。在接收用户请求时,该配置用于认证请求头信息中的Access Token是否可信,并授权给来源合法的请求。

在ASM中对入口网关进行JWT请求鉴权

当一个客户端去访问另一个不同域名或者同域名不同端口的服务时,就会发出跨域请求。如果此时该服务不允许其进行跨域资源访问,那么就会因为跨域问题而导致访问失败。ASM支持在Virtualservice中配置corsPolicy,实现跨域访问。

在ASM中实现跨域访问

在ASM网关之前不存在7层代理或者已存在7层代理的场景下,限制特定IP访问网格内应用。

限制特定IP访问网格内应用

定制化功能

ASM支持多个入口网关使用同一个网关配置规则,简化您的配置操作。

为多个入口网关配置统一的网关规则

您可以为ASM网关绑定多个CLB,实现多个CLB可以访问一个ASM网关。

使用多个CLB访问ASM网关

为了对ASM的入口网关进行访问保护,需要获取客户端真实IP,以便使用授权策略设置访问入口网关的IP黑名单和白名单。

在HTTP请求头中获取客户端真实IP

ASM支持创建IPv6地址的ASM网关,提高网关安全性。

创建IPv6网关

当数据面Kubernetes集群中的Pod无法访问入口网关的CLB地址时,您可以在Kubernetes集群内通过ClusterIP或者服务名等方法访问CLB地址。

如何解决Kubernetes集群中的Pod无法访问入口网关的CLB地址的问题?

如果您的客户端使用HTTPS,且客户端对于HTTP/2的支持存在问题,但是不便修改,可以在ASM网关侧禁用HTTP/2协议。

在入口网关侧HTTPS中禁用HTTP/2

出口网关

ASM提供出口网关服务,为网格内应用提供统一的流量出口。您可以通过控制台或KubeAPI的方式管理出口网关。

功能

描述

相关文档

生命周期管理

当您的应用程序需要统一的公网或内网出口时,可以在Kubernetes集群中部署ASM出口网关(Egress Gateway)。出口网关作为统一的访问出口,可以简化集群对外部服务流量的管理和路由。

创建出口网关

定制化功能

当网格内的应用需要与外部服务进行通信时,您可以使用出口网关作为统一的出口,集中管理所有的出站流量。通过配置出口网关,您可以实现对流量的安全控制和路由,提升网格内应用程序的安全性和可观测性。

为网格内流量配置统一的出口网关

ASM自1.16.4版本起,支持使用ASMEgressTrafficPolicy CRD。

使用ASMEgressTrafficPolicy管理出口流量

网关规则

网关规则定义了在网格出入口操作的负载均衡器,用于接收传入或传出的HTTP/TCP连接。

功能

描述

相关文档

生命周期管理

您可以在ASM控制台对网关规则进行创建、修改和删除操作。

管理网关规则

网关高级特性

ASM支持配置高可用的ASM网关,提供优雅下线、可观测性等功能,降低流量的损耗,减少您的运维成本。

功能

描述

相关文档

高可用性配置

配置高性能和高可用的ASM网关,可以保障业务的连续性。

配置高性能和高可用的ASM网关

将网关Pod部署到指定节点,可以提高ASM网关的高可用性并增强与业务Pod的隔离性。

部署网关Pod到指定的节点

ASM Serverless网关是基于虚拟节点和ECI提供的一种Serverless网关形态,用于支撑各种弹性和免节点运维的场景。

使用ASM Serverless网关支撑弹性业务场景

ASM网关作为业务的流量入口,为了避免服务不可用,您可以通过配置Pod反亲和性策略等方法提高网关高可用性。

增强ASM网关高可用性

ASM网关在缩容或滚动重启时,会删除网关Pod而导致少量流量损失。启用优雅下线功能后,即使删除网关Pod,现有连接在一定时间内仍能正常传输,避免流量损失。

使用优雅下线功能避免流量损失

ASM网关支持同时部署在多个集群,以提高服务可用性。您可以将服务部署在多个集群,然后为多集群配置统一的入口网关,即可代理多个集群对应的入口流量。

为多个集群配置统一的入口网关

网关作为业务的流量总入口和总出口,对可用性有着极高的要求。为了更好地保证升级后业务的连续性,ASM网关支持灰度升级。您可以通过配置先启动一个新版本的网关Pod来验证流量,验证通过后再完全升级网关。验证过程中如果出现任何问题,您可以随时删除这个新版本的Pod,问题解决后再继续升级。

ASM网关灰度升级

可观测性能力

ASM网关的访问日志配置主要分为生成和采集。生成指网关打印日志到标准输出,您可以自定义在访问日志中打印哪些字段;采集指将网关打印的日志采集到阿里云日志服务,阿里云日志服务可以提供日志的存储、分析以及展示等功能。生成和采集是分开配置的,您可以自行决定是否生成或采集日志。

生成和采集ASM网关访问日志

ASM网关的监控指标配置主要分为生成和采集。生成指网关本身生成相应的监控指标,您可以自定义网关生成哪些监控指标;采集指将生成的监控指标采集到阿里云ARMS Prometheus,阿里云ARMS可以提供监控指标的存储、分析以及展示等功能。生成和采集是分开配置的,您可以自行决定是否生成或采集监控指标。

生成和采集ASM网关监控指标

请求Payload处理

在应用程序中添加HTTP响应头,可以提高Web应用程序的安全性。

在ASM中通过EnvoyFilter添加HTTP响应头

启用ASM网关的压缩能力,将对HTTP请求的Response进行压缩,可以提高响应速度,降低流量消耗。

为ASM网关启用压缩

与现有系统整合

ASM支持将您自建的Istio IngressGateway或Nginx Ingress迁移至ASM网关,进行统一的管理,降低您的维护成本,提高运维效率。

功能

描述

相关文档

迁移自建网关

ASM支持自建Istio IngressGateway迁移至ASM网关。

自建Istio IngressGateway如何迁移至ASM网关

ASM支持Nginx Ingress迁移至ASM网关。

Nginx Ingress如何迁移至ASM网关

ASM支持将Nginx的常用配置迁移至ASM网关。

将Nginx的常用配置迁移至ASM网关