前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Jenkins]5分钟系列之十Jenkins pipeline和k8s集成

[Jenkins]5分钟系列之十Jenkins pipeline和k8s集成

作者头像
追马
发布2020-07-03 10:07:13
6510
发布2020-07-03 10:07:13
举报
文章被收录于专栏:一日一工具

文档版本

v 1.0

更新日期

2017.12.29

作者

追马

扩散范围

全网

  • 了解jenkins集成k8s需要处理哪些事情
  • 实现方式的pipeline的基本框架

一、准备工作 1.1、环境准备 软件版本功能jenkins2.95提供平台Pipeline2.5提供平台1.2、推荐阅读 分分钟部署安装jenkins 二、jenkins和k8s集成相关事宜 2.1、大致的流程相关

  • 2.1.1、环境指定
    • 这个环境和k8s的namespace是对应的
  • 2.1.2、拉取代码
    • 需要做到可以自定义代码分支
  • 2.1.3、预编译
    • 不同语言的操作方式还不太一样
    • 可以放到容器内操作,也可以放到Jenkins机器上操作
  • 2.1.4、docker build
    • 打包镜像
    • build image的时候一定要注意image的tag的定义,如何更好的和环境(Production, Staging, Testing)结合
  • 2.1.5、docker push
    • 提交镜像到私有镜像仓库
    • 这里推荐使用harbor
  • 2.1.6、清理发布代码预编译目录
    • 确保每次代码发布都是干净的
    • 代价就是每次构建耗时和磁盘IO
  • 2.1.7、生成k8s的可用yaml文件
    • 根据提供的环境变量来生成可用的应用yaml
    • 可以选用多种方式实现yaml文件的渲染,就看你熟悉那种
  • 2.1.8、把生成后的yaml文件推送到远端,并启动
    • 可以使用Ansible、Saltstack来实现这部分的功能
    • 需要注意第一次启动和后续启动的操作方式的不一样的问题
  • 2.1.9、DNS api 接口调用进行域名映射
    • 针对一些对外访问的服务需要进行域名映射操作
    • 需要对外提供访问入口的服务,这里实现ingress nginx + 外部DNS来实现域名解析和访问
  • 1.10、通知
    • 失败通知?成功通知?一直通知等操作

    2.2、简单的pipeline demo,每个公司的场景不太一样,仅供参考

代码语言:javascript
复制
pipeline {
    // 在任意节点上执行
    agent any 
    // 设定时间戳,在console log上会有显示
    options {
        timestamps()   
    }
 
    // 全局环境变量
    environment {
        // 定义一些代码仓库的根目录,work目录相关的属性
        name = "zhuima"
    }
 
    // workflow,stages只能出现一次
    stages {
        // workflow中的每一步都是一个单独的动作,可以在不同的agent上运作
        stage('\u2705 1、获取代码') {
            steps {
                script {
                    echo  "\u2705 1、获取代码"
                }
            }
        }
 
        stage('\u2705  2、代码预编译') {
            // 不同语言操作方式不太一样
            steps {
                echo "\u2705  2、代码预编译"
            }   
        }
 
        stage('\u2705 3、build镜像') {
            // 看自己场景
            steps {
                echo "\u2705 3、build镜像"
            }
 
        }
 
        stage('\u2705 4、打tag上传harbor') {
            // 推送iamges到harbor镜像
            steps {
               echo "\u2705 4、打tag上传harbor"
            }
        }
 
        stage('\u2705 5、清理系统上的镜像') {
            // 清理本地的images,防止本地空间的占用
            steps {
                echo "\u2705 5、清理系统上的镜像"
            }
        }
 
        stage('\u2705 6、创建k8s yaml文件') {
            // 生成yaml文件
            steps {
                echo "\u2705 6、创建k8s yaml文件"
            }
        }
 
        stage('\u2705 7、运行yaml文件') {
            // 推送第6步生成的yaml文件到远程机器上,然后在远程机器上执行kubectl动作
            steps {
                echo "运行yaml文件"
            }
        }
 
        stage('\u2705 8、DNS进行域名注册') {
            steps {
                echo "DNS进行域名注册"
            }
        }
 
        stage('\u2705 9、清理构建目录') {
            steps {
                echo "\u2705 9、清理构建目录"
            }
        }
 
        stage('\u2705 10、清理历史构建记录') {
            steps {
                script {
                    properties([[$class: 'BuildDiscarderProperty',
                    strategy: [$class: 'LogRotator', numToKeepStr: '10']]])
                }
            }
        }
 
    }
    // 无论stages执行结果如何,post始终会执行
    post {
        always {
            echo "WorkFlow Finished, ByeBye!"
        }
    }
}

三、demo展示

四、参考文档

官方文档: https://jenkins.io/doc/book/pipeline/

w3cschool教程: https://www.w3cschool.cn/jenkins/list/

五、下期预告

  • 5分钟系列收官,喜迎2018
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 链上追马 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 三、demo展示
  • 四、参考文档
  • 五、下期预告
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档