云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

虚拟主机_域名快速备案多少钱_安全稳定

小七 141 0

BitBrains/ASP4all如何使用consur跨开发、测试、验收和生产进行连续部署

BitBrains和ASP4all是荷兰的基础设施公司,为从大型政府部门到小型网店的客户提供基础设施托管和服务。他们目前正在合并为一家公司。他们经历过各种形式和规模的基础设施挑战,并拥有解决这些问题的高水平专业知识。作为合并的一部分,他们成立了一个名为德尔塔福斯的新团队。这个团队已经创建了一个工具,它允许面向客户的工程师以编程方式为新客户部署基础设施,并通过一个定义好的接口更新现有客户的基础设施。该工具使用执政官作为持续部署到这些环境的基础。consur的DNS、Key-Value-store和GUI为DeltaForce提供了一个简单的可靠交付软件的机制。这篇文章最初是由ASP4All Bitbrains在他们的官方博客上发布的,我们正在HashiCorp博客上重新发布它,这样将来的读者就可以很容易地找到关于我们的工具在现实环境中的使用的帖子。»跨生产、连续测试和验收解决方案工程团队设定了一个目标:将应用程序完全容器化,并构建一个连续的部署管道来测试它们。为此,需要解决以下几个问题:在部署时存储和检索特定于环境的配置通过管道从开发到生产迁移docker映像版本服务发现和运行状况检查最初,团队将特定于环境的配置存储在docker主机上,并在主机VM上使用Jenkins和一组脚本和Linux工具来执行部署逻辑。服务发现是通过bash脚本与DNS对话、来自主机文件的信息以及在部署时在容器之间传递消息的Serf来实现的。这是可行的,但也存在一些问题:需要两种部署机制:一种用于更新每个环境中的docker映像版本,另一种用于更新主机虚拟机上的工具和配置。主机上的工具和配置是"不透明的":工程师在调试时必须登录到主机,并且必须调查多个工具来发现问题。他们把这种堆积在码头主机上的现象称为"主机污染"。将Jenkins扩展到极限:如果没有大量额外的插件和自定义脚本,在多个环境中推广许多不同软件组件的不同版本被证明是不可能的。»consur的键值存储简化了环境配置的维护团队遵循12因素应用程序方法论,其中软件的每一部分(在本例中是Docker映像)与环境无关,必须在部署时了解并响应其环境。团队通过在每个环境中运行consur实例来实现这一点,并使用consur的键值存储来维护特定于环境的数据。当一个组件被部署时,它会查询本地consur实例以获取信息,包括端点位置、访问令牌和一些附加的环境配置。ASP4all的高级工程师Johan Bakker解释说:consur提供了一个易于实现和完整的功能集,可以很好地集成在集装箱环境中。我们将key/value store与conver模板结合使用,后者为puppet/chef等其他工具提供了一种轻量级的替代工具。"以前的环境配置存储在主机虚拟机的文件系统上。通过将这些信息移动到conver中,可以通过GUI或REST接口轻松地更新,并且对团队中的每个人都可见,这有助于调试。»consur提供轻量级服务发现由于Serf已经被用于在部署时在docker容器之间传递消息,所以团队选择使用consur进行服务发现。consur使用Serf的八卦协议,还具有键值存储和健康检查功能。事实证明,将consur插入现有的架构中相对轻松。领事之前的服务发现:领事后的服务发现:consur代理驻留在每个容器中,当部署新容器时,它向consur服务器注册自己集装箱consur服务器保存一个健康服务的最新注册表,可以通过DNS查询并用于服务发现。consur的web仪表板显示集群中的所有节点、它们的运行状况以及节点上活动的服务。consur的引入也让团队减少了"主机污染",也就是主机虚拟机上脚本和工具的数量,这使得系统更易于理解和调试。此外,consur仪表板允许团队快速查看给定环境的运行状况,这使得甚至无需登录主机就可以进行一些调试。»consur的key-value store是通过交付管道提升软件版本的完美解决方案DeltaForce使用典型的开发、测试、验收、生产(DTAP)管道将其软件推广到生产中。在努力让詹金斯通过他们的管道来推广他们的许多子组件的版本之后,他们决定改用consur的key/value store。如下图所示,在开发人员提交对Git的更改后,Jenkins将触发一个构建。构建的结果有两个方面:Docker映像被推送到私有注册表最新版本标记被推送到运行在所有构建机器上的consur集群。接下来将触发要测试的部署。过程如下:最新版本信息从构建集群上运行的consur键值存储区复制到测试中运行的键值存储区。测试时运行的部署脚本从本地conver服务中提取更新后的映像版本,并从Docker注册表中提取这些版本的映像。从开发到测试:这为在管道中移动版本提供了一种非常灵活的方法。它很简单,因为不需要额外的工具,consur的GUI使查看在所有环境中运行的版本变得简单。简单性通过查看该过程的下一步,ACC的部署得到了完美的说明。在测试环境中检查了最新版本之后,在部署到ACC的过程中,将遵循几乎相同的过程:最新版本信息从测试集群上运行的consur键值存储区复制到在ACC中运行的键值存储区。运行在ACC上的部署脚本从本地conver服务中获取更新后的映像版本,并从Docker注册表中获取这些版本的映像。从试验到ACC:从ACC到PROD的最终提升应该是不言而喻的。要在詹金斯实现这一点,就需要大量的额外工作。有了consur,DeltaForce团队能够相对轻松地构建一个可伸缩的、与环境无关的部署和版本升级机制。如果他们希望在部署管道中添加另一个环境,那么这项任务将是微不足道的。»摘要consur的DNS、Key/Value store和web dashboard为DeltaForce提供了一个简单的机制,可以安全地将软件交付给最终用户。通过在一个工具中整合多个功能,他们已经能够降低系统的复杂性,这有助于调试。此外,他们还能够进一步分离其系统,这带来了令人兴奋的新可能性,例如轻松地将其运行时环境拆分到多个主机上,然后实现解决方案的部分部署,从而缩短了生产时间。