JenkinsPipeline部署一个Kubernetes 应用

https://www.qikqiak.com/k8s-book/docs/37.Jenkins%20Pipeline.html

1 Jenkins Pipeline 介绍

https://www.cnblogs.com/wangxu01/articles/11156603.html

Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排可视化的工作。

Jenkins Pipeline 有几个核心概念:

  • Node:节点,一个 Node 就是一个 Jenkins 节点,Master 或者 Agent,是执行 Step 的具体运行环境,比如我们之前动态运行的 Jenkins Slave 就是一个 Node 节点
  • Stage:阶段,一个 Pipeline 可以划分为若干个 Stage,每个 Stage 代表一组操作,比如:Build、Test、Deploy,Stage 是一个逻辑分组的概念,可以跨多个 Node
  • Step:步骤,Step 是最基本的操作单元,可以是打印一句话,也可以是构建一个 Docker 镜像,由各类 Jenkins 插件提供,比如命令:sh 'make',就相当于我们平时 shell 终端中执行 make 命令一样。s

那么我们如何创建 Jenkins Pipline 呢?

  • Pipeline 脚本是由 Groovy 语言实现的,但是我们没必要单独去学习 Groovy,当然你会的话最好
  • Pipeline 支持两种语法:Declarative(声明式)和 Scripted Pipeline(脚本式)语法
  • Pipeline 也有两种创建方法:可以直接在 Jenkins 的 Web UI 界面中输入脚本;也可以通过创建一个 Jenkinsfile 脚本文件放入项目源码库中
  • 一般我们都推荐在 Jenkins 中直接从源代码控制(SCMD)中直接载入 Jenkinsfile Pipeline 这种方法

    2  创建一个简单的 Pipeline

     

    直接在 Jenkins 的 Web UI 界面中输入脚本运行

     

    • 新建 Job:在 Web UI 中点击 New Item -> 输入名称:pipeline-demo -> 选择下面的 Pipeline -> 点击 OK
    • 配置:在最下方的 Pipeline 区域输入如下 Script 脚本,然后点击保存。

      4 部署Kubernetes 应用

      部署应用的流程

      • 编写代码
      • 测试
      • 编写 Dockerfile
      • 构建打包 Docker 镜像
      • 推送 Docker 镜像到仓库
      • 编写 Kubernetes YAML 文件
      • 更改 YAML 文件中 Docker 镜像 TAG
      • 利用 kubectl 工具部署应用

       

      这里我们来将一个简单 golang 程序,部署到 kubernetes 环境中,代码链接:https://github.com/cnych/jenkins-demo。如果按照之前的示例,我们是不是应该像这样来编写 Pipeline 脚本:

      • 第一步,clone 代码,这个没得说吧
      • 第二步,进行测试,如果测试通过了才继续下面的任务
      • 第三步,由于 Dockerfile 基本上都是放入源码中进行管理的,所以我们这里就是直接构建 Docker 镜像了
      • 第四步,镜像打包完成,就应该推送到镜像仓库中吧
      • 第五步,镜像推送完成,是不是需要更改 YAML 文件中的镜像 TAG 为这次镜像的 TAG
      • 第六步,万事俱备,只差最后一步,使用 kubectl 命令行工具进行部署了

       

       

posted @ 2020-02-29 20:05  small_lei_it  阅读(912)  评论(0编辑  收藏  举报