现代的、基于云的软件开发生命周期从瀑布和快速进化完全拥抱DevOps的敏捷原则。作为这一转变的一部分,持续交付实践被采纳,给组织提供和发布代码的能力比以往任何时候都更快更频繁。CI / CD工具带来速度——代码总是随时可以部署,使组织能够提交一天多次。但是你怎么船代码数十,数百甚至数千次一天而不影响最终用户?
进入进步的交付。
什么是进步的交货吗?
进步交付给控制带来的交付过程和CI / CD管道,让用户来选择何时以及如何交付新代码。它构建在CI / CD的实践保持开发和交付速度,同时减少打破东西的风险逐步推出部署。与进步的交付,包括蓝色/绿色和淡部署策略,推出了少量的用户代码,以确保质量发布前更广泛的用户基础。如果出现错误,应用程序可以很容易地回滚,和绝大多数用户不会知道一件事。
进步的交付和Kubernetes
虽然进步交付提高部署的可靠性和稳定性,应用在复杂的microservice环境并不容易。建造一个容器协调器,而不是部署系统,Kubernetes需要一些手工工作执行进步的交付。Kubernetes默认滚动更新策略是简单的部署但更细粒度的控制用户流量和回滚相比更高级的部署方法喜欢蓝色/绿色和金丝雀。CD还没有完全自动化的关键阶段,离开DevOps推动代码生产手动通过不透明的管道。
很明显,这些挑战的新一代Kubernetes-first CD工具是必要的。这是阿尔戈项目研究团队做了什么当他们发布的v。1阿尔戈的糊涂事,一个开源Kubernetes控制器GitOps-based进步的交付。阿尔戈的发布是为了替换默认Kubernetes推广策略与更高级的部署,并可编程适合广泛的用例。阿尔戈号推出面向开发人员的方法,直观的设计,让用户减少管理开销的方法:
- 阿尔戈号发布中存在Kubernetes集群内,不需要凭证和权限设置集群之外的。
- 用户可以定义部署策略步骤金丝雀和蓝色/绿色部署
在现场,我们很兴奋来评估这个工具与我们的客户分享我们的经验和Kubernetes社区。使用一个argocd-demo应用程序,我们的DevOps工程师和开发人员开始在AWS上安装阿尔戈号产品,单个集群。
安装和开始
单个集群安装:
阿尔戈糊涂事Kubernetes-native方式安装和管理,并引入了一个新的Kubernetes CRD推出实体。它有相同的功能作为一个Kubernetes部署的实体,但阿尔戈发售将监测的变化,可以控制推出。用户可以定义一个特定的推广策略,可以配置一个清单文件。
推出的一个例子与金丝雀策略清单文件:
apiVersion: argoproj。io / v1alpha1:推出元数据:名称:canary-demo规范:副本:5 revisionHistoryLimit: 1选择器:matchLabels:应用:canary-demo模板:元数据:标签:应用:canary-demo规范:容器:-名称:canary-demo形象:argoproj / rollouts-demo:蓝imagePullPolicy:总是港口:-名称:http containerPort: 8080协议:TCP资源:请求:记忆:32英里cpu: 5米策略:金丝雀:canaryService: canary-demo-preview步骤:- setWeight: 20 -暂停:{}- setWeight: 40 -暂停:{时雷竞技rabet官网间:10}- setWeight: 60 -暂停:{时间:10}- setWeight: 80 -暂停:{时间:10}
安装过程是方便和简单,与大多数标准的包管理工具支持。安装后,阿尔戈糊涂事Kubernetes上运行在它自己的名称空间和所有配置存储在自定义资源,ConfigMaps和秘密Kubernetes集群本身作为凭证。雷竞技rabet官网使用Kubernetes CLI、kubectl可以确保所有组件都是运行。
多集群的支持
等公司的现场管理在不同地区多个集群,重要的是能够控制部署。为此,可见性、监控和可观察性是至关重要的。阿尔戈的发布没有集中的方式监控多个阿尔戈推出集群的开箱即用的状态,和可见性集群有限状态期间和之后推出。最高的逻辑实体,可以可视化是名称空间,限制了用户在一个地方多集群管理能力。
没有简单的方法来做到这一点,用户可能脚本或开发自己的工具,所以需要从阿尔戈和输出查询信息监测系统,或建立自己的仪表板遵循流程的部署。
阿尔戈号推出控制器
阿尔戈推出控制器协调单位的实际部署所需的部署策略。它封装了部署CRD Kubernetes和操纵ReplicaSets反映Kubernetes资源的期望状态。一个推出CRD的目的是作为一个声明性替代标准Kubernetes部署。像Kubernetes部署CRD一样,可以使用选择器将指定的清单什么豆荚应该管理,以及pod复制的数量维持。ReplicaSet控制器的工作是根据需要添加或删除豆荚匹配所需的副本中的配置清单。
推广策略
两个最著名的发布策略金丝雀和蓝色/绿色,这两种与阿尔戈rollout的支持。对于这个博客,我们关注金丝雀部署已成为一个受欢迎的部署方法控制它给用户。
金丝雀部署策略逐渐重定向的一些应用程序的流量从一个旧版本部署新版本。减少爆炸半径应该出错的东西,释放测试小池的流量之前推出一个更大的人口。组织可以选择如何定义他们的金丝雀部署,是缓慢而渐进的,还是迅速而突然。为了控制交通应用程序,一个入口控制器可以使用像Istio。你可以选择用户与特定的特征并将其新部署的版本,而另一些则被贩卖到旧版本。
持续的验证
一个进步的另一个重要方面部署测试。当真正的交通开始流到新版本的应用程序部署,不断验证将提醒你任何意想不到的行为,使你快速回滚。
了解测试反应,然而,需要更多的工程工作比其他的金丝雀。阿尔戈允许您配置测试和设置触发的行为,但这是由你来决定如何测试,测试,以及持续多长时间。
一套连续验证最佳实践是推出一个实验和测试。在阿尔戈允许用户实验CRD短暂的一个或多个ReplicaSets运行。除了运行短暂ReplicaSets,实验CRD可以启动AnalysisRuns ReplicaSets。通常,AnalysisRun用于确认新ReplicaSets按预期运行。
一旦金丝雀部署开始,连续测试也可以执行测试新版本之前,达到所有用户群。当金丝雀,开始接受生产流量运行,监测延迟和应用程序错误将有助于确定部署应该进步或回滚。
结论
阿尔戈的发布是一个受欢迎的选择持续交付的风景,还有很多方面擅长,阿尔戈rollout。对于开发人员来说,它使部署流程来处理代码,虽然可以减少操作开销DevOps。灵活的部署流程,阿尔戈的发布功能,可以提高整体的经验和已部署的服务的可用性。很容易安装和管理,可以是Kubernetes集群本身的一部分,但可观测性方面的部署过程是有限的。
阿尔戈糊涂事帮助迎来Kuberntes-centric进步的交付方法,现在现货NetApp将我们的经验在Kubernetes CI / CD与海洋景观CD。最近宣布,OceanCD是完全成功的SaaS提供,提供端对端控制和标准化大规模频繁Kubernetes应用程序的部署过程。与海洋CD,现货已经建立了一个开发者,Kubernetes-native解决方案,将简化发布过程,并提供全力支持进步交付自动化部署部署和管理。
