文档版本 | v 1.0 |
---|---|
更新日期 | 2017.12.29 |
作者 | 追马 |
扩散范围 | 全网 |
阅读本文能学到的知识点
了解jenkins集成k8s需要处理哪些事情
实现方式的pipeline的基本框架
一、准备工作
1.1、环境准备
软件 | 版本 | 功能 |
---|---|---|
jenkins | 2.95 | 提供平台 |
Pipeline | 2.5 | 提供平台 |
1.2、推荐阅读
二、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,每个公司的场景不太一样,仅供参考
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
本文分享自微信公众号 - 追马Linux(zhuima_k8s)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/3486585/blog/4403783