DockerCon 黑客马拉松:连续 Dockery

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

去年, 团队 electric cloud 参加了第一届年度 dockercon hackathon,并作为提交的前三名之一获胜。今年, nikhil 和我回到了一个更大、更糟糕的黑客马拉松活动,这是 docker 巨大增长的证据。

怎么运行的

40 多个由 1-10 名黑客组成的团队花了 24 小时从头开始研究一个项目。提交类别:

  1. 使用 docker 构建、发布和运行很棒的应用程序
  2. 管理和运营:日志记录、监控、ui / kitematic、开发人员工具、部署、ci / cd、stats 等
  3. 编排:组合、调度、集群、服务发现、高可用性、负载均衡等
  4. 安全、合规和治理:授权、出处、分发等
  5. 资源:网络、存储 API 等

每个人提交一段2分钟的视频,并选出10支队伍进行展示。从出席的人中,评委选出前 3 名作为获胜者。

我们的计划

电子云的存在是为了帮助人们更快地交付更好的软件。我们想展示 docker 如何与软件交付生态系统中的其他工具相适应。作为我们自己软件的专家,我们决定使用电子云产品将所有东西联系在一起—— 加速端到端的持续交付 ,使用:

  • electricflow—— 一种编排工具,充当从提交到生产的单一管理平台
  • electricaccelerator – 一种加速工具,通过将构建和测试分布在 cpu 集群中来显着加速构建和测试

去年的参赛作品 侧重于持续交付管道的 构建 阶段。今年,我们专注于 整合 阶段。

我们构建了一个部署流程:

  1. 在 ec2 或 openstack 上动态启动虚拟机
  2. 运行 docker bench 进行安全测试
  3. 从 bintray 和 docker hub 检索工件
  4. 建立运行应用程序的链接 mysql 和 wildfly 容器
  5. 运行分布在集群中的 selenium 测试
  6. 将一些统计数据推送到仪表板
  7. 如果测试成功,则自动拆除虚拟机。


部署过程和涉及的各种技术

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 和我一起参加即将举行的网络研讨会,届时我们将讨论:

相关文章