5步实现规模化的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自

原文地址:https://blog.51cto.com/jfrogchina/2446792

时间: 2024-11-07 02:38:11

5步实现规模化的Kubernetes CI/CD 流水线的相关文章

如何使用GitLab和Rancher构建CI/CD流水线 – Part 2

这是我们使用GitLab和Rancher构建CI/CD流水线系列教程的第二部分.第一部分的内容介绍了如何部署.配置和确保GitLab在Rancher的运行.这一部分中,我们将介绍如何使用GitLab CI Multi-Runner构建容器,以及如何使用GitLab容器registry配置项目.除此之外,我们还将涉及如何用GitLab CI建立容器并部署到Rancher上. 使用GitLab CI Multi-Runner构建容器 GitLab CI是用于持续集成和持续交付的强大工具.它需要和Ra

容器平台自动化CI/CD流水线实操

CI/CD----(实操说明) CI/CD 持续集成(Continuous Integration, CI):  代码合并,构建,部署,测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment, CD): 部署到测试环境.预生产环境.生成环境. 持续部署(Continuous Delivery, CD):  将最终产品发布到生成环境.给用户使用. Jenkins与容器技术CI/CD实战 说明:这张图稍微更形象一点,上线之前先把代码git到版本仓库,然

docker与jenkins的自动化CI/CD流水线实战

docker与jenkins的自动化CI/CD流水线实战 在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署.交付(CD).本文基于Jenkins+Docker+Git实现一套CI自动化发布流程. 高效的CI/CD环境可以获得: ? 及时发现问题 ? 大幅度减少故障率 ? 加快迭代速度 ? 减少时间成本 一.发布流程设计 总结:开发===>提交代码到Git/Svn===>推送到Jenkins====>通

rancher+gitlab+appveyor 实现 CI/CD 流水线(汇总)

rancher+gitlab+appveyor 实现 CI/CD 流水线 本文主要是做一些汇总,将近期接触并弄好的一些工具整合起来,弄一套流水线,减轻一定工作压力 工具介绍 所有的组件都是使用 docker 跑的,所以一款好用的 docker 的 ui 管理工具很重要,那就是rancher.这里只是用来管理一些工具,有点屈才了 项目代码托管使用 gitlab,其内置了 CI/CD,成套使用,非常方便 appveyor 也是一个 CI/CD 解决方案,基于asp.net core开发.其内置 nu

Jenkins与Docker的自动化CI/CD流水线实战

Jenkins与Docker的自动化CI/CD流水线实战 标签(空格分隔): docker的部分 一:什么是CI/CD 二: 发布流程设计 三:部署Git仓库并上传测试代码 一:什么是CI/CD 持续集成(Continuous Integration,CI):代码合并.构建.部署.测试都在一起,不断地执行这个过程,并对结果反馈. 持续部署(Continuous Deployment,CD):部署到测试环境.预生产环境.生产环境. 持续交付(Continuous Delivery,CD):将最终产

Jenkins与Docker/Kubernetes的自动化CI/CD流水线实践--免费直播课等你来约

直播老师简介: 李振良·奇虎360-高级运维工程师,主要负责360浏览器业务运维.7年互联网运维工作经验,具备丰富的运维实战经验,曾主导容器云平台建设并将业务容器化部署 老师博客专栏地址:基于Kubernetes企业级容器云平台落地与实践 直播课内容大纲: 1.什么是CI/CD?2.Jenkins Pipeline2.Jenkins与Docker发布JAVA项目3.Jenkins与Kubernetes发布JAVA项目 直播时间: 2018年7月26日(本周四)晚8点30分--9点30分 QQ群直

如何使用GitLab和Rancher构建CI/CD流水线–Part 1

介绍 GitLab核心是集成管理Git存储库的工具.比如你希望创建一个提供服务的平台,那么GitLab将提供强大的身份验证和授权机制.工作组.问题跟踪.wiki和片段,除此之外还有公有.内部和私有存储库. GitLab强大之处在于,它包含强大的持续集成(CI)引擎和Docker容器镜像仓库,让使用者从开发到发布都使用相同的实用工具.它还有两个更强大的开源软件实用工具:Prometheus负责监控,Mattermost负责和团队沟通.该平台有着坚实的API并能和多个现有第三方系统集成,如:JIRA

jenkins自动化pipline的ci/cd流水线

pipeline { agent any tools { //工具必须预先在jenkins中预配置 maven 'mvn' jdk 'jdk' } stages { stage('Env') { steps { sh 'printenv' } } stage('git') { steps{ checkout([$class: 'GitSCM', branches: [[name: '*/develop']], doGenerateSubmoduleConfigurations: false, e

docker与jenkins的自动化CI/CD流水线实战(svn)

准备 安装完成以下环境:1.svn2.jdk3.maven4.tomcat5.jenkins 项目代码测试(php/java):https://github.com/lizhenliang 配置svn 1.查看结构 trunk:主干分支branches:其他分支tags:打标记 将代码最终打到tags目录下,打成版本号标记,然后再jenkins上发布 配置jenkins 1.新建任务 2.如果保留多个,会占用主机的磁盘空间 3.参数化构建过程,就是让你构建时选择 4.填写Pipeline若是不知