文档版本 | 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,每个公司的场景不太一样,仅供参考
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