JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

「技术干货」Argo Rollouts argocd rollout

wys521 2024-10-19 09:44:50 精选教程 26 ℃ 0 评论


作者/吴江法


什么是Argo Rollouts?


Argo Rollouts是一个Kubernetes控制器和一组CRD,为Kubernetes提供高级部署功能,例如蓝绿部署、金丝雀部署、金丝雀分析、实验和渐进式交付功能。


概念


1. 蓝绿部署


蓝绿部署(有时称为红黑部署)同时部署了新旧版本的应用程序。在此期间,只有旧版本的应用程序会收到生产流量。这允许开发人员在将实时流量切换到新版本之前针对新版本运行测试。



2. 金丝雀部署


Canary部署将一部分用户暴露给新版本的应用程序,同时将其余流量提供给旧版本。一旦新版本验证无误,新版本就可以逐步取代旧版本。入口控制器和服务网格(例如NGINX和Istio)为金丝雀提供比原生可用的更复杂的流量整形模式(例如实现非常细粒度的流量拆分,或基于HTTP标头的拆分)。



架构图



1. Rollout Controller


这是监控集群事件并在资源类型Rollout发生更改时做出反应的主控制器。控制器将读取部署的所有详细信息,并将集群置于部署定义中描述的相同状态。


2. 核心CRD:Rollout


Rollout资源是Argo Rollouts引入和管理的自定义Kubernetes资源。它主要与原生Kubernetes部署资源兼容,但具有控制高级部署方法(如金丝雀和蓝/绿部署)的阶段、阈值和方法的额外字段。


请注意,Argo Rollouts控制器只会响应Rollout源中发生的那些更改。它不会对正常的部署资源做任何事情。这意味着如果您想使用Argo Rollouts管理部署,则需要将部署迁移到Rollout。


3. AnalysisTemplate and AnalysisRun


分析是将Rollout连接到您的指标提供程序并为某些指标定义特定阈值的能力,这些指标将决定更新是否成功。对于每个分析,您可以定义一个或多个指标查询及其预期结果。如果指标查询良好,Rollout将自行进行,如果指标显示失败,则自动回滚,如果指标无法提供成功/失败答案,则暂停Rollout。


为了执行分析,Argo Rollouts包含两个自定义Kubernetes资源:AnalysisTemplate和AnalysisRun。


AnalysisTemplate包含有关要查询哪些指标的说明。附加到Rollout的实际结果是AnalysisRun自定义资源。您可以AnalysisTemplate在特定的Rollout上或在集群上全局定义一个 ,以供多个rollout共享为ClusterAnalysisTemplate。该AnalysisRun资源的范围是特定的推出。


请注意,在Rollout中使用分析和指标是完全可选的。您可以通过API或CLI手动暂停和促进推出或使用其他外部方法(例如冒烟测试)。使用Argo Rollouts不需要公制解决方案。您还可以在Rollout中混合使用自动(即基于分析)和手动步骤。


4. Metric providers


Argo Rollouts提供了多种执行分析以推动渐进式交付的方法。包括Prometheus,Datadog,NewRelic,WaveFront,Job,Web,Kayenta,CloudWatch。


流量管理


Argo Rollouts通过操纵Service Mesh资源以匹配Rollout的意图来启用流量管理。Argo Rollouts目前支持以下服务网格:AWS的ALB Ingress Controller,Ambassador Edge Stack,Istio,Nginx Ingress Controller,Service Mesh Interface(SMI),Multiple Providers。


无论使用哪种服务网格,Rollout对象都必须在其规范中设置一个金丝雀服务和一个稳定服务。以下是设置了这些字段的示例:


1. Nginx Ingress Controller


Nginx Ingress Controller通过一个或多个Ingress对象启用流量管理,以配置将流量直接路由到Pod的Nginx部署。每个Nginx Ingress都包含多个注释,用于修改Nginx部署的行为。对于应用程序的不同版本之间的流量管理,Nginx Ingress控制器通过引入带有一些特殊注释的第二个Ingress对象(称为Canary Ingress)来提供拆分流量的能力。


与Argo Rollouts集成:


Rollout中有几个必填字段,用于在使用Nginx的版本之间发送拆分流量。以下是包含这些字段的Rollout示例:



代码分析


灰度发布核心接口:



Nginx Ingress Controller灰度发布代码核心流程:



LStack产品简介


面向行业应用开发商(ISV/SI)提供混合云/边缘云场景下云原生应用开发测试、交付、运维一站式服务,帮助企业采用云原生敏捷开发交付方法论,从而提高软件开发人员效率、减少运维成本,加快数字化转型,并最终实现业务创新。


-End-

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表