4.3 Jenkins构建部署Kubernetes
构建任务
流程梳理
当我们推送代码到Gitlab
时,Gitlab
会主动地通知Jenkins
对应的任务,它会通过设置的源码管理
去拉取Gitlab
上对应地址的代码,然后执行我们预先设置好的构建的脚本(脚本是我们在之前做的构建镜像以及推送到阿里云)。接着再通过我们上面Publish over SSH
配置好的信息登陆到Kubernetes
的部署节点,最后执行我们后面将会放置在上面的部署脚本
进行部署,更新pod
。
部署脚本
我们进入到部署节点创建我们的部署脚本。/root/account/deploy/k8s/k8s-deploy.sh
kubectl scale --replicas=0 deployment/svc-account -n go-micro && kubectl scale --replicas=3 deployment/svc-account -
想要触发pod更新,需要部署文件的某些指定位置有被修改过才会触发。生产环境中,我们是通过更改镜像的tag也就是版本号镜像更新,比较简单。这个系列中,我们通过缩小增大pod的副本数量,来达到触发更新pod。
构建
- 新建任务
点击Jenkins
->新建任务,创建一个Jenkins
任务
General
填写项目的Gitlab
链接以及勾选丢弃旧的构建
。源码管理
选择Git
选项,填写Repositories
信息,并创建Gitlab
账号密码凭据。构建触发器
勾选Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.1.220:8080/project/go-micro
填入相关信息
我们拿到上图中,我们可以拿到webhook
的通知URL
以及密钥
,我们回到gitlab
的account
仓库中进行配置
- 构建环境
- 构建
以在Jenkins容器为例,构建时当前所在的位置为/var/jenkins_home/workspace/构建任务名
。
cd deploy
chmod a+x docker_build.sh docker_push.sh && ./docker_build.sh && ./docker_push.sh
执行我们之前就已经写好的构建和推送脚本
- 构建后操作
cd /root/account/deploy/k8s
chmod a+x k8s-deploy.sh && ./k8s-deploy.sh
最后保存退出
测试
保存之后,我们立即更改account
中部分代码,比如打印输出的字符串进行修改。然后推送到Gitlab
仓库,先观察jenkins
任务中的控制台输出
是否返回SUCCESS
。再观察此时请求后的标准输出
是否已经发生了变化,来验证我们重新整个CI/CD
流程是否成功~