近年来,随着云计算和 DevOps 的不断发展,CI/CD(持续集成/持续交付)已成为团队开发中的重要环节。虽然现在有很多成熟的 CI/CD 工具,但许多企业已经开发了自己的 CI/CD 平台,以满足特定需求或者提升自己的技术竞争力。
对于前端开发来说,CI/CD 平台不仅能提高代码质量和开发效率,还可以提升团队合作和协作能力。本文将介绍如何利用 Kubernetes 构建前端 CI/CD 平台,重点介绍 Pipeline 和 Jenkins 的使用。
Kubernetes 介绍
Kubernetes 是一个开源的容器编排平台,可以帮助开发者部署、扩展和管理容器化应用。Kubernetes 可以让应用程序更加稳定、高效地运行,并且可以快速响应更改。它提供了许多功能,例如:
- 自动化部署、扩展和管理容器化应用。
- 提供强大的容器隔离和负载平衡功能。
- 支持无缝水平扩展,更好地利用计算资源。
- 提供故障自愈机制。
Kubernetes 提供了一种新的构建方式,即 CI/CD Pipeline,它可以自动触发构建、测试、部署,并且可以快速回滚。
Pipeline 介绍
Pipeline 是一个将持续集成和持续交付(CI/CD)工作流程定义为代码的工具。可以使用 Pipeline 定义和自动化 CI/CD 工作流程,自定义并行或串行作业流,可视化整个流程状态,并评估和处理任何障碍。
Pipeline 由 Pipeline 脚本、Pipeline 表格和 Bluemap 编辑器三部分组成。
Pipeline 脚本
Pipeline 脚本是将 CI/CD 作业定义为一段可执行代码的脚本。它的代码可以跨越多个节点进行分布式构建。
Pipeline 脚本使用 Groovy 语言编写,并且可以使用多个 Jenkins 内置变量来控制流程。
下面是一个简单的 Pipeline 脚本示例:
-- -------------------- ---- ------- -------- - ----- --- ------ - ----------- - ----- - -- ---- -------- -- ---- --- ------ - - ----------- - ----- - -- ---- --- ----- - - ----------- - ----- - -- -------- ----- -- --------------- - - - -
这个脚本将使用任意代理运行 Pipeline,包含三个级别的阶段:构建、测试和部署。它使用 Node.js 构建和测试项目,并使用 Kubernetes 将应用程序部署到集群中。
Pipeline 表格
Pipeline 表格是一种 GUI 工具,可在用户输入不同的配置选项后,生成 Groovy 代码。用户可以通过填写表单来创建 Pipeline 作业,表格中包含了很多默认设置,通过一个点击操作即可完成流程配置。
Blue Ocean 编辑器
Blue Ocean 编辑器是一种提供了流程分析和实时更新功能的原生 Pipeline UI 工具。它可以让用户更直观地查看流程状态和结果,以及快速识别流程瓶颈和故障点。
Jenkins 介绍
Jenkins 是一种开源的自动化 CI/CD 工具。它提供了许多插件和扩展,可以支持多个编程语言和构建技术。通过 Jenkins 用户可以方便地搭建自己的 CI/CD 平台、管理构建工程和展示构建结果。
Kubernetes 和 Jenkins 集成使用可以实现 Kubernetes 集群的自动化构建、测试和部署。Kubernetes Pipeline 通过 Jenkins 的 Kubernetes 插件以及在单个 Jenkins 实例中的流程级别的复杂度,来定义、编写、执行并可视化 CI/CD。
Jenkins 安装
前提条件:
- 安装 Docker
- 安装 Kubernetes
- 运行以下命令启动 Jenkins:
kubectl create -f jenkins.yaml
jenkins.yaml 代码如下:
-- -------------------- ---- ------- ----------- ------- ----- ---------- --------- ----- ------- ----- --------- - --------- ------------ ---- ------- --------- --------- ------- ---- ------- ----- ----------- - ----- ------- ------ ------------------- ------ - -------------- ---- ------------- - ----- ------------ ---------- ----------------- -------- - ----- ------------ --------- -- --- ----------- -- ----- ------- --------- ----- ------- ------- ---- ------- ----- ------ - ----- ---- ----------- ---- --------- --- --------- ---- -------
这个文件首先定义了一个名为 jenkins 的 Deployment 副本,它运行 Jenkins 容器。然后,它定义了一个 Service,用于将 Jenkins 定位到 Kubernetes Service 中。
- 获取 Jenkins 初始密码并访问 Jenkins Web UI
可以通过以下命令获取 Jenkins 初始密码:
kubectl logs $(kubectl get pods -l app=jenkins -o jsonpath='{.items[0].metadata.name}') | grep -A 1 "Password"
然后,通过以下地址访问 Jenkins Web UI:
http://<kubectl get service jenkins --output=jsonpath='{.status.loadBalancer.ingress[0].ip}'>:8080
- 安装 Kubernetes 插件
在 Jenkins 主界面中,选择“Manage Jenkins”>“Manage Plugins”>“Available”,然后搜索并安装 Kubernetes 插件。
插件安装完成后,重新启动 Jenkins。
Jenkins Pipeline 配置
- 创建 Pipeline 脚本
在 Jenkins 主页创建新的任务,选择“Pipeline”项目,然后在“Pipeline”部分中输入 Pipeline 脚本。
例如,可以使用以下代码:
-- -------------------- ---- ------- -------- - ----- - -------------------------- - ------ - ----------------- - ----- - -------- --- - - -------------- - ----- - -- --- ------ ----- -- ------------------------ - ------ --- ------------------------ --------------- --- - - ------------- - ----- - ------------------------------------------------ ---------------- ----------------- ----------- ----------------- ------------- - -- --- ------ ----- -- ----------- -- ----------- ------ ---- ------------------------ ------ ---- --------------- --- - - - --------------- - ----- - -- -------- ----- -- ------------------ - - - -
- 配置 Kubernetes Agent
在 Pipeline 脚本中,添加了一个使用 addNodeLabel 连接的 Kubernetes 部署之前使用的 Node 阶段。这将告诉 Kubernetes,在部署时使用 kubernetes 标签选择 Node。可以通过以下步骤设置 Kubernetes 的标签:
- 用管理员用户登录 Jenkins Web UI
- 添加 Kubernetes 集群:选择“Manage Jenkins”>“Configure System”>“Cloud” 中的“Kubernetes”部分添加 Kubernetes 集群。
- 添加 Kubernetes 部署标签:在“Kubernetes”部分下方的“Pod Template”中的“Labels”字段中添加 kubernetes 标签。
- 配置 Kubernetes Credential
为了能够使用 Kubernetes,必须将 Kubernetes 凭证添加到 Jenkins 中。
- 用管理员用户登录 Jenkins Web UI。
- 访问“Credentials”>“System”菜单。
- 在“Credentials”菜单中单击“Global Credentials”。
- 单击“Add Credentials”按钮并从下拉菜单中选择“Kubernetes Service Account”。
- 配置访问 Kubernetes 的凭证。
创建好凭证后,就可以在 Pipeline 脚本中使用上述鉴权信息。
Pipeline 运行
通过运行前面指定的 Pipeline 脚本,可以开始 CI/CD 流程。在 Jenkins Web UI 的 Pipeline 项目页面中,单击“Build Now”按钮即可触发构建流程。
可以在 Pipeline 实时 UI 中查看流程状态并检查构建详情。
总结
在 Kubernetes 集群和 Jenkins 中使用 Pipeline 构建和部署 CI/CD 环境,可以显着提高开发团队的效率和代码质量。通过 Jenkins 和 Kubernetes 的结合使用,可以更轻松地构建和运行 CI/CD 流程,并且可以快速地检测和修复任何错误。
以上是搭建 CI/CD 平台的详细步骤,希望可以对前端开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fe7ebe95b1f8cacdd4215c