首页 > 科技 > 正文
Qzone
微博
微信

GitLab|云原生计算基金会(CNCF)的 CI/CD 解决方案探索之路

科技 TOM    2021-09-13 11:02

提到云原生,就不能不介绍云原生计算基金会,云原生计算基金会(CNCF)是Linux基金会旗下最大的开源子基金会,也是目前 Linux 基金会下面最受关注和发展最快的基金会,其使命是创造和推动采用新的计算模式,即云原生计算,来助力企业在云计算模式下更好的构建可扩展的应用程序。作为云原生运动的倡导者,CNCF致力于通过对开源项目的管理来促进云原生系统的增长和发展,包括确保技术的可用性、可访问性、集成性和可靠性。CNCF目前托管了几十个开源项目,如Kubernetes、Prometheus和CoreDNS。CNCF的仪表板可以显示最新版本和最新开发版本(即头版)的每日状态,其中最新版本首次包括了Linux基金会的开放网络自动化平台(ONAP)项目。

 GitLab|云原生计算基金会(CNCF)的 CI/CD 解决方案探索之路

由Camille Fournier领导的CNCF持续集成(CI)工作组的成立,是为了加强CNCF所有项目之间的合作,并展示在CNCF生态系统内集成、测试和部署项目的最佳实践。每个CNCF项目都已经有了自己的CI系统,并在每次提交时运行。然而,基金会对于通过一个单独的 CI 系统来改善内部所有项目之间的兼容性这件事情是非常有兴趣的。

为了改善跨项目和跨云的整合,CNCF资助了CI工作组内的跨云CI项目。在Denver Williams和Chris McClimans的领导下,跨云CI项目被授权持续测试每个CNCF项目的互操作性,对于每一个提交,跨越多个云供应商,并将结果都发布在一个公共仪表板。

面临的挑战:整合和管理多个项目和云供应商的复杂性

CNCF经历了许多项目的大规模采用,然而其中相当多的项目没有持续集成(CI)解决方案。除了每个项目需要一个持续集成工具外,他们还需要找到一种方法让所有的项目进行互动。"我们需要能够在管道之间进行跨项目互动。“Williams说道,"CoreDNS流水线必须与Kubernetes流水线互动。"

由于每个项目都有自己的管理、互动风格和创建版本的方式,CNCF不能强加一个特定的CI并强制每个项目参与,所以他们需要一个统一的CI解决方案来整合所有的项目,即使项目创建者不打算积极参与配置CI。

最初,他们在寻找一种方法,让不同的小组可以很容易地将CI工具添加到他们的项目中,使他们能够将解决方案与团队的其他成员和CNCF的其他成员整合起来,然而,当意识到试图管理所有不同小组的复杂性时,他们需要找到一个方法来解决这个问题。为了达到所期望的集成和互操作性水平,McClimans和Williams意识到他们需要一个解决方案,即要有一个内部的Docker注册表来存储容器,一个制品存储,与CI/CD系统直接联系的git集成,并且能够跨项目触发CI流水线。

"最初的愿望是每个 repo 拥有一个不需要设置Jenkins的环境配置,但可以处理跨项目配置的管理复杂性。设置和使用GitLab要简单得多,"McClimans说。"我们需要一些容易上手的东西,这样他们就能以一种有意义的方式一起协作。"

结果:灵活的、易于使用的、统一的CI/CD系统,用于采用跨项目的协作和最佳实践

从一个简单的yaml配置文件开始,McClimans和Williams能够让持续集成测试在不同的CNCF项目上运行。然后,利用GitLab的多项目流水线图,他们能够用流水线触发器将项目整合在一起,使他们能够在一个单一的视图中,看到上游和下游的依赖关系以及连接项目之间的关系。"在每次提交时存储制品,并扩展到在提交时存储我们的容器,使我们在流水线的末端有一个二进制文件和Docker容器的集合。”McClimans说:"有了这个,我们就可以传递并触发另一个项目。这对我们能够进行跨项目配置并将其传递给所有项目的跨云CI至关重要。如果没有多项目流水线,我们就不能很好地做到这一点。"

展示各项目结合并通过测试的初始流水线,是展示CNCF各项目和团队如何合作的良好第一步。"GitLab为我们提供了一个非常直接的基础,"McClimans说。"这是很难得到的,通常来讲,这是需要经过超级定制的,而且使用起来也是很复杂的"

接下来,该小组不需要强加自定义配置就能够展示每个项目的部署最佳实践。使用特定的环境变量,McClimans和Williams就可以以标准的方式构建,并重复使用上游测试,而不必创建一个自定义的构建解决方案。"Williams说:"当有人在CoreDNS repo上提交变更并想进行部署时,我们需要能够准确地确定CoreDNS将被部署到哪个类型的集群环境上。"特定的环境比安康使我们能够实现这件事。"

另外,选择GitLab作为他们的CI/CD解决方案,使CNCF能够开发一个集成的流水线,而不需要大量的定制,也不需要迫使从事特定项目的开发人员改变他们的工作流程。在特定项目上工作的开发者现在可以很容易地提供正确的环境来测试对他们的项目所做的改动,以及该改动对其他CNCF项目的影响,而无需改变他们的工作流程。

"让你的社区专注于他们自己的项目,同时也为他们提供与其他项目相结合的能力,是一个困难的问题。”McClimans说:"有一个像CNCF CI工作组这样的团体来提供指导,并进行对话,使每个团队都知道他们在更大的团体中的位置和背景,这是我们在与CNCF的不同团体交谈时仍需解决的问题。在我们进行了这些对话之后,GitLab很快就为我们提供了一些有意义的东西,并展示了成果。作为一个 DevOps 和 CI 人员,在我的职业生涯中,我从未见过有如此迅速的行动。”

开源,是非常重要的

跨云CI项目是同类项目中的第一个,该项目提出了新的问题,并要求解决那些没有已知答案的具体问题。对于McClimans和Williams来说,拥有一个开放和灵活的平台,拥有一个活跃的贡献者社区,对他们的成功至关重要。McClimans认为,他们需要的一些功能虽然还没有出现,或者说还没有完全进入GitLab的视野,但我们能够修改源代码,来建立自己的EE版本,从而拥有这些需要的功能。这确实为项目的成功做出了贡献。毕竟,一个公司提供他们的企业源代码供他人使用的情况并不多见。"

最后的建议

最后,对于正走在这条路上探索的人,Taylor Carpenter也给出了一些建议:"在你自己构建所有的东西之前,看看你是否可以使用现有工具进行原型设计。从这个角度来看,你可能会发现像GitLab这样的工具,而不是拿着另一个工具说:它工作得很好,能让我构建其他缺少的东西,也不是发现GitLab具有所有这些你能够使用的其他的功能,并且能够配置并组合起来,让项目在能够进行的情况下尽可能地进行。”

责任编辑: WY-BD

责任编辑: WY-BD
人家也是有底线的啦~
广告
Copyright © 2018 TOM.COM Corporation, All Rights Reserved 雷霆万钧版权声明
违法信息/未成年人举报:010-85181169     举报邮箱/未成年人举报:jubao@tomonline-inc.com