当前位置: 首页 > 科技观察

JenkinsX的“前世今生”

时间:2023-03-12 01:50:50 科技观察

【.com快译】JenkinsX是一个开源项目,为Kubernetes上的各种云原生应用提供自动化CI/CD。自去年CloudNativeFoundation(https://cd.foundation/projects/)发布JenkinsX以来,其在应用实现上的创新让越来越多的开发者愿意主动了解这项技术及其具体方面。功能。JenkinsX为开发人员提供了诸如更快的软件交付、更简单的安装和配置以及随着时间的推移增强的业务连续性等优势。在本文中,我将总结并回答一些关于JenkinsX的最常见问题,以及它的各种重要特性和优势。什么是詹金斯X?CloudBees特聘工程师、JenkinsX高级设计师JamesStrachan将JenkinsX定义为:一种开源的Kubernetes原生应用的持续交付方式,其用户无需过多关注各种底层架构。JenkinsX支持包括Amazon、Azure、Google、IBMCloud、OpenShift和Pivotal在内的主流云平台。作为Jenkins的子项目,JenkinsX通过自动化、工具化和DevOps最佳实践提高了开发速度并改进了CI/CD。通过JenkinsX,我们可以使用Kubernetes快速轻松地配置复杂的生态系统。不仅降低了系统内部操作的复杂度,还提供了简单易学的工具选择方法(https://www.cloudbees.com/blog/business-value-jenkins-x-automating-continuous-everything-库伯内特斯)。因此,JenkinsX可以确保在项目启动时,我们不必花费大量时间来创建结构,或收集所需的各种文件。如果你需要一个Kubernetes集群,你不必担心相关的安装和配置,所有的工具都可以在这个环境中自动工作。实际上,您只需在JenkinsX中输入一条jx命令(参见https://jenkins-x.io/commands/jx/),它就会创建CD管道、Git存储库并设置webhook。詹金斯和詹金斯X有什么区别?与Jenkins不同,JenkinsX经历了重塑以更好地与Docker和Kubernetes协同工作。当然,Jenkins和JenkinsX也有着密切的关系。JenkinsX可以实现的功能,Jenkins也可以通过各种插件和集成来完成。然而,JenkinsX在很多方面进行了简化。通过赋能,您可以使用Helm、Draft、Monocular、ChartMuseum、Nexus、DockerRegistry等开源工具轻松构建云原生应用。具体来说,JenkinsX直接定义了各种流程,而Jenkins则需要根据需要适配各种流程。凭借其配置即代码功能,JenkinsX采用CLI和API优先的方法,并包括Helm和Monocular等外部工具。然而,Jenkins采用了UI优先的方法。通过UI的配置,每个功能都由内部插件驱动。此外,JenkinsX预览环境使开发人员能够协同验证更改并将它们集成到基于拉取请求(PullRequest)创建的运行系统的代码库中。詹金斯X从何而来?近年来,软件开发过程已经完全改变和发展。使用DevOps,开发人员对应用程序和配置管理负有更多责任。尽管DevOps的目的是提高开发速度并降低停机风险,但对于开发人员来说,从开发角色到运营角色的转变并不总是一帆风顺。在DevOps被广泛采用和接受的同时,也给各行业带来了以下变化:还有一些问题没有解决。在这样的背景下,微服务架构应运而生。与单体应用程序不同,基于微服务的应用程序可以部署在较小的主机上,这些主机可以独立发布和扩展。如今,Amazon、eBay、PayPal和Netflix等大型企业已将其应用程序从单体架构迁移到微服务架构。容器生态系统:如今,提供操作系统虚拟化的容器也常用于解决与微服务相关的问题。在同一个主机上,因为我们可以使用不同技术和框架的容器来部署和构建不同的微服务。因此,开发者不仅可以使用自己熟悉的编程语言,还可以在容器内部封装各种依赖。同时,容器也会比只做硬件虚拟化的虚拟机(VM)更高效。可以移动容器的Docker在其Dockerhub公共仓库中有多种预配置的Docker镜像,被各大开源社区广泛使用。这些优势让容器成为云代码部署的默认选择。Kubernetes的兴起:当然,容器在管理和编排事务方面面临与VM类似的挑战。对于任何组织而言,为了充分利用从云服务提供商处购买的内存、CPU或存储空间,他们需要具备自动移动容器的能力,从而提高效率并优化各种操作。谷歌通过开源解决方案Kubernetes简化了容器的安装、升级和编排。与其他云服务提供商的容器编排解决方案相比,Kubernetes提供了一个通用平台,能够处理所有类型的云服务,甚至一些内部基础设施容器。但是,上述工具通常是为特定问题的一小部分构建的。因此,面对各种各样的生态系统,开发者往往无法选择最适合自己的CI/CD工具。他们通常需要花时间了解甚至调整他们的CI/CD设置,而不是真正的开发。可以看出,他们渴望有一种直接的方法来管理Kubernetes集群,并在生产环境中有效地监控Kubernetes。话虽如此,虽然Jenkins可以帮助开发者充分利用Kubernetes的CI/CD设置,但要选择真正能够与代码及其配置协同工作的插件组合并不容易。因此,很少有开发人员会认为设置Jenkins流水线是在Kubernetes上实现CD的最佳实践。面对这些挑战,开源社区开始考虑改进Jenkins以方便在云端自动实现KubernetesCI/CD,由此催生了JenkinsX项目(https://jenkins-x.io/)。JenkinsX的主要特点是什么?遵循DevOps最佳实践,JenkinsX是为开发人员创建的,以加速代码的转换。可以提供预览环境,简化DevEx集群的创建,可以运行在不同云服务商的集群环境中。使用JenkinsX的最大优势在于,开发者无需深入了解Kubernetes的内部结构,即可立即上手其生态系统。由于所有组件都已经在Git中进行了版本控制,如果我们需要自定义安装以适应特定的环境或工作流程,我们可以对底层的Docker文件、JenkinsX管道、Jenkins文件和Helm图表进行调整。以下是社区中经常提到的JenkinsX的主要特性:自动化CI/CD:JenkinsX提供了一套完整的jx命令行工具,允许用户在现有或新的Kubernetes集群上安装JenkinsX,通过导入每个项目中,最终导致新的应用程序。此外,JenkinsX可以为各种项目自动创建流水线。GitOps改进的环境:JenkinsX允许用户使用Kubernetes命名空间为研发、后续阶段和生产创建不同的虚拟环境。每个环境都可以访问特定配置、应用程序版本控制列表以及存储在Git存储库中的配置。在这些环境之间,应用程序可以通过遵循GitOps(https://www.cloudbees.com/blog/gitops-dev-dash-ops)的各种实践来提升新版本(向Git环境生成拉取请求),以自动完成.此外,开发人员可以手动将代码从一个环境提交到另一个环境,并根据需要更改或配置新环境。预览环境:虽然用户可以手动创建预览环境,但JenkinsX也会为每个pullrequest自动创建预览环境。这样,用户可以在合并前预览更改的效果。此外,JenkinsX添加了带有拉取请求链接的评论,以便于预览。您可以点击链接了解更多关于JenkinsX的特性。JenkinsX的五个优势是什么?易于设置:JenkinsX提供了针对不同类型项目的构建包、自动化安装以及用于配置和升级的外部工具(包括:Helm、Skaffold和Monocular等)。开发者不仅可以通过单行jx命令实现快速启动,还可以按需掌握JenkinsX内部流水线状态。隔离:每个团队都可以运行自己的JenkinsX实例,无论是在共享集群中还是在单独的集群中。其中,在共享集群中,每个团队不仅可以拥有自己的命名空间,有效共享资源,还可以拥有与其他团队不同的管道、数据流和配置。在一个单独的集群中,每个团队都有自己的一组资源,完全独立于其他团队的工作流程。更快的速度:为了加快开发进程,JenkinsX提供了强大的命令集来加速各种任务,并提供与云端或SCM的无缝集成。例如:我们可以使用简单的命令“jxcreateclustergke”在GoogleCloud上安装JenkinsX。如果参数改为eks,则适用于AWS。同样,aks可以在Azure中使用,oke可以在Oracle中使用。此外,各种应用程序的代码,以及容器、包和管道的支持文件都可以存储在一个公共库中,开发者可以开箱即用。更快的恢复:GitOps创建单一的“真相”来源,以确保每个拉取请求都能获得代码的相应版本和注释。通过JenkinsX和用户环境中的配置即代码,开发人员可以获得正确的上下文和可追溯的信息,从而更快地解决中断问题。可预见的版本:JenkinsX使用“jxcreatedevpod”命令创建各种开发和测试环境,让开发者可以在JenkinsX集群中得到自己的沙箱。由于开发构建环境中的pod与生产管道中的pod相同,因此它确保代码以可预测的方式执行。此外,JenkinsX还有助于在代码提交到生产环境之前启动预览环境。综合起来,所有这些特性都有助于开发人员交付稳定的程序代码。原标题:关于JenkinsX你需要知道的一切,作者:ParkerEnnis