如何在 ACK 中使用 MSE Ingress
简介: 本文将为大家分享一下 Ingress 标准 和 实现的趋势,介绍一下 MSE Ingress 在这个趋势下的优势和实践,为大家做关键入口选择多一些参考。
作者:彦林
随着云原生架构的普及,K8s 通过 Ingress 标准逐步把流量网关标准化,微服务网关作为微服务的入口正在加速跟流量网关融合,Ingress 作为容器和微服务的交集,作为数字世界的入口,作为安全和高可用的第一道防线变得越来越重要!本文将为大家分享一下 Ingress 标准 和 实现的趋势,介绍一下 MSE Ingress 在这个趋势下的优势和实践,为大家做关键入口选择多一些参考。
Ingress 趋势
K8s Ingress由标准和实现两部分组成, 下面我们分别探讨一下他们各自的现状和发展趋势。
Ingress 标准现状
我们把网关按照入口-内部,2C-2B 分成四个象限,每个象限都有一个网关子领域,目前 Ingress 主要定义的是流量网关的标准,但是不能很好的定义 API 网关(API管理) 和 微服务网关(服务治理)场景,更无法定义集成网关(新老系统协议转换和接口集成)场景;因此 Ingress 从标准上往 Gateway-API 方向去演进,解决 API 管理和 微服务治理的问题,但是演进需要比较长时间,当前由于 Ingress 标准定义能力比较有限,不同的实现通过各自方法扩展,但是扩展方式在分化,因此 Ingress 作为标准的价值弱化,面对未来 Ingress 标准该何去何从?
Ingress 标准趋势
从社区的反馈上看,Ingress 长期会往 Gateway API 场景去演进,中短期并存,短期以 Ingress 为主去扩展;目前 Gateway API 目前也发了 Beta 版本,基本定型;Gateway API 中增加了对 API 管理和微服务领域的增强。
Ingress 实现现状
Ingress 实现目前从社区上有 Nginx 和 Envoy 两个体系,Nginx 存量大,但是由于架构设计的问题,随着用户规模变大逐步暴露安全和稳定性风险,目前社区宣布停止6个月新需求开发, 集中解决安全和稳定性问题;Envoy + Istio 作为后起之秀,采用数据面和控制面分离架构,有更好的安全和稳定性保障,并且支持多语言扩展,热更新优势,Envoy 社区也推出 Gateway 产品加速 Gateway API 落地。
Ingress 实现趋势
从 Ingress 实现趋势上看,虽然 Nginx 依然保持最大市场份额,但是可以看到 Envoy 以最快的速度成为第二选型,相信在未来几年 Nginx 和 Envoy 会平分天下。
Ingress 产品趋势
从行业上看,网关呈现高集成发展趋势,统一接入降低部署运维成本,降低请求链路 RT,因此在这个趋势之下阿里云推出 MSE Ingress(云原生网关)产品,将流量网关、微服务网关、安全网关三合一,提供一站式网关解决方案,兼容 Nginx 80%+扩展注解,并且面对未来支持 Gateway API 标准,基于 Ingress 增强微服务领域灰度、限流、观测等能力,提供安全和扩展优势。
MSE Ingress 优势
MSE Ingress (云原生网关)孵化于阿里巴巴,于 2021 年完成商业化,提供功能丰富,高可用,高可用,安全、易扩展等核心竞争力,提供开箱即用的网关服务。
MSE Ingress 简介
MSE Ingress (云原生网关)将流量网关、微服务网关、安全网关三合一,结合微服务体系统一控制东西南北流量,集成 WAF 数据面,流量不过 WAF,降低整个链路 RT,提供更高性价比网关。
MSE Ingress 功能优势
MSE Ingress 在安全、服务治理、可观测在阿里云上完成了开箱即用的高集成方案,并且提供了丰富的扩展机制,方便用户定制开发。
MSE Ingress 可用性优势
MSE Ingress 在阿里巴巴经历双十一洪峰考验,经过两年多的发展,构建了强大的高可用体系,如推空保护和本地缓存,解决 K8s API-Server 等后端服务异常的保护策略,面对失败设计提升可用性,并且定期做故障演练不断锤炼,为用户在入口多一份稳定性保障!
MSE Ingress 性能优势
由于 MSE 采用 Envoy 内核,在 Ingress 场景下会比 Nginx 高 90%,很多人可能会有疑问,Nginx 本身性能是非常高的,但是适配 Ingress 场景的机制导致性能有所下降,最终做为 Ingress 场景表现不如 Envoy。对于网关性能非常大的消耗是证书卸载和压缩,目前 MSE Ingress 采用硬件加速将 HTTPS QPS 提升 86%,RT 下降 50%,未来我们将推出 gzip 硬件解压能力,进一步提升网关性能;由于我们在阿里有大规模生产经验,因此我们从 OS 内核到 Envoy 内核做了非常多的优化,性能又提升40%,因此采用 MSE Ingress 预计成本至少下降 50%,欢迎采用阿里云 PTS 压测感受 MSE Ingress 性能表现!
MSE Ingree 安全优势
Ingress 作为入口也是安全防线入口,MSE Ingress 提供了多重防护能力,从 入口 mTLS 双向认证,到后端 mTLS 双向认证,支持全链路保障,支持与阿里云盾证书集成,自动更新证书,防止证书过期风险。支持 JWT/OIDC 等标准登录认证机制,也提供自定义登录认证模式,可集成 IDaaS 支持支付宝、淘宝等三方认证机制,开箱即用。集成 Sentinel 支持服务级限流防护,集成 WAF 支持细粒度流量防护,提供数十种默认安全插件给用户选择,也支持用户自定义安全插件灵活扩展。
MSE Ingress 扩展性优势
MSE Ingress 插件市场支持多语言扩展,采用 WASM 沙箱机制支持动态更新;采用 Envoy + Istio 开源架构无厂商锁定。
MSE Ingress 协议优势
MSE Ingress 支持 HTTP-Dubbo 协议转换,在入口简单方便地提供协议转换,提升研发运维效率。
MSE Ingress 兼容优势
MSE Ingress虽然采用 Envoy 内核,但是兼容了 Nginx Ingress 80%+以上核心注解,支持自建 Nginx Ingress 平衡迁移 MSE Ingress,未来 MSE Ingress 可以更好的往 Gateway API 演进。
MSE Ingress 实践
通过上面 MSE Ingress 优势介绍大家可能已经决定选择 MSE Ingress了,但是使用 MSE Ingress 最佳实践是什么?如何平衡迁移呢?
MSE Ingress 最佳实践
MSE Ingress 在北向入口建立安全和高可用方向,路由到南向支持 K8s/Nacos/ECS/FC 多种服务发现模式,统一接入。东西向跨域互通,打通多个业务域,多个 Region,云上云下,云边,跨云,跨安全域互通;统一控制东西南北流量。东西向网关建议采用白名单机制降低安全风险。
MSE Ingress 平滑迁移方案
由于 MSE Ingress 兼容 Ingress 标准,因此创建完 MSE Ingress 实例后可以自动的完成路由规则映射,因此只需要从 DNS/SLB 入口切换到 MSE Ingress 实例即可。
MSE Ingress 新金融客户案例——费芮互动
费芮互动的自媒体平台运维超过 3 亿粉丝,每日处理粉丝交互超过 1 亿次, 电子券系统发放 6 亿+ 张电子券,4 万+门店使用费芮移动支付解决方案,支付系统每月处理 3000 万+ 笔。如此大规模的业务流量对网关接入层的性能和稳定性提出较大的挑战。
- 费芮的业务应用部署在阿里云容器服务 ACK 上,基于 Nginx 的 K8s Ingress 入口网关与业务应用混布在同一集群中,对于突发流量的应对以及横向扩缩容能力有限,同时海量 C 端用户发起的 HTTPS 请求会产生大量的 TLS 加解密操作,对服务器的 CPU 压力很大,从而影响业务系统的稳定性。
- 费芮在容器化改造后仍有一些传统的单体应用,服务之间通过域名方式调用,无法统一使用 K8s service 进行统一管理。费芮急需高性能、高可用的网关接入层,能够对南北向和东西向的流量进行统一管理,同时希望能平滑迁移存量路由配置,减少网关替换的工作量。
MSE 云原生网关可以很好的解决以上难题:
- MSE 可将 ACK 集群内服务一键导入与自动同步,并支持多个 ACK 集群复用同一个网关实例。
- MSE 兼容 K8s Ingress 规范,且支持 Nginx Ingress 核心功能注解的无缝转换。通过 ack-mse-ingress-controller 组件,可自动监听、解析 K8s 集群中 Ingress 资源,将 ACK 中的 Ingress 路由直接同步至云原生网关中生效;
- MSE 直连业务 Pod IP,不经过传统 Cluster IP,RT 更低;通过对 OS 内核参数与组件调优,QPS 比 Nginx 提升约 40%;利用硬件卸载 TLS 证书验证加速, HTTPS QPS 提升 80%。
- MSE 的路由管理能力,既能实现南北向流量调度将服务对外暴露,也能支持东西向流量调度协助传统应用的服务间调用。丰富的负载均衡、限流降级、流量分发策略,可保证系统的稳定性,并满足业务快速迭代需求。
MSE Ingress DEMO
最后通过一个简单的 DEMO 简单介绍一下通过 MSE Ingress 做灰度,也可以通过云启免费试用。
MSE Ingress 云原生网关新老客户同享 9 折,欢迎试用,有问题欢迎扫描钉钉二维码 (34754806)和我们交流~
本文内容源自“5 分钟玩转容器服务进阶课程”的沉淀,点击此处,学习课程全部内容。
如何在 ACK 中使用 MSE Ingress的更多相关文章
- 如何在Ruby中编写微服务?
[编者按]本文作者为 Pierpaolo Frasa,文章通过详细的案例,介绍了在Ruby中编写微服务时所需注意的方方面面.系国内 ITOM 管理平台 OneAPM 编译呈现. 最近,大家都认为应当采 ...
- 我是如何在SQLServer中处理每天四亿三千万记录的
首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...
- 如何在SpringBoot中使用JSP ?但强烈不推荐,果断改Themeleaf吧
做WEB项目,一定都用过JSP这个大牌.Spring MVC里面也可以很方便的将JSP与一个View关联起来,使用还是非常方便的.当你从一个传统的Spring MVC项目转入一个Spring Boot ...
- 如何在latex 中插入EPS格式图片
如何在latex 中插入EPS格式图片 第一步:生成.eps格式的图片 1.利用visio画图,另存为pdf格式的图片 利用Adobe Acrobat裁边,使图片大小合适 另存为.eps格式,如下图所 ...
- 如何正确的使用json?如何在.Net中使用json?
什么是json json是一种轻量级的数据交换格式,由N组键值对组成的字符串,完全独立于语言的文本格式. 为什么要使用json 在很久很久以前,调用第三方API时,我们通常是采用xml进行数据交互,但 ...
- [原创]如何在Parcelable中使用泛型
[原创]如何在Parcelable中使用泛型 实体类在实现Parcelable接口时,除了要实现它的几个方法之外,还另外要定义一个静态常量CREATOR,如下例所示: public static cl ...
- 如何在springMVC 中对REST服务使用mockmvc 做测试
如何在springMVC 中对REST服务使用mockmvc 做测试 博客分类: java 基础 springMVCmockMVC单元测试 spring 集成测试中对mock 的集成实在是太棒了!但 ...
- 如何在tomcat中如何部署java EE项目
如何在tomcat中如何部署java EE项目 1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法.2.在tomcat安 ...
- 【转】我是如何在SQLServer中处理每天四亿三千万记录的
原文转自:http://blog.jobbole.com/80395/ 首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文 ...
- 如何在JAVA中实现一个固定最大size的hashMap
如何在JAVA中实现一个固定最大size的hashMap 利用LinkedHashMap的removeEldestEntry方法,重载此方法使得这个map可以增长到最大size,之后每插入一条新的记录 ...
随机推荐
- Educational Codeforces Round 141:C. Yet Another Tournament
一.来源:Problem - C - Codeforces 二.题面 三.思路 读题: 其他人的胜场由位次决定,对于第i位,其胜场为i-1 人数为\(5·10^5\),不是5(看错了) 每个人和自己比 ...
- Shell脚本自动下载FTP文件上传到S3
1. shell脚本下载 #!/bin/bash #用户名 USER=xxx #密码 PASSWORD=xxx #下载文件临时目录 SRCTDIR=/approveform/uat/tempin #S ...
- OSI七层协议和TCP/IP五层协议
OSI七层模型概略: OSI 中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 HTTP,SMTP,FTP,DNS 表示层 数据压缩,解压,数据加密 无 会话层 解 ...
- vue项目本地开发完成后部署到服务器后报404是什么原因呢?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.如何部署 前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的web容器指定的静态目录下即可 我们知道 ...
- .net 开源混淆器 ConfuserEx
官网:http://yck1509.github.io/ConfuserEx/ 下载地址:https://github.com/yck1509/ConfuserEx/releases 使用参考:htt ...
- KingbaseES集群运维案例之---主备库failover后auto-recovery机制
KingbaseES集群运维案例之---主备库failover后auto-recovery机制 案例说明: KingbaseES集群,在备库数据库服务down后,可以实现节点数据库服务的自动恢复:在集 ...
- 【已解决】idea编译器插入数据到数据库乱码以及jsp页面乱码的解决方法
1.jsp页面需要设置编码格式为utf-8 1 <%@ page contentType="text/html;charset=UTF-8" language="j ...
- 基于energy score的out-of-distribution数据检测,LeCun都说好 | NerulPS 2020
论文提出用于out-of-distributions输入检测的energy-based方案,通过非概率的energy score区分in-distribution数据和out-of-distribu ...
- OpenHarmony应用开发—ArkUI组件集合
介绍 本示例为 ArkUI 中组件.通用.动画.全局方法的集合. 效果预览 使用说明: 1.点击组件.通用.动画.全局方法四个按钮或左右滑动切换不同视图. 2.点击二级导航(如通用属性.通用事件等), ...
- 解锁OpenHarmony技术日!年度盛会,即将揭幕!
OpenHarmony技术日 即将揭幕!4月25日(星期一)09:00-18:00与你惊喜相约! 扫码直达 共建新技术.开拓新领域 OpenHarmony 工作委员会+7 家单位共同发起 ...