一、背景
在近几年,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自动化流水线。该方案在保证应用构建和交付的快速、安全、可重复的同时,还能为所有交付的应用提供完整的可审核性和可追溯性。