Jenkins 2361.2 + Maven Integration + SVN/GIT + Docker + 阿里云镜像 + Kubernetes(K8S)
本文用于学习,了解原理,和实际应用,有所差别,特别是 Post Steps 步骤中,方式很多,根据实际情况而定。
实际应用中,一般 Pipeline 流水线的方式比较多。
环境如下
- Jenkins 安装在 Windows 2012R2 上
- Docker 在另一个 Linux CentOS 7.6上
- K8S 另外三台做的集群
- 镜像仓库用的是阿里云的
流程
- Jenkins 将代码从SVN服务器上,下载到 JENKINS_HOME 里的 workspace 中
- 通过 Maven 进行 编译打包
- Build/Publis Docker Image 对 maven 打好的包进行编译
- Push 到阿里云仓库 SpringBoot Docker 发布到 阿里仓库
- 通过远程 SSH 执行 K8S 的 kubectl deployment 命令,去阿里云镜像中下载部署 Kubernetes(K8S) Deployment 拉取阿里云镜像部署
Jenkins插件安装
- Localization: Chinese (Simplified)
- Subversion 【2.16.0】 --从SVN中获取代码
- Maven Integration 【3.20】 -- 编译项目
- Docker plugin 【1.2.10】 -- 用于节点管事中的 Docker 维护
- docker-build-step 【2.8】 -- 用于 Post Steps 的时候,选择 Build/Publish Docker Image
- SSH 【6.1】-- 用于集成 K8S,远程执行K8S服务器上的命令
Global Tool Configuration
这边使用的SVN,Git 差不多,详见 全局工具配置
如果 Jenkins 和 Docker 同一台,页在 全局工具配置中进行 Docker 配置,本文Jenkins 和 Docker 不在同一台
配置远程 Docker 服务
因为Docker 和 Jenkins 不在同一台服务器上,配置后将来在 Maven 编译后,利用远程 Docker 服务器进行编译发布
如果配了项目,首页变了,可以按下面方式找到入口点
选择 Docker 进行添加
输入Docker服务器的 地址(服务器没有设置用户凭证,所以这边没有设置)
测试 Docker 服务器连接
修改 Docker 服务器配置
Connection refused: no further information: /172.xxx.xxx.xxx:2370
- Docker开启远程访问,注意端口不要用默认的,防止被攻击
[root@localhost ~]# vi /usr/lib/systemd/system/docker.service #修改 # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2370
开放端口
#防火墙开放端口 [root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=2370/tcp [root@localhost ~]# firewall-cmd --reload
重启服务
#重新加载配置文件 [root@localhost ~]# systemctl daemon-reload #重启服务 [root@localhost ~]# systemctl restart docker.service #查看端口是否开启 [root@localhost ~]# netstat -nlpt #直接curl看是否生效 [root@localhost ~]# curl http://127.0.0.1:2370/info
新建Maven项目
添加 SVN 用户凭证(可在描述中添加说明,方便后期选择)
选择 SVN 用户凭证
跳过单元测试
clean package -Dmaven.test.skip=true
运行构建
查看控制台日志
推送至阿里云镜像
在 Post Step 中,选择 Build/Publish Doker Image
${WORKSPACE}
保存后构建
集成Kubernetes(K8S)
安装完 SSH 插件后,在Dashboard -> Manage Jenkins -> Configure System 中可以进行 ** SSH remote hosts** 配置
- 添加K8S访问凭证(一般使用 SSH Username with private key) SSH Key的方式,
- 到 Configure System 中新增 SSH remote hosts
输入命令
kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:3.1
目前:阿里云上是 3.0,K8S 服务器中使用的是 1.0,接下来构建 3.1
kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:3.1