37

Jenkins X的“前世今生”

 4 years ago
source link: https://www.tuicool.com/articles/7fu6VbZ
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【51CTO.com快译】Jenkins X是一个开源项目,它为Kubernetes上的各种云原生应用提供了自动化的CI/CD。自从云原生基金会(https://cd.foundation/projects/)去年发布了Jenkins X以来,它在应用实现上的创新,让越来越多的开发人员愿意主动了解此项技术及其具体的功能。

7VZzUjZ.jpg!web

Jenkins X能够给开发人员带来诸如:更快的软件交付版本,更简单的安装与配置,以及随着时间的推移,不断增强的业务连续性等优势。

在本文中,我将总结并回答一些关于Jenkins X的最常见问题,以及它的各种重要特性与优势。

Jenkins X是什么?

CloudBees公司的杰出工程师、及Jenkins X的首席设计师,James Strachan将Jenkins X定义为:针对Kubernetes原生应用的一种开源式持续交付的方式,其用户不必过于关注各种底层的架构。Jenkins X支持包括Amazon、Azure、Google、IBM Cloud、OpenShift、以及Pivotal等主流云平台。作为Jenkins的一个子项目,Jenkins X通过自动化、工具化和DevOps的最佳实践,提高了开发的速度,并改进了CI/CD。

有了Jenkins X,我们便可以轻松快捷地使用Kubernetes来配置复杂的生态系统。它不但在系统内部减少了操作的复杂性,还提供了简单易学的对于工具的选择方法(https://www.cloudbees.com/blog/business-value-jenkins-x-automating-continuous-everything-kubernetes)。因此,Jenkins X可以确保在项目启动时,我们不必花费大量的时间去创建结构、或收集所需的各种文件。如果您需要一个Kubernetes集群的话,那么就不必担心相关的安装与配置,所有的工具都能够自动化地工作在该环境之中。事实上,您只需要在Jenkins X中输入一条jx命令(请参见https://jenkins-x.io/commands/jx/),它就能创建出CD管道、Git存储库、以及设置好webhookes。

Jenkins和Jenkins X有什么区别?

不同于Jenkins,Jenkins X经历了重塑,能够更好地与Docker以及Kubernetes协同工作。当然,Jenkins和Jenkins X也有着密切的相关性,那些Jenkins X能够实现的功能,Jenkins通过使用各种插件与集成,也能完成。不过,Jenkins X在许多方面都进行了简化。通过赋能,您可以使用Helm、Draft、Monocular、ChartMuseum、Nexus、以及Docker Registry等开源工具,来轻松地构建云原生应用。

具体说来,Jenkins X直接定义了各种过程,而Jenkins则需要去按需适应各种过程。凭借着配置即代码(Configuration-as-Code)的特性,Jenkins X采用了CLI和API优先的方法,并包含了诸如Helm和Monocular等外部工具。然而,Jenkins采用的是UI优先的方法。通过UI的配置,各项功能都是由内部插件来驱动的。此外,Jenkins X的预览环境能够让开发人员协同验证各种变更,并集成到那些基于拉取请求(Pull Request)所创建的运行系统的代码库中。

Jenkins X由何而来?

近几年来,软件开发过程得到了彻底的变化与发展。通过使用DevOps,开发人员在应用程序与配置管理方面的责任增强了许多。虽然DevOps的宗旨是提升开发的速度、降低宕机的时间风险,但是从开发角色转变为运营角色,对于开发人员来说并非总是一帆风顺。DevOps在被广泛采用与接纳的同时,也给各个行业带来了如下变革:

微服务体系结构:虽然公共云、私有云和混合云的部署模式,已在业界广为推行,但是对于应用程序的部署、管理和更新,仍存在着尚未解决的问题。在此背景下, 微服务架构 应运而生。与单体应用不同,基于微服务的应用程序可以被部署到较小的、可独立发布与扩容的主机上。如今,Amazon、eBay、PayPal和Netflix之类的大型企业,都将应用程序从单体模式(monolithic)迁到了微服务架构中。

容器生态系统:如今,提供操作系统虚拟化的容器,也被普遍地应用到了解决与微服务相关的问题上。在同一台主机里,由于我们能够使用具有不同技术与框架的容器,来部署和构建不同的微服务。因此开发人员既可以使用他们所熟悉的编程语言,又能够在容器的内部封装各种依赖关系。同时,容器也会比仅做硬件虚拟化的虚机(VM)更加高效。而能够移动容器的Docker,在其Dockerhub的公共存储库中拥有着预先配置好的各种Docker镜像,它们可供各大开源社区广泛地使用。这些优势都使得容器成为了云端代码部署的默认选择。

Kubernetes的崛起:当然,容器在管理和编排事务方面却面临着与VM相似的挑战。对于任何组织来说,为了合理地利用好从云服务商处购置来的内存、CPU或存储空间,他们需要具有自动化移动容器的能力,进而提升效率并优化各种操作。Google就是通过Kubernetes这种开源的解决方案,简化了容器的安装、升级和编排。与其他云服务商的容器协调方案相比,Kubernetes提供了一个通用的平台,能够处理所有类型的云服务,甚至是一些内部基础架构的容器。

然而,上述工具往往是针对某个特定问题的一小部分所构建的。因此,面对各种玲琅满目的生态系统,开发人员经常无法选择出最适合自己的CI/CD工具。他们往往需要将时间花费在了解、甚至是调整自己的CI/CD设置上,而不是真正的开发之中。可见,他们渴望有一种直截了当的方法,来管理Kubernetes集群,并对生产环境中的Kubernetes进行有效的监控。

话说回来,虽然Jenkins可以帮助开发人员充分地利用Kubernetes的CI/CD设置,但是在选择真正能够与代码协同工作的插件组合、及其配置方面可并不轻松。因此,很少有开发者会认为:建立Jenkins管道是在Kubernetes上实现CD的最佳实践。

面对这些挑战,开源社区开始考虑通过改进Jenkins,来方便在云端自动化地实现Kubernetes的CI/CD,这便催生了Jenkins X项目(https://jenkins-x.io/)。

Jenkins X的主要特点是什么?

遵循DevOps最佳实践的Jenkins X是为开发人员所创建的,它旨在加快代码的转化。它可以提供预览的环境,简化DevEx的集群创建,并能够运行在不同云服务商的集群环境之中。使用Jenkins X的最大优点是:在无需对Kubernetes的内部构造深入了解的情况下,开发人员便可以立刻上手其生态系统。由于所有的组件都已经在Git中被版本化了,因此如果需要通过定制安装,以适应特定的环境或工作流的话,我们可以对底层的Docker文件、Jenkins X管道、Jenkins文件、以及Helm图表进行调整。下面是社区里经常提及的Jenkins X的主要特征:

自动化CI/CD:Jenkins X提供了一整套jx命令行工具,允许用户将Jenkins X安装在现有的或全新的Kubernetes集群上,通过导入各个项目之中,进而最终引导到新的应用里。此外,Jenkins X还能够为各种项目自动地创建管道。

GitOps改进环境:Jenkins X允许用户使用Kubernetes的命名空间,来创建不同的虚拟环境,以用于研发、后续阶段、以及产品之中。每一种环境都能够获取到特定的配置、应用版本化的列表、以及存储在Git库里的配置。在这些环境之间,应用对于新版本的promotion(对Git环境产生拉取请求),能够通过遵循GitOps的各种实践(https://www.cloudbees.com/blog/gitops-dev-dash-ops),来自动完成。此外,开发人员也能够手动将代码从一个环境提交到另一个环境,并按需改变或配置新的环境。

预览环境:虽然用户可以手动创建预览的环境,但是Jenkins X也会自动为每个拉取请求创建一个预览环境。籍此,用户可以在合并之前,就预览到变更的效果。此外,为了方便预览,Jenkins X还会为拉取请求添加一个带有链接的注释。

您可以通过 链接 ,来了解更多有关Jenkins X的特点。

Jenkins X有哪5大优势?

易于设置:Jenkins X为不同类型的项目提供构建包、自动化安装、以及用于配置和升级的外部工具(包括:Helm、Skaffold和Monocular等)。开发人员不但能够通过单行的jx命令实现快速启动,而且可以按需掌握Jenkins X的内部管道状态。

隔离性:无论是在共享的集群中,还是在相互独立的集群里,每个团队都能够运行自己的Jenkins X实例。其中,在共享的集群中,每个团队不但可以拥有自己的命名空间、能有效地共享资源,而且拥有与其他团队不同的管道、数据流和配置。而在单独的集群里,每个团队都能得到自己的一组资源,完全不会受到其他团队工作流的影响。

更快速度:为了加速开发的进程,Jenkins X提供了强大的命令集来提速各项任务,并提供了与云端或SCM的无缝集成。例如:我们可以使用“jx create cluster gke”这一简单的命令,在Google云上安装Jenkins X。如果将参数改为eks则适用于AWS。同理,在Azure中可以使用aks、而Oracle里则可使用oke。此外,各种应用程序的代码、以及与容器、包、管道的配套文件,都可以被存储在一个公共的库中,开发人员开箱即用(out of the box)便可。

更快恢复:GitOps创建了单一的“真相”源,以保证每一次拉取请求都能够得到代码所对应的版本与注释。通过Jenkins X和用户环境中的配置即代码,开发人员能够获取正确的上下文、和可追踪的信息,进而更快地解决各种中断问题。

可预测版本:Jenkins X通过“jx create devpod”命令,来创建各种开发与测试环境,以便开发人员在Jenkins X集群中获取自己的沙箱。由于开发构建环境中的pod与生产环境中管道里的pod相同,因此,它能够确保代码以一种可预测的方式被执行。此外,在代码被提交到生产环境之前,Jenkins X还有利于预览环境的spin up。总的说来,所有这些特性都有助于开发人员交付出稳定的程序代码。

原文标题:All You Need to Know About Jenkins X,作者:Parker Ennis

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK