如何在 ACK 中使用 MSE Ingress| 学习笔记(二)

简介: 快速学习如何在 ACK 中使用 MSE Ingress

开发者学堂课程【玩转容器服务进阶课程如何在 ACK 中使用 MSE Ingress】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/1079/detail/15852


如何在 ACK 中使用 MSE Ingress


二、 MSE Ingress 优势


那在这个趋势之下,今天 MSE 作为一个云原生网关的实现,今天的产品定位跟优势到底是什么呢,下面简单进行一个介绍。

 

1. MSE Ingress 简介

先讲一下产品定位,左边是一个传统的网关,传统的网关从端流量进来会先进 WAF 流量防护和安全网关,然后负责南北向的流量网关和负责东西向的微服务网关,包括微服务进 IDC 之后,多个微服务的业务域之间,微服务的整个调用也是通过微服务网关去做的,那就意味着对于传统的网关,其实他需要三层的一个网关。就是在下一代网关技术里认为是原生网关高集成的一个网关就相当于第一点做的是把左边的三个网关三合一,变成一个统一的入口,这是第一个三合一带来的运维成本是机器成本的一个下降。

第二个就是今天整合了整个服务网格的整个生态,统一的控制东西南北流量,北向流量进来可以走网关,东西向流量进来也可以走网关,后边的最佳时间将会进行详细介绍,这就是今天跟服务网格、微服务体系标准整合之后,就可以统一的去控制东西南北的流量,统一的利用灰度规则跟流量控制的一些规则。

第三个带来的变化就是和 WAF 的集成方式,一般的 WAF 集成方式也就是流量必须经过 WAF 清洗之后,再回来继续走网关,而今天集成 WAF 的方式也是比较好的,就相当于原生网关只集成了 WAF 的数据面,对于WAF 本身只是一个控制面他只需要把安全的路由规则下发到今天的整个网关,这样就方便于整个的流量清洗提升整个性能,这样的话对于整个链路的整个请求就会少一跳,不然的话还得再去跳一下 WAF 网关,包括阿里巴巴内部也是这样实现的。

那为什么比如云厂商都要独立一个产品出来。这样其实从产品的定位和实践上会简单一点。那阿里云今天为了降低整个用户的使用成本和提升使用体验,那把最高集成的一个网关作为一个产品化的一个集成,这样通过MSE Ingress 云原生网关加上 WAF 两个个集成到一起的话对用户的成本也会大幅的下降。这就是今天云原生网关的一个定位,MSE Ingress 的实现就是云原生网关。

6.png


2. MSE Ingress -功能更丰富

下面介绍一下在功能上是非常丰富的,因为整合了安全网关、微服务网关、格安全网关,这样也就导致功能是非常丰富的。首先在安全领域,支持标准的 DWD YDC 的各种登录认证模式,在这个标准之下在哪家云都是同样的标准,但如果公司觉得实现这个标准去做一个登录认证体系代价比较大,那今天云原生网关集成了整个阿里云的IDaaS ,简单的在控制台上配置一下就可以直接的支持支付宝、微信等三方登录认证方式,这个东西对于一般公司,数字化升级的公司性价比还是比较高的。如果这些都不需要,对于一些存量用户你自己有一个自己的一个网关又不符合这个标准,那也支持了一个自定义的一个网关的一个机制。其次在流量控制上,完成了跟 WAF 的一个很好的集成,点击一个按钮就可以开启一个 WAF 防护,这就是今天在安全网关上的和阿里云产品的整合跟能力,而且也和阿里云的安全团队一起合作,定期会对整个 MSE Ingress 云原生网关进行一些安全的攻防演练,提前识别一些风险,给大家一个更好的保障。

第二个就是在因为整合了微服务的一个能力云原生网关,在服务治理能力上是非常强的,支持多种服务发现机制,那在微服务领域里边的金丝雀、蓝绿、各种按比例的一些分发策略都是支持的。后面演练的时候也会演练一下支持多版本的灰度的能力,整合之后体验就会非常的好也支持Sentinel 的一些限制降低熔断的能力,这个体验就会非常的好,而且支持了整个服务级的、应用级的一个流量控制的能力。

然后在可观测上,支持了 ARMS 的这个产品去整合trace 可观测,对于网关在入口是非常关键的。因此给可观测一个一站式的解决方案,当然在扩展性上,也支持了一个插件市场,提供了一些默认的插件,降低用户开发插件的一个成本,也支持用户自己自定义一些插件,这就是现在整体的一个功能,包括一些弹性伸缩的一些能力也在开发中,这样的话就是为了让大家更充分的去享受云的一些弹性的红利。可以看到通过今天云原生网关对整个MSE Ingress 把阿里云的安全能力、可观测能力以及微服务的能力一键整合,开箱即用,就满足了一站式享受整个阿里云的统一接入的能力,这就是功能上很丰富。

8.png


3. MSE Ingress -稳定更可靠

当选择了这一个功能上很强大的一个东西之后,可能第二个,因为关心的就是网关的稳定性,这个网关是不是稳定的。因为入口如果出故障的话,流量一跌就是全局的跌。因此介绍一下为什么这个网关的稳定性是非常好的。因为阿里巴巴从2020年就开始做这个网关,目前已经在阿里巴巴大规模推广并且经过了两年双11的一个海量规模的请求验证,稳定性非常高,这是第一点。第二点因为有两年多的一个积累,包括阿里内部的一个丰富的经验,在稳定性上也做了非常多的一个积累,从EFR 时到整个变更时。

可以看到的是整个在最早落地网关的时候,发现有一次就是说在预发日常环境测试的时候, K8S API server 突然挂了这就会导致整个网关拿不到 Ingress 资源,直接流量路由全部跌零,这个东西对感想风险还是比较高的。因此在这个时间就推出了整个推空保护和本地缓存机制,这样就是一个面对失败设计,当整个 K8S Ingress 或者依赖的下端的这个 Nacos 之类的一些服务来源断了之后依然保证整个链路是可用的,提升了整个网关的高可用。这里边还有很多一些其他的一些高可用的设计今天就不具体讲解了,因为包括阿里如果要是配合混沌工程a house的话,也可以做很多故障演练,在内部会两到三个月会定期的去做,这就是今天在稳定性上的一个优势。

9.png


4. MSE Ingress -性能更强劲

关心完稳定性之后,就会考虑性能方面的问题。因为网关在一个流量的入口上,每天有非常多的人去请求,很多公司在网关这堆了很多的机器,那性能到底表现的怎么样。

第一个就是相比于同样的 Envoy Nginx,用户大部分都是 Nginx 自建,那这里采用的是 Envoy内核,那采用 Envoy 为内核和用户自建的 Nginx 去对比,这个图上蓝色的是Envoy ,橙色的是 Nginx ,可以看到在整个 Envoy 的这个内核里的吞吐比整个 Nginx 会高90%以上,这是整个吞吐,而 RT 会有一个更短的效果。核心的原因就是整个 Nginx 在兼容 Ingress 的时候把数据线、控制面搞到一起,相互影响有非常多的一个稳定性问题。那这里的控制面分离,在数据面上不会有任何的干扰,稳定性非常的好。

第二个就是对于网关,其实他是 CPU 密集型的,在CPU 密集型里去分析他整个 CPU 消耗最大的一个是 TLS的卸载即证书卸载,另一个就是 GZP 一些压缩,那这两个,第一期已经把 TLS 卸载通过硬件去做,可以看到一个详细的数据,下面详细数据展示就是整个 QBS 提升了86% RT 下降了50%,包括 GZP的一些硬件的加速能力,也在跟阿里云的 ARZ 层在一起合作推进,相信不久将来也会面世。

最后因为在阿里有大量的一些统一接入层的 Ingress 的一些经验,因此从整个操作系统到内核的参数Envoy 上做了非常多的一个调优,相比于 Envoy 的自建用户,性能也会提升40%

讲完这三点可以看到 MSE Ingress 的整个性能会比自建至少要高一倍以上,这个可以通过 PDS 压测去体验一下。有很多大客户都是去压测,而且最后的反响非常的好,这就是性能的一个优势。

10.png


5. MSE Ingress -安全更专业(多重防御)

讲完性能优势之后,那最后关心的可能就是安全问题和扩展性问题。因为网关一个是高可用的入口,一个是安全的入口,那云原生的整个表现是怎么样的。左边这个就是云原生网关的内部的一个实践的架构,他是有非常多的filter的,在这个架构里非常的灵活且扩展了多重防护的能力。多重防护的多重体现在哪些地方。

