利用 Kubernetes 构建 CI/CD 平台 —— 详解 Pipeline 和 Jenkins

阅读时长 9 分钟读完

近年来,随着云计算和 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
  1. 运行以下命令启动 Jenkins:

jenkins.yaml 代码如下:

-- -------------------- ---- -------
----------- -------
----- ----------
---------
  ----- -------
-----
  --------- -
  ---------
    ------------
      ---- -------
  ---------
    ---------
      -------
        ---- -------
    -----
      -----------
      - ----- -------
        ------ -------------------
        ------
        - -------------- ----
        -------------
        - ----- ------------
          ---------- -----------------
      --------
      - ----- ------------
        --------- --
---
----------- --
----- -------
---------
  ----- -------
  -------
    ---- -------
-----
  ------
  - ----- ----
    ----------- ----
    --------- ---
  ---------
    ---- -------

这个文件首先定义了一个名为 jenkins 的 Deployment 副本,它运行 Jenkins 容器。然后,它定义了一个 Service,用于将 Jenkins 定位到 Kubernetes Service 中。

  1. 获取 Jenkins 初始密码并访问 Jenkins Web UI

可以通过以下命令获取 Jenkins 初始密码:

然后,通过以下地址访问 Jenkins Web UI:

  1. 安装 Kubernetes 插件

在 Jenkins 主界面中,选择“Manage Jenkins”>“Manage Plugins”>“Available”,然后搜索并安装 Kubernetes 插件。

插件安装完成后,重新启动 Jenkins。

Jenkins Pipeline 配置

  1. 创建 Pipeline 脚本

在 Jenkins 主页创建新的任务,选择“Pipeline”项目,然后在“Pipeline”部分中输入 Pipeline 脚本。

例如,可以使用以下代码:

-- -------------------- ---- -------
-------- -
    ----- -
        --------------------------
    -
    ------ -
        ----------------- -
            ----- -
                -------- ---
            -
        -

        -------------- -
            ----- -
                -- ---
                ------ ----- -- ------------------------ -
                ------ --- ------------------------ ---------------
                ---
            -
        -

        ------------- -
            ----- -
                ------------------------------------------------ ---------------- ----------------- ----------- ----------------- ------------- -
                    -- ---
                    ------ ----- -- ----------- -- -----------
                    ------ ---- ------------------------
                    ------ ---- ---------------
                    ---
                -
            -
        -

        --------------- -
            ----- -
                -- -------- ----- -- ------------------
            -
        -
    -
-
  1. 配置 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 标签。
  1. 配置 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

纠错
反馈