共计 3305 个字符,预计需要花费 9 分钟才能阅读完成。
本篇文章为大家展示了如何实现规模化的 Kubernetes CI/CD 流水线,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
一、背景
在近几年,Kubernetes 迅速成为了容器编排的事实上的开源标准。与虚拟机不同,Kubernetes 在抽象化基础架构的同时可靠地大规模编排容器,这可以帮助开发人员将工作负载与基础架构的复杂性分开。Kubernetes 是 CI/CD 自动化的理想选择,因为它提供了许多内置功能,这些功能使应用程序部署实现标准化和可重用,提高了开发人员的生产力,并加快了云原生应用程序的采用。
Platform9 是成立于 2013 年的云服务提供商,能够提供业界唯一由 SaaS 管理的混合云解决方案,使用户能够快速采用云技术并在私有部署或公共云中的任何基础架构上一致地管理 VM、Kubernetes 和无服务器功能。Platform9 提供的 Kubernetes 解决方案也是业界的佼佼者。
在 2019 年巴塞罗那举行的 KubeCon + CloudNativeCon 大会上,Platform9 与 1000 多名与会者进行了互动,有近 500 名与会者参与了 Kubernetes 的相关调查。下图列出了关于最常见的 Kubernetes 应用场景的调查结果:
其中,基于 Kubernetes 的 CI/CD 自动化是最为广泛的用例,专注于帮助开发人员更快地构建和交付应用程序。但是,在具有全自动和可重复的 CI/CD 流水线的生产环境中运行 Kubernetes(k8s)以及持续的安全检查会带来新的挑战,包括集成的复杂性,持续的产品更新 / 回滚、自运维、生命周期管理等等。
解决这些挑战并没有想象中的困难,本文将介绍 Platform9 如何利用 JFrog 的产品在 Kubernetes 上快速实现 CI/CD 自动化并将其推广到整个组织的方法。
二、使用 Artifactory 和 Helm 的 5 步 Kubernetes CI / CD 流水线
在 Platform9 提供的方案中,JFrog Artifactory 作为微服务的 Docker 注册表(或多个注册表),是构建 CI/CD 流水线不可或缺的一部分。同时,使用 Artifactory 作为 Helm Chart 存储库,进一步使该制品管理仓库能够提供将容器部署到 k8s 集群所需的所有集成资源。
Artifactory 还可以作为远程依赖的代理仓库,例如 npm、Maven、Gradle 和 Go 等,实现安全的 Kubernetes 注册表,使您能够跟踪系统中端到端的内容、依赖关系,以及与其他 Docker 镜像的关系。
5 步实现 Kubernetes CI/CD 流水线:
· 步骤 1. 使用 Artifactory 中代理的注册表来开发微服务。生成的应用程序包可以是.war 或.jar 文件;
· 步骤 2. 在 Ubuntu 上使用 Tomcat 和 Java- 8 创建 Docker 框架作为基础镜像。将此镜像推送到 Artifactory 中的 Docker 注册表中,JFrog Xray 也会对其进行扫描,以确保安全性和许可证合规性。
· 步骤 3. 通过将.war 或.jar 文件添加到 Docker 框架中,为微服务创建 Docker 镜像,将该镜像推送到 Artifactory 中的 Docker 注册表中,并通过 Xray 对其进行扫描。
· 步骤 4. 为微服务创建 Helm Chart,并将其推送到 Artifactory 中的 Helm 存储库。
· 步骤 5. 使用 Helm Chart 将微服务从安全的 Docker 注册表部署到 Kubernetes 集群。
在上述流水线当中,除了负责制品仓库管理,Artifactory 还可以提供质量的可审核性,因为它捕获了整个 CI/CD 流程中产生的所有大量有价值的元数据,包含:
· 构建和环境信息
· 模块的依赖关系
· CI 服务器,如 Jenkins,提供的相关信息
· 发布模块及其依赖的详细许可证分析
· 发布历史信息等
使用 Artifactory,可以跟踪负责生成应用程序层(例如 WAR 文件)的 CI 任务,该应用程序层是 Docker 镜像层的一部分。通过比较两次构建,可以显示构建之间的差异,从而轻松跟踪哪个构建发布到了 Docker 镜像的哪个层,近而继续跟踪到代码的提交。
三、流水线特性解析
3.1 JFrog Artifactory 和 Xray 确保软件交付的自动化
Artifactory 是一个通用的制品仓库管理平台,无论组织中的微服务在哪里运行,它都可以满足所有 CI/CD 的需求。Artifactory 通过提供完全的 Docker 兼容性,使开发人员能够将容器化的微服务部署到 Kubernetes 集群中。将应用程序包推送到 Artifactory 仓库后,您可以在开发、测试和发布阶段继续验证和升级您的容器,最后将其部署到 Kubernetes 中的生产集群。如之前的分析,Artifactory 还为所有应用程序包提供了完整的可审核性和可追溯性。
JFrog Xray 对 Docker 镜像执行深度递归扫描,并识别所有层和依赖项中的安全漏洞。它还会检查以确保所有软件组件的许可证均符合组织的策略。这有助于阻止易受攻击且不合规的软件投入生产。而且,Xray 提供的持续扫描能力,可以确保发现新问题或更改策略时的持续安全性。
3.2 Helm Charts 使 CI/CD 工具部署自动化
一旦您的 Kubernetes 基础架构启动并运行,Kubernetes Helm 便使您能够通过轻松安装、更新和删除来快速可靠地配置容器应用程序。它为开发人员提供了一种打包应用程序并与 Kubernetes 社区共享的工具。它使软件供应商只需按一下按钮即可提供其容器化的应用程序。通过一个命令或单击几下鼠标,用户就可以为开发测试或生产环境安装 Kubernetes 应用程序。大多数流行的 CI/CD 工具集都可以通过 Helm chart 获得。
Platform9 应用目录为 Helm 图表提供了易于访问的按钮式部署。您可以使用 App Catalog UI 来选择和部署您喜欢的 CI/CD 流水线工具(例如,Jenkins、Spinnaker、Artifactory、Xray 等)。您可以搜索,一键部署或配置它。(图三)
四、Platform9 的托管 Kubernetes 服务消除了操作复杂性
如果您要解决的主要业务问题,与提高开发人员的生产力,将软件更快地推向市场,以及在生产环境中运行可靠的应用程序有关,那么您是否值得花时间处理运维 Kubernetes 的麻烦和复杂性?您是否拥有人员和技能来工作和运维大型 Kubernetes 集群?
运维您自己的大规模 Kubernetes 基础架构令人生畏。错误选择的后果是持久的,并且会影响应用程序的可用性、性能和敏捷性。虽然在短期内内部构建解决方案可能会更便宜,但您的设计质量可能较低,或者存在一些缺陷。这些缺陷在您投入生产后才会意识到,从而最终会花费更多的钱。
虽然安装和管理 Kubernetes 不会推动业务向前发展,但快速为客户部署新的应用程序和版本却可以。对于开发人员,Kubernetes 的最终用户,平台可用性是关键。他们不在乎是谁建造它或如何建造它的:他们只是想动手实践它,并使其运转良好。
尽管开发人员不关心集群的实现细节或其运维状态,但是仍然需要有人进行运维工作以确保集群是最新、健康且安全的。Platform9 管理您的 Kubernetes 环境,为您提供全自动运维,并在裸机、VMware、公共云或边缘节点上实现 99.9%的 SLA。这使您的 DevOps 团队可以腾出时间专注于重要的事情:通过更快地构建更好的应用程序来响应客户需求。(图四)
通过上述 Platform9 推荐的解决方案来看,基于 JFrog 的 Artifactory 和 Xray,结合 Helm Chart,能够方便、快捷、清晰地搭建适用于规模化 Kubernetes 集群的 CI/CD 自动化流水线。该方案在保证应用构建和交付的快速、安全、可重复的同时,还能为所有交付的应用提供完整的可审核性和可追溯性。
上述内容就是如何实现规模化的 Kubernetes CI/CD 流水线,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。