第一个就是说证书管理,这个支持双向证书认证,不仅是前端到网关入口,网关到后端都支持整个证书认证和转发,目前有一些金融领域已经到后端也是使用这个证书的验证,前链路的这个 TLS 加密的这种模式去做,然后这个的优势是和阿里云的云盾产品进行集成,这样当云盾更新的时候会动态的更新证书,防止证书过期带来的一些稳定性的问题。所以在运维阿里的统一接入层的时候,最早包括使用统一接入层,也遇到过很多证书更新不及时,导致整个入口流量下跌的这个风险。因此帮用户从入口解决了这个稳定性的一个风险和热更新的能力,降低整个运维成本。

第二个就是刚才在上一篇讲的,这点是通过阿里云的硬件加速让这块的性能会有更卓越的表现,这就是在整个双向认证上的一个安全的能力。第二个就是当证书认证之后就要走登录认证,而走登录认证第一个是支持多种标准,第二个就是集成了IDaaS 一站式可以直接对接支付宝,这是淘宝所有的登录模式,很多的一些中台客户,包括电商领域都是采用的这种模式,而且在此之上有很多公司,对包括出现一些安全攻防的时候他会有一些黑白名单的机制,那可以在更细粒度的 IP 段支持黑白名单从而进一步增加整个登录的范围,提升整个管理效率。

那在整个流量防护这部分,其实集成了三方之后,可以支持应用级和服务级的细腻度的一个流量防护能力,包括集成 WAF 之后,第一个就是集成 WAF 的优势就是流量不过 WAF 了, WAF 只是控制面了,这是第一个优势,然后请求的路径会更短,稳定性会更高;第二个事情就是集成了 WAF 之后,可以做到服务级跟路由级更细粒度的一个防护,这样当某一个 URL 被攻击的时候就可以进行更细腻度的管控;最后就是支持的一个扩展机制,也就是WASM 扩展机制,在这扩展机制里提供了差不多有二十多种安全的一个默认的插件,可以按需的去启用,如果有的公司行业不一样,安全准则要求不一样,需要更多的一些自定义的安全能力,那也支持自定义的一个插件能力。

这是现在的一个多重防护能力,在这个多重防护里其实在内核上是有优势的,可以看到在内核上面的几个优势。第一个就是数据面和控制面分离,这样如果控制面出现一些安全稳定性的问题,他不会外溢到整个数据面,这是第一个架构优势;第二个是采用的WASM 的一个扩展机制而 WASM 是一个安全沙箱,他的整个爆炸半径和整个操作都是比较受限的,即使他被攻破,他的整个安全风险也是非常低的;第三个内核就是所有的安全规则的下发,全部是热更新并不需要重启机器,这样的对于整个安全防护和整个流量的平稳有更大的优势,这个就是MSE Ingress 的一个安全的能力。

11.png


6. MSE Ingress -扩展更灵活(多语言+动态更新)

然后最后介绍一下安全扩展,包括路由扩展有很多插件的一个机制,这个就是一个架构图,左边是 MSE Ingress Envoy 内核和 Filter,这有一个 class Filter 这就方便用户自定义扩展自己的插件,基于 ecell 的一个控制面和 XDS 协议会把整个服务和对应的规则推送到自定义的一个路由规则里,这里也推广了一个插件市场,把默认的一些插件全部动态热更新的推到整个控制面上和数据面上,这就是第一个优势即整个规则的下发是动态更新的。第二个就是因为采用了 WASM Lua 两个扩展模式,在 WASM 的扩展机制之下整个多语言的支持非常的好。当然可能很多的人会说 MSE Ingress好,但是会不会被阿里云绑定。其实是不会的,首先可以看到整个网关的技术栈是采用了 Envoy + Ensu 这套体系是100%和开源兼容的,不会存在厂商锁定问题。第二个采用的扩展机制是标准的设计的 WASM 扩展机制,他方便多语言扩展,这个东西也不会有厂商锁定的问题,因此是可以放心的使用。而且在整个标准里都是兼容 Ingress 标准的,这个标准也是所有行业里非常通用的。下面将会介绍一下 Ingress 的兼容情况,这就是扩展性会更加的灵活,支持多语言的动态更新。

42.png


7. MSE Ingress -支持 HTTP Dubbo

