K8S + Jenkins 动态增减 slave节点自动部署VUE前端

1,196 views次阅读
没有评论

本文中,自动构建部署过程大概完成了以下项目:

  • 1 代码提交至 git,触发 Jenkins 自动构建
  • 2 Jenkins 动态在 Kubernetes 集群创建 slave Pod
  • 3 slave Pod 拉取项目代码,执行编译,打包为镜像,推送至第三方镜像仓库
  • 4 slave Pod 执行 kubectl,更新项目的 Deployment 中的镜像版本为最新版本,自动部署完成

K8S

基础环境

IP地址 运行程序
172.20.2.10 k8s-master
172.20.2.11 k8s-node1,NFS
172.20.2.12 k8s-node2
172.20.2.13 Gitlab

 

部署Jenkins

1、创建一个kube-ops的 namespace:

2、创建pv、pvc:

注:下面使用的是nfs的存储方式

3、创建需要用到的 PVC 对象:

4、给jenkins绑定权限

5、创建 rbac 相关的资源对象:

6、新建一个 Deployment:(jenkins.yaml)

通过 NodePort 的形式来暴露 Jenkins 的 web 服务,固定为30002端口

另外还需要暴露一个 agent 的端口,这个端口主要是用于 Jenkins 的 master 和 slave 之间通信使用的

7、创建 Jenkins 服务:

完成 K8S

配置 Jenkins 动态 slave

1、安装 Kubernetes 插件(Jenkins 插件管理中搜索安装即可)

2、安装完毕后,点击 Manage Jenkins —> Configure System —> (拖到最下方)Add a new cloud —> 选择 Kubernetes,然后填写 Kubernetes 和 Jenkins 配置信息。

K8S

注意 namespace,这里填 kube-ops,然后点击Test Connection,如果出现 Connection test successful 的提示信息证明 Jenkins 已经可以和 Kubernetes 系统正常通信了,然后下方的 Jenkins URL 地址:http://jenkins.kube-ops.svc.cluster.local:8080,这里的格式为:服务名.namespace.svc.cluster.local:8080,根据上面创建的jenkins 的服务名填写

3、配置 Pod Template

即配置动态生成的 slave 运行的模板

模板镜像可自定义制作,具体步骤见 jenkins-slave镜像制作

其中,运行的命令和命令参数为空!

K8S

K8S

需要在下面挂载两个主机目录,一个是/var/run/docker.sock,该文件是用于 Pod 中的容器能够共享宿主机的 Docker,使用 docker in docker 的方式,Docker 二进制文件已经打包到上面的镜像中了,另外一个目录下/root/.kube目录,将这个目录挂载到容器的/root/.kube目录下面这是为了能够在 Pod 的容器中能够使用 kubectl 工具来访问 Kubernetes 集群,方便后面在 Slave Pod 部署 Kubernetes 应用。

K8S

动态 slave 测试

添加一个 Job 任务,看是否能够在 Slave Pod 中执行,任务执行完成后看 Pod 是否会被销毁.

注意在下面的 Label Expression 这里要填入 jnlp-slave,就是前面配置的 Slave Pod 中的 Label,这两个地方必须保持一致

K8S

K8S

在页面点击“构建”

K8S

 

Jenkins Pipeline 配置

1、Gitlab 配置 webhook 略,代码提交到 Gitlab 时,会自动触发 Jenkins 构建即可。

2、新建 Jenkins 流水线任务,添加 Jenkins 参数化构建

K8S

3、配置构建触发器

K8S

4、添加流水线,并指定 Jenkinsfile 文件

K8S

5、保存任务,进行测试

6、创建demo的Deployment 和 SVC

K8S

当代码提交后的过程:

  • 1、当代码 push 到 Gitlab上,触发 Jenkins 自动构建
  • 2、Jenkins 动态创建 slave Pod ,拉起后,在该 Pod 上进行 Jenkinsfile部署
  • 3、在 slave Pod 上执行 pipeline 流水线
  • 4、拉取 VUE 代码,Webpack 打包,并根据 Dockerfile 生成镜像
  • 5、将镜像推送至第三方镜像仓库
  • 6、调用 kubectl ,修改 Deployment 的镜像版本为最新版本
  • 7、发布完成

构建日志查看[s][p]

[/p]

 

jenkins-slave镜像制作

1、编辑 Dockerfile

2、生成本地镜像

K8S

3、将镜像推送到第三方仓库

K8S

K8S

 

Honest1y
版权声明:本站原创文章,由Honest1y于2019年12月03日发表,共计8444字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)