容器服务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
1302 121
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
1079 2
|
缓存 Kubernetes 负载均衡
在K8S中,ingress 有何作用?
在K8S中,ingress 有何作用?
|
Kubernetes 负载均衡 应用服务中间件
k8s学习--ingress详细解释与应用(nginx ingress controller))
k8s学习--ingress详细解释与应用(nginx ingress controller))
2899 0
|
API UED 开发者
超实用技巧大放送:彻底革新你的WinForms应用,从流畅动画到丝滑交互设计,全面解析如何在保证性能的同时大幅提升用户体验,让软件操作变得赏心悦目不再是梦!
【8月更文挑战第31天】在Windows平台上,使用WinForms框架开发应用程序时,如何在保持性能的同时提升用户界面的吸引力和响应性是一个常见挑战。本文探讨了在不牺牲性能的前提下实现流畅动画与交互设计的最佳实践,包括使用BackgroundWorker处理耗时任务、利用Timer控件创建简单动画,以及使用Graphics类绘制自定义图形。通过具体示例代码展示了这些技术的应用,帮助开发者显著改善用户体验,使应用程序更加吸引人和易于使用。
353 0
|
人工智能 运维 Kubernetes
阿里云容器服务ACK AI助手正式上线带来的便利性
作为开发者想必大家都知道,云原生容器技术的优势,尤其是近两年的随着容器技术的迅猛发展,Kubernetes(K8s)已成为广泛应用于容器编排和管理的领先解决方案,但是K8s的运维复杂度一直是挑战之一。为了应对这一问题,就在最近,阿里云容器服务团队正式发布了ACK AI助手,这是一款旨在通过大模型增强智能诊断的产品,旨在帮助企业和开发者降低Kubernetes(K8s)的运维复杂度。那么本文就来详细讲讲关于这款产品,让我们结合实际案例分享一下K8s的运维经验,探讨ACK AI助手能否有效降低K8s的运维复杂度,并展望ACK AI助手正式版上线后的新功能。
1006 2
阿里云容器服务ACK AI助手正式上线带来的便利性
|
存储 Kubernetes Docker
容器服务ACK常见问题之阿里云控制台进不去了如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
Kubernetes 监控 调度
阿里云容器服务ACK
阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes)提供高性能、可伸缩的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理。在ACK中,利用cGPU(Containerized GPU)技术可以实现GPU资源的共享,提高GPU利用率,降低整体成本。
495 6
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。

相关产品

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

    更多