容器服务ACK结合MSE Ingress,让集群入口流量管理更丰富、更容易

简介: 作为Ingress Controller新选择MSE Ingress,我们始终立足用户视角,从用户真实业务场景出发,不断完善和优化Ingress使用体验,后续我们会持续在产品的性能、易用性、稳定性和生态方面持续打磨,以便用户无门槛的享受到云原生技术的红利。

随着云原生技术不断普及,越来越多的业务应用开始向云原生架构转变,借助容器管理平台Kubernetes的不可变基础设施、弹性扩缩容和高扩展性,助力业务迅速完成数字化转型。其中,集群入口流量管理方式在云原生技术演进过程中逐步通用化、标准化,用户通过Kubernetes定义的Ingress资源来管理外部访问集群内部服务的方式。入口网关的标准化制定将入口流量管理与网关的实现解耦,不仅促进了各种Ingress Controller的发展,而且消除了开发者存在的与厂商绑定的顾虑,日后也可以根据自身业务实际场景切换到不同Ingress Controller。


阿里云容器服务Kubernetes版(简称容器服务ACK)提供高性能的容器化应用管理服务,让用户轻松高效地在云端运行Kubernetes容器化应用。MSE Ingress是在MSE云原生网关之上提供更为强大的Ingress流量管理方式,兼容Nginx Ingress50多个Nginx Ingress的注解,覆盖90%以上的Nginx Ingress业务使用场景,支持多服务版本同时灰度发布、灵活的服务治理能力以及全方位的安全防护保障,能够满足大规模云原生分布式应用的流量治理诉求。本文主要介绍如何利用容器服务ACK和MSE Ingress,让集群入口流量管理更丰富、更容易。


如何更好的灰度发布


业务的发展需要应用系统不断的迭代,我们无法避免应用频繁变更发版,但是我们可以提升应用升级过程中的稳定性和高可用。比较通用的做法是采用灰度发布,俗称金丝雀发布。金丝雀发布的思想则是将少量的请求引流到新版本上,因此部署新版本服务只需极小数的机器。验证新版本符合预期后,逐步调整流量,使得流量慢慢从老版本迁移至新版本,期间可以根据当前流量在新老版本上的分布,对新版本服务进行扩容,同时对老版本服务进行缩容,使得底层资源得到最大化利用。


用户借助MSE Ingress可以实现服务多个灰度版本共存,方便服务多个特性功能同时开发并且独立灰度验证。MSE Ingress支持多种灰度流量识别方式,基于HTTP Header、基于Cookie和基于权重的方式,用户可以按需针对路由级别实施灰度匹配策略。

此外,MSE Ingress针对服务的灰度版本默认提供了Fallback能力,当服务灰度版本不存在或者不可用时,流量会自动容灾到服务正式版本,在一定程度上保障了业务应用的高可用。用户仍然可以通过MSE Ingress提供的default-backend的注解来明确控制容灾服务的方向。

image.png


如何构建端到端的全链路灰度


对于分布式架构的微服务应用而言,服务之间的依赖关系错综复杂,一个业务功能需要多个微服务共同提供能力,一次业务请求需要经过多个微服务才能完成处理,牵一发而动全身。

在这种场景下,业务新功能发布可能同时涉及到多个服务发布,对新功能验证时就涉及到了对多个服务同时灰度的问题,通过构建从网关到整个后端服务的环境隔离来对多个不同版本的服务进行灰度验证,这就是微服务架构中特有的全链路灰度场景。


目前,全链路灰度的解决方案包括基于物理环境隔离和基于逻辑环境隔离。基于物理环境隔离的做法是通过增加机器的方式来搭建真正意义上的流量隔离,该方式存在一定的人力成本和机器成本,所以业界比较常用的做法是更灵活的基于逻辑环境管理。该方式虽然看起来是服务正式版本和灰度版本都部署在一个环境中,但是通过灰度路由匹配策略,可以精确控制灰度流量优先流经服务对应的灰度版本,只有当目标服务不存在灰度版本时,才会容灾到服务正式版本。从总体视角上看,针对新功能的灰度验证流量只会流经涉及到待发版服务的灰度版本,对于本次新功能未涉及到改动的服务,灰度流量正常通过,这种精准化的流量控制方式大大方便了开发者在微服务架构中多版本并行开发和验证的痛点,同时也降低了搭建测试环境的机器成本。