最后就是在兼容 Ingress 之后,因为集成了微服务网关所以会有很多其他的优势,现在来简单介绍一下。第一个优势,因为 Dubbo 是一个国内使用非常主流的一个 RPC 框架是微服务体系,但问题就是对于网关之外的整个外网一般都是HTTP 协议而内网是 Dubbo 协议,那对于开发者来说面临的一个问题就是怎么把一个 Dubbo 服务最低成本的转成一个 HTTP 的服务通过北向网关出去,而传统的公司一般解法就两个,第一个解法就是当需要报录到这个北向网关出去的时候,就在代码里面写一个HTTP 服务暴露出去,这样的话就会带来整个开发成本比较高而且结果不能复用,后面包括参数的维护可能同样一个接口HTTP 要暴露一个, Dubbo 也要暴露一个,这样整个的维护成本会比较高;

第二种玩法是行业里比较多的,他会在流量网关下面加一个云原生网关或者协议转换的 CSB 这样的一些协议转换的集成网关,他解决 HTTP Dubbo 协议的转换,但这样的话就会使整个运维成本偏高。一般来说行业里面用的比较多的可能是皮球和对应的神与,这样又会多一层代理,多一个稳定性和运维成本多一跳。那这里做法就是把HTTP Dubbo 协议的转化,就在 MSE 的云原生网关默认集成,并且符合 HTTP Dubbo 转化的一个社区的标准,在这上面做了非常多的一个性能和易用性的提升,可以下载体验一下,并且现在的云原生网关支持Nacos Zookeeper 的多种服务发现机制,这样的话就方便用户可以一站式的,也就是说支持 K8S 的服务发现模式和 Nacos 的服务发现模式,并且支持 HTTP Dubbo 协议的转换。

43.png

8. MSE Ingress -支持 Nginx Ingress 注解

在此基础之上,最后介绍的一个优势,就是虽然是采用 Envoy 内核的,但是对 Ingress Nginx 的兼容情况会是什么样的。目前已经兼容了整个 K8S 的一个标准规范而且支持了 Nginx Ingress 80%以上的核心注解的扩展,就可以认为是可以从自建的 Nginx Ingress 迁到云原生网关是毫无障碍的,而且面对未来,因为刚才讲了长期上社区是往 Getway-API 的标准上去演进,那目前从整个内核上已经支持了这个能力,后面可能在近期会通过控制来把这个对应的 Getway API 的一个支持发布出来,这就是在标准上 Ingress 在兼容上的一个优势。除此之外,云原生网关其实还有两个比较大的优势。第一个就是因为数据面、控制面分离之后,其实是可以动态的监听这些服务,实时的推送到网关上,实时性会非常好。第二个就是因为控制面相对来说是比较独立的,是独立用户 VPC 的,这样的话可以把用户多个 ACK 集群里边的服务通过一个网关去做一些分发,这样的话会使他的整个操作性和灵活性会非常的好。那下面就介绍一个简单的 demo ,通过 K8S 里的应用市场去创建一个云原生网关,简单的体验一下。

44.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
缓存 Kubernetes Docker
容器服务ACK常见问题之容器服务ACK ingress websocket配置失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
4月前
|
Kubernetes 负载均衡 应用服务中间件
kubernetes—Ingress详解
kubernetes—Ingress详解
76 0
|
4月前
|
Kubernetes 应用服务中间件 nginx
|
1月前
|
Kubernetes 负载均衡 应用服务中间件
Kubernetes的Ingress
Kubernetes的Ingress
43 0
Kubernetes的Ingress
|
1月前
|
Kubernetes 应用服务中间件 nginx
提升CKA认证成功率:Kubernetes Ingress七层代理全攻略!
提升CKA认证成功率:Kubernetes Ingress七层代理全攻略!
28 0
|
1月前
|
Kubernetes 应用服务中间件 网络安全
kubernetes中Ingress Nginx 常用规则使用
kubernetes中Ingress Nginx 常用规则使用
16 0
|
2月前
|
Kubernetes 应用服务中间件 nginx
K8S(05)核心插件-ingress(服务暴露)控制器-traefik
K8S(05)核心插件-ingress(服务暴露)控制器-traefik
37 0
|
2月前
|
Kubernetes 应用服务中间件 nginx
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
Kubernetes服务网络Ingress网络模型分析、安装和高级用法
53 5
|
2月前
|
容器
在容器服务ACK中,如果你想更改ALB Ingress的域名和端口
【2月更文挑战第15天】在容器服务ACK中,如果你想更改ALB Ingress的域名和端口
15 3
|
2月前
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。