简介
本课程将带我们初步了解 Jenkins X,认识 Kubernetes 在 Jenkins X 中的作用,以及 Jenkins X 的真正强大之处。
Kubernetes 作为先决条件
要理解 Jenkins X 的复杂机制和内部工作原理,我们首先需要了解 Kubernetes。然而,你并不需要掌握 Kubernetes 才能使用 Jenkins X。这正是该项目的核心贡献之一。Jenkins X 让我们能够利用 Kubernetes 的强大功能,而无需花费数月时间去学习 Kubernetes 不断扩展的各类功能。
Jenkins X 通过将复杂的流程简化为易于快速掌握的概念,帮助我们避免长时间纠结于“正确做事的方式”。它通过消除或简化 Kubernetes 及其生态系统带来的部分复杂性问题,为我们提供支持。如果你本身就是 Kubernetes 高手,你会深刻体会到 Jenkins X 所付出的努力;如果你不是,也能轻松上手,无需因 Kubernetes 的复杂性而感到挫败。
我就不赘述 Kubernetes 是一个容器编排器、如何管理部署、以及如何迅速席卷整个行业这些常识了。希望你已经了解这些内容。相反,我将 Kubernetes 定义为一个统御一切的平台。如今,大多数软件厂商都在构建下一代软件时使其原生支持 Kubernetes,或者至少在其中运行得更高效。一个庞大的生态系统正在形成,并将 Kubernetes 视作一张空白画布。结果是,每天都有新工具涌现,显现出 Kubernetes 几乎无限的可能性。但随之而来的是更高的复杂度——选择合适的工具变得越来越困难。
- 我们该如何开发应用程序?
- 如何管理不同的环境?
- 如何打包我们的应用?
- 应该采用怎样的应用生命周期流程?
- 诸如此类的问题层出不穷。
搭建一个包含所有工具和流程的 Kubernetes 集群需要大量时间和学习成本,而掌握所搭建系统的使用方法仿佛永无止境。Jenkins X 的目标正是消除这些障碍。
Jenkins X 是有明确立场的。它定义了软件开发生命周期中的诸多方面,并为我们做出决策。它告诉我们该做什么以及如何做。就像一次旅行中的导游,指引你去哪里、看什么、何时拍照、何时休息。同时,它也具备灵活性,允许高级用户根据自身需求进行定制。
Jenkins X 的真正力量
- 明确的流程,
- 工具的精选组合,
- 以及所有组件被整合成一个统一、易学易用的整体。

我们这些从事软件行业的人员,总是不断重复造轮子。我们投入无数时间思考如何更快地开发应用,如何让本地环境尽可能接近生产环境。我们花精力寻找能更高效打包和部署应用的工具。我们设计持续交付流水线的各个步骤,编写脚本自动化重复任务。然而,仍有一种感觉挥之不去:我们很可能在重复别人早已完成的工作。
Jenkins X 的设计初衷就是帮助我们做出这些决策,并为我们挑选合适工具。它是业界最佳实践的集合体。在某些情况下,Jenkins X 本身就在定义这些实践;而在其他情况下,它帮助我们采纳他人已有的最佳实践。
当我们即将启动一个新项目时,Jenkins X 会自动创建项目结构和所需文件。如果需要一个集成了所有选定工具并完成配置的 Kubernetes 集群,Jenkins X 也能帮你完成。如果需要创建 Git 仓库、设置 Webhook、建立持续交付流水线,只需执行一条 jx 命令即可。Jenkins X 能做的事情非常广泛,而且每天都在持续扩展。
我不会在此详述 Jenkins X 的全部功能,后续章节会逐一介绍。目前,我希望你已经对它产生了兴趣。关键一点是:请清空脑海中关于 Jenkins 的既有印象。当然,Jenkins 依然存在,但它只是整体方案的一部分。Jenkins X 与传统的 Jenkins 差异巨大,唯一的办法就是放下对 Jenkins 的旧有认知,从零开始重新学习。
我不想一开始就让你感到压力过大。要学习的内容很多,我们将一步步来。现在,我们需要先安装一些必要的工具。