容器服务ACK用户,可以搭配使用MSE微服务治理和MSE Ingress,在不改任何一行代码的情况下,轻松快速上手全链路灰度能力,通过这种精细化的流量控制能力在用户在微服务架构治理过程中得心应手。

image.png

具体实践例子,可以参阅该文档:配置基于MSE Ingress的全链路灰度


如何打造全方位的安全防护


安全问题始终是业务应用的头号公敌,伴随着业务发展的整个生命周期。此外,外部互联网的环境越来越复杂,内部业务架构日益庞大,部署结构涉及公有云、私有云以及混合云多种形态,安全问题愈演愈烈。


作为入口网关的MSE Ingress,从一开始就在安全领域进行了积极探索和增强,打造了全方面的安全防护。主要体现在以下几个方面:

  • 加密通信以及TLS硬件加速:业务通信数据通常来说都是私有的、敏感的,TLS作为最基本、最广泛的防窃听、防篡改的协议经常和HTTP协议结合使用,就是大家熟知的HTTPS协议。MSE Ingress构建了从客户端到网关、网关到后端服务整个体系的HTTPS协议支持,并且结合阿里云第七代ECS率先完成了TLS硬件加速,在不增加用户资源成本的同时大幅度提升HTTPS的性能。针对特殊业务场景下对TLS协议版本以及TLS加密条件的合规性要求,MSE Ingress额外支持了域名级别的TLS版本控制以及加密套件选择。
  • 细粒度的WAF防护:在功能上,MSE Ingress不仅支持全局WAF防护,而且提供了细粒度的路由级别的WAF防护;在架构上,MSE Ingress采用内置WAF Agent的方式,相比传统 WAF 用户请求链路更短、RT 更低。
  • 细粒度的IP访问控制:MSE Ingress支持实例级别、域名级别以及路由级别的IP黑白名单,优先级逐步增加。用户可以在实例级别配置应用范围更广的IP访问控制,然后在路由级别配置与业务相关的IP访问控制,满足用户多样化的访问控制策略。
  • 多样化的认证鉴权体系:在微服务的架构中,会有多个服务接收来自外部用户(客户端)的请求,通常不会直接将服务暴露给外部用户,而是在中间加一层网关作为外部用户访问内部服务的控制点。对于外部用户访问的请求,我们通常希望在网关中进行身份验证,知道用户是谁,并能定义访问控制策略。目前,MSE Ingress支持Basic Auth、JWT Auth、OIDC、阿里云IDaaS服务以及自定义外部认证鉴权,助力业务以无侵入的方式轻松实现高阶访问控制。

image.png


如何建设全方位的可观测体系


可观测性并不是一个新词,该词来源于控制理论,是指系统可以由其外部输出推断其内部状态的程度,随着IT行业几十年的发展,IT系统的监控,告警,问题排查等领域的逐渐成熟,IT行业也将其抽象形成了一整套可观测性工程体系。而之所以该词在这几年愈发火热,很大程度是因为云原生,微服务模式,devops等技术的不断流行,对可观测性提出了更大的挑战。


网关作为业务流量的入口,其可观测性建设与整体业务的稳定性息息相关,同时由于网关的用户使用场景与功能较多,且网络环境也较为复杂,这对网关可观测性建设也带来了很多的难点,主要如下:

  1. 关注网关可观测性的角色众多
  2. 埋点不够精确,统计消耗大
  3. 网络环境复杂,  问题排查难度大

针对以上用户痛点,MSE Ingress 立足可观测领域三大马车:日志、链路追踪和指标监控,帮助用户构建了全方位的可观测体系。

