去年, 团队 electric cloud 参加了第一届年度 dockercon hackathon,并作为提交的前三名之一获胜。今年, nikhil 和我回到了一个更大、更糟糕的黑客马拉松活动,这是 docker 巨大增长的证据。
怎么运行的
40 多个由 1-10 名黑客组成的团队花了 24 小时从头开始研究一个项目。提交类别:
- 使用 docker 构建、发布和运行很棒的应用程序
- 管理和运营:日志记录、监控、ui / kitematic、开发人员工具、部署、ci / cd、stats 等
- 编排:组合、调度、集群、服务发现、高可用性、负载均衡等
- 安全、合规和治理:授权、出处、分发等
- 资源:网络、存储 API 等
每个人提交一段2分钟的视频,并选出10支队伍进行展示。从出席的人中,评委选出前 3 名作为获胜者。
我们的计划
电子云的存在是为了帮助人们更快地交付更好的软件。我们想展示 docker 如何与软件交付生态系统中的其他工具相适应。作为我们自己软件的专家,我们决定使用电子云产品将所有东西联系在一起—— 加速端到端的持续交付 ,使用:
- electricflow—— 一种编排工具,充当从提交到生产的单一管理平台
- electricaccelerator – 一种加速工具,通过将构建和测试分布在 cpu 集群中来显着加速构建和测试
去年的参赛作品 侧重于持续交付管道的 构建 阶段。今年,我们专注于 整合 阶段。
我们构建了一个部署流程:
- 在 ec2 或 openstack 上动态启动虚拟机
- 运行 docker bench 进行安全测试
- 从 bintray 和 docker hub 检索工件
- 建立运行应用程序的链接 mysql 和 wildfly 容器
- 运行分布在集群中的 selenium 测试
- 将一些统计数据推送到仪表板
- 如果测试成功,则自动拆除虚拟机。
部署过程和涉及的各种技术
24 小时内有很多事情要做!但我们已经准备好完成这项任务——这张图的不太漂亮的版本被鸡在一张纸上划破了,我们开始工作了!
我们建造了什么
我们选择了一个名为 heat clinic 的示例 Web 应用程序,因为它有几个移动部件(应用程序服务器和数据库),这使它成为一个比较现实的示例。我们从构建 持续交付管道开始。
electricflow 中定义的持续交付流水线
对于这次黑客马拉松,我们专注于集成阶段。尽管如此,了解管道是什么仍然很重要——以确保自动化部分是 可重用的 ,并且了解它们将如何被重用是关键。牢记这一点,我们构建的所有内容都可以毫不费力地插入生产(或任何其他阶段)。
下一步是 为应用程序建模 。 Heat Clinic 应用程序有两层,一层用于 Web 应用程序,一层用于数据库。每个层都有一些不同的组件(工件)——来自 docker hub 的 wildfly/mysql 容器、web 应用程序的 war 文件、配置文件、sql 初始化脚本等。我们定义了层、组件和过程部署或取消部署这些组件中的每一个。
electricflow中定义的应用模型
接下来,我们定义了 协调一切的部署过程 。这个过程与前面显示的图表密切相关:启动动态环境,运行安全测试,检索所有工件,建立容器(以正确的顺序),运行 selenium 测试,如果一切正常则拆除环境是成功的。
electricflow中定义的部署过程
我们放在一起的 selenium 套件需要很长时间才能运行,我们意识到这对于 selenium 来说并不少见。所以我们使用 electricaccelerator 加速了 selenium 测试套件 。通过将 101 个测试分布在两个 4 核虚拟机上,Accelerator 使用其 获得专利的秘方 在各个内核上并行化和运行测试,从而将总时间从 >27 分钟减少到 <4 分钟。只需 2 台机器,速度就快了 7 倍!如果我们要向集群添加更多虚拟机,我们可以将时间缩短到 <30 秒 。那 快了 60 倍!
可视化 electricaccelerator 如何在集群中分布 selenium 测试
最后,我们通过将一些关键统计数据推送到 dashing 来为我们的工作画上漂亮的脸——通常显示在电视屏幕上,这样每个人都可以“一目了然”地了解系统的健康状况。
仪表板显示关键统计数据
我们的提交
虽然这次我们没有获胜,但我们确实提出了一个非常酷的故事和一组工作集成 ,在持续交付的背景下突出了 docker 。以下是我们希望解决的痛点:
- 你在看 docker 但需要 将它与一堆现有工具结合在一起
- 您希望通过实施持续交付和持续测试来 提高速度
- 您需要为您的应用程序收集和显示 关键统计数据
- 您想确保尽早 审核安全性
- 您想 尽早并经常运行长时间运行的集成测试
在我们提交的 3 分钟短视频中查看整个流程:
我们已经在期待明年的 dockercon 黑客马拉松。届时看看快速变化的 docker 格局会很有趣!
如何将 docker 集成到你的 cd 管道中?
像 docker 这样的容器技术承诺可以快速提供版本化、环境无关的应用程序服务。然而,创建、验证、推广和交付 Docker 容器到生产环境中所涉及的任务和工具很多、复杂且耗时。
要了解更多关于如何成功地将 docker 作为端到端持续交付管道的一部分的信息,我邀请您与我的同事 nikhil vaze 和我一起参加即将举行的网络研讨会,届时我们将讨论: