ASM网关可以为网格内应用提供统一的流量入口和出口,实现端到端安全加密和流量控制。本文介绍ASM入口网关和出口网关的相关功能。
入口网关
入口网关服务为Kubernetes集群提供了七层网关功能,根据HTTP请求的内容将来自同一个TCP端口的请求分发到不同的Kubernetes服务。ASM提供了网关的全生命周期管理,支持多种协议,具有强大的流量管理、安全以及可观测能力。
功能 | 描述 | 相关文档 |
---|---|---|
生命周期管理 | ASM提供入口网关服务,为网格内应用提供统一的流量入口。您可以通过ASM控制台管理入口网关服务。 | 创建入口网关服务 |
多协议支持 | ASM网关提供了图形化创建目标规则和虚拟服务的功能,无需您编写YAML文件,简化流量管理操作。 | 使用ASM网关的流量路由功能 |
ASM的流量管理功能可以实现应用的流量迁移。您可以通过入口网关,在TCP服务的两个版本之间进行流量灰度切换。 | 通过ASM实现TCP应用流量迁移 | |
ASM支持HTTPS协议和动态加载证书功能,保障流量的安全。 | 通过ASM网关启用HTTPS安全服务 | |
ASM支持通过入口网关访问内部gRPC服务,并在gRPC的两个版本之间进行流量切换。 | 通过入口网关访问网格内gRPC服务 | |
ASM入口网关支持协议转码的能力,使用户及其客户端可以使用HTTP/JSON访问服务网格内的gRPC服务。 | 通过ASM入口网关实现HTTP请求网格内gRPC服务 | |
ASM支持通过入口网关访问网格内WebSocket服务。 | 通过入口网关访问网格内WebSocket服务 | |
常用流量管理 | ASM支持通过编写VirtualService和DestinationRule等资源,实现微服务的无侵入的流量治理能力,包括流量路由、限流、熔断、镜像流量等功能。 | 使用ASM接口级熔断功能 |
当您需要在多个服务间实现全链路的灰度发布时,您可以通过配置TrafficLabel来识别流量特征,将网关入口流量分为正常流量和灰度流量。灰度流量特征会在请求调用链经过的各个服务间进行传递,从而实现全链路灰度发布。 | 基于ASM实现全链路灰度发布 | |
在大促等场景下,瞬间洪峰流量会使系统超出最大负载,调用大量堆积,导致整个调用链路卡死。ASM提供了本地限流功能,支持对网关和服务进行流量限制,达到保护系统的目的。 | 使用ASM本地限流功能 | |
ASM支持使用Gateway API对集群内应用访问的路由规则进行条件限制。 | 使用Gateway API定义路由规则 | |
安全支持及证书动态加载 | ASM支持HTTPS协议和动态加载证书功能,保障流量的安全。 | 通过ASM网关启用HTTPS安全服务 |
通过ASM网关启用TLS透传,可以实现对集群内HTTPS服务的安全入口访问。 | 通过ASM网关启用TLS透传 | |
在ASM网关配置TLS协议版本,增强网关的安全性。 | 在ASM网关配置TLS协议版本增强安全性 | |
ASM通过ASM网关配置基于mTLS的gRPC服务,保障数据的安全。 | 通过ASM网关配置基于mTLS的gRPC服务 | |
ASM支持使用cert-manager颁发ASM网关的证书。基于HTTPS协议,通过ASM网关访问服务,保证数据传输的安全。 | 使用cert-manager管理网关的证书 | |
授权管理 | ASM网关支持从源地址、HTTP域名和端口三个维度配置黑白名单,保障网格内应用的安全。 | 在ASM网关中配置黑白名单 |
ASM提供自定义授权服务。在ASM网关上加入鉴权流程,以确保只有得到授权的情况下,才能访问关键服务。 | 在ASM网关上使用自定义外部授权 | |
ASM支持“无侵入”的接入外部授权网格内应用的单点登录,降低应用的改造、运维等成本。 | ASM集成阿里云IDaaS实现网格内应用单点登录 | |
使用自建的Keycloak作为IdP来提供身份服务,可以实现网格内应用的单点登录。 | ASM中集成Keycloak实现网格内应用单点登录 | |
在服务网格中配置JWT(JSON Web Token)请求授权,可以实现来源认证,又称为最终用户认证。在接收用户请求时,该配置用于认证请求头信息中的Access Token是否可信,并授权给来源合法的请求。 | 在ASM中对入口网关进行JWT请求鉴权 | |
当一个客户端去访问另一个不同域名或者同域名不同端口的服务时,就会发出跨域请求。如果此时该服务不允许其进行跨域资源访问,那么就会因为跨域问题而导致访问失败。ASM支持在Virtualservice中配置corsPolicy,实现跨域访问。 | 在ASM中实现跨域访问 | |
定制化功能 | ASM支持多个入口网关使用同一个网关配置规则,简化您的配置操作。 | 为多个入口网关配置统一的网关规则 |
您可以为ASM网关绑定多个SLB,实现多个SLB可以访问一个ASM网关。 | 使用多个SLB访问ASM网关 | |
ASM支持自定义资源定义CRD和相应的Controller。通过监听该CRD资源变化事件,对应的Controller可以在相应的Kubernetes集群中同步对应的Service、Deployment以及相关联的ServiceAccount等。您可以通过KubeAPI对CRD进行管理。 | 使用KubeAPI管理入口网关 | |
您可以在HTTP请求头中获取客户端真实IP,通过使用授权策略设置访问入口网关的IP黑名单和白名单,提高网关的安全性。 | 在HTTP请求头中获取客户端真实IP | |
ASM支持创建IPv6地址的ASM网关,提高网关安全性。 | 创建IPv6网关 | |
当数据面Kubernetes集群中的Pod无法访问入口网关的SLB地址时,您可以在Kubernetes集群内通过ClusterIP或者服务名等方法访问SLB地址。 | 如何解决Kubernetes集群中的Pod无法访问入口网关的SLB地址的问题? |
出口网关
ASM提供出口网关服务,为网格内应用提供统一的流量出口。您可以通过控制台或KubeAPI的方式管理出口网关。
功能 | 描述 | 相关文档 |
---|---|---|
生命周期管理 | ASM提供出口网关服务,为网格内应用提供统一的流量出口。您可以通过ASM控制台管理出口网关服务。 |
创建出口网关服务 |
定制化功能 | ASM支持使用KubeAPI管理出口网关。 | 使用KubeAPI管理出口网关 |
ASM网关不仅可以作为Ingress网关,还可以作为Egress出口网关,为网格内应用提供统一的出口,帮助您更便捷地使用网格提供的可观测及安全能力,提升运维效率。 | 为网格内流量配置统一的出口网关 |
网关高级特性
ASM支持配置高可用的ASM网关,提供SLB优雅下线、可观测性等功能,降低流量的损耗,减少您的运维成本。
功能 | 描述 | 相关文档 |
---|---|---|
高可用性配置 | ASM网关作为业务的流量入口,为了避免服务不可用,您可以通过配置Pod反亲和性策略等方法提高网关高可用性。 | 增强ASM网关高可用性 |
ASM网关在缩容或滚动重启时,会删除网关Pod而导致少量流量损失。启用SLB连接优雅下线功能后,即使删除网关Pod,现有连接在一定时间内仍能正常传输,避免流量损失。 | 使用SLB优雅下线功能避免流量损失 | |
基于软硬结合的性能优化 | ASM商业版结合Intel的Multi-Buffer加解密技术,可以加速Envoy中TLS的处理过程。 | 启用Multi-Buffer实现TLS加速 |
可观测性能力 | 容器服务ACK集成了日志服务功能,您可在创建集群时启用日志服务,采集服务网格数据平面集群入口网关的访问日志。 | 使用日志服务采集数据平面入口网关日志 |
您可以对ASM网关的日志格式进行定制,使ASM日志包含特定的Header。 | 自定义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网关 |