jenkins整合k8s(最简版)

1.安装jenkins(略)

2.安装完成后,访问8080,配置一个新的admin用户,然后安装一些需要的插件(我是默认推荐安装的),额外还需要一个Publish over SSH插件,为了之后都调用别的服务器上的命令

3.构建一个freestyle的工程,第一项General要使用参数化构建,设置一个VERSION的变量(后面迭代时使用);然后还要选择丢弃旧的构建,时间和保留个数自己定

4.配置源码管理,选择项目的git地址,然后Credentials选择对应的账号密码(没有也可以当时新建)(遇到问题,github经常访问不了,导致代码没拉下来,不重要,企业肯定都是内部的)。Branches to build指定要处理的分支。

5.后面几项不管,直接到构建,选择执行shell,填写要执行的命令:

mvn install -DskipTests

cd target

mv demo01-0.0.1-SNAPSHOT.jar demo01.jar

echo "当前版本:${VERSION}"

因为jenkins默认目录在/var/lib/jenkins/workspace/github上拉下的项目  下,所以可以直接执行mvn。

6.暂时保存下现有的配置,先回到主面板设置-》系统设置中,找到Publish over SSH模块配置ssh,填写name(服务器的名字随便起),Hostname和Username,再在高级中输入passowrd,然后保存即可。

7.再进入Item的配置,在构建中可以增加构建步骤,选择execute commands over SSH:

高级那里要勾选中 Verbose output in console

执行的命令是将jar包通过dockerfile构建为镜像,其中VSERSION变量为jenkins构建时传入,最后将镜像推送至本地镜像仓库。

8.通过ssh到k8s的master节点通过kubectl命令来更新容器(这一步我感觉可以不在jenkins做,因为这一步操作比较灵活(使用滚动更新,金丝雀什么的),运维在服务器上去执行比较好,对应cicd,推送新的镜像至镜像仓库就算成功)。ssh执行的命令:/var/k8s-yaml/processDemo01.sh ${VERSION}

processDemo01.sh 内容:

# 获取服务对应的运行的容器个数(使用jenkins有点不好,在delete销毁k8s的deployment时,还需要一段时间,下面这个命令会返回不为0的结果,所以不够灵活)

number=`kubectl get pods |grep demo01|wc -l`

if [ $number -gt 0 ];then

    echo '重新设置镜像'

    kubectl set image deployment deploy-demo01 demo01=192.168.56.100/zzn/demo01:$1   # $1为jenkins构建时传入的version变量

else

    echo '新创建deploy'

    kubectl apply -f /var/k8s-yaml/demo01.yaml     # 这里要写绝对路径,否则jenkins找不到

fi

9.构建即可

你可能感兴趣的:(jenkins整合k8s(最简版))