在日志方面,MSE Ingress无缝集成了阿里云SLS日志服务,用户可以实时查看集群入口所有的访问请求。


image.png


在监控指标方面,MSE Ingress为用户构建了含有丰富指标的监控大盘,同时集成了prometheus 与 sls,用户既可以通过网关的访问日志的etl处理获取更加精细准确的数据,也可以通过prometheus获取网关的实时监控。


image.png


在链路追踪方面,为协助用户解决微服务场景下调用链路可视化的痛点,MSE Ingress对接了开箱即用的ARMS分布式链路追踪服务,同时也支持将trace数据投递到用户自建的skywalking,避免云产品锁定。

image.png


如何快速使用MSE Ingress


目前,MSE Ingress已经与容器服务ACK/ASK完成了深度集成,用户可以非常方便的接入使用。


在用户创建容器服务ACK/ASK集群时,在Ingress模块选择安装MSE Ingress即可。

image.png

对于之前已创建的集群,用户可以进入集群->运维管理->组件管理,在网络分组中找到MSE Ingress Controller并安装。

image.png

安装完MSE Ingress Controller,用户可以参考以下文档快速入门MSE Ingress。


总结


作为Ingress Controller新选择MSE Ingress,我们始终立足用户视角,从用户真实业务场景出发,不断完善和优化Ingress使用体验,后续我们会持续在产品的性能、易用性、稳定性和生态方面持续打磨,以便用户无门槛的享受到云原生技术的红利。


MSE 云原生网关、注册配置中心专业版首购8折优惠,首购1年及以上7折优惠。


image.png

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
Kubernetes 应用服务中间件 nginx
Kubernetes上安装Metallb和Ingress并部署应用程序
Kubernetes上安装Metallb和Ingress并部署nginx应用程序,使用LoadBalancer类型的KubernetesService
1116 116
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
567 2
|
缓存 Kubernetes 负载均衡
在K8S中,ingress 有何作用?
在K8S中,ingress 有何作用?
|
Kubernetes 负载均衡 应用服务中间件
k8s学习--ingress详细解释与应用(nginx ingress controller))
k8s学习--ingress详细解释与应用(nginx ingress controller))
2636 0
|
API UED 开发者
超实用技巧大放送:彻底革新你的WinForms应用,从流畅动画到丝滑交互设计,全面解析如何在保证性能的同时大幅提升用户体验,让软件操作变得赏心悦目不再是梦!
【8月更文挑战第31天】在Windows平台上,使用WinForms框架开发应用程序时,如何在保持性能的同时提升用户界面的吸引力和响应性是一个常见挑战。本文探讨了在不牺牲性能的前提下实现流畅动画与交互设计的最佳实践,包括使用BackgroundWorker处理耗时任务、利用Timer控件创建简单动画,以及使用Graphics类绘制自定义图形。通过具体示例代码展示了这些技术的应用,帮助开发者显著改善用户体验,使应用程序更加吸引人和易于使用。
293 0
|
4月前
|
人工智能 算法 调度
阿里云ACK托管集群Pro版共享GPU调度操作指南
本文介绍在阿里云ACK托管集群Pro版中,如何通过共享GPU调度实现显存与算力的精细化分配,涵盖前提条件、使用限制、节点池配置及任务部署全流程,提升GPU资源利用率,适用于AI训练与推理场景。
439 2
|
4月前
|
弹性计算 监控 调度
ACK One 注册集群云端节点池升级:IDC 集群一键接入云端 GPU 算力,接入效率提升 80%
ACK One注册集群节点池实现“一键接入”,免去手动编写脚本与GPU驱动安装,支持自动扩缩容与多场景调度,大幅提升K8s集群管理效率。
305 89
|
9月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
ACK One 的多集群应用分发,可以最小成本地结合您已有的单集群 CD 系统,无需对原先应用资源 YAML 进行修改,即可快速构建成多集群的 CD 系统,并同时获得强大的多集群资源调度和分发的能力。
470 9
|
9月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多