idea docker push 很慢_Jenkins+Docker+Gitlab+Kubernetes 完成容器化微服务自动化部署

继使用Docker搭建Gitlab、使用Jenkins+Docker+Gitlab+Maven搭建持续集成环境后

2b45f65803db6b0ed1c3eb1abf919a1b.png

CICD整个流程:

  1. idea修改工程后push到gitlab >> gitlab通过webhook通知jenkins工程有改变 >>jenkins到gitlab取最新工程 。
  2. jenkins 自动 maven (构建、单元测试)工程。
  3. jenkins完成容器构建 docker images >> push到docker hub私有镜像仓库并自动化运行容器应用。
  4. 通过Kubernetes到Harbor私有镜像仓库拉取镜像,自动化编排服务,运行微服务容器应用。(下一章节)

一、通过GitLab的webhook与Jenkins 连通。

一个比较典型的微服务应用 这里只强调应用中的两个比较重要的文件 一个是Dockerfile 另外一个是build.sh。

接下来是idea 修改工程 功能后push到gitlab之后。

1、jenkins 创建一个新任务

任务名称跟Gitlab 工程目录下的其中一个微服务模块名称对应,选择流水线 ,点确定。

30caca08dc16e6bbe1d628713f7d16d0.png

2、在任务详情的 “构建触发器” ,勾选 “触发远程构建” ,输入身份验证令牌(自定义)

7f0c7fda46e69cf5993b0fc7fd99f067.png

复制/job/register-center/build?token=123456 到Gitlab 工程下的Integrations 右边 URL中,

56b4315611440a9bee0e515577fc3b11.png

点击 Add webhook 生成一条 webhook 记录 。

22a8eac42d1e8a79cb2e8500d8559efa.png

3、jenkins进入系统设置>全局安全配置 不选择 跨站请求伪造保护下的“防止跨站点请求伪造”,勾选 授权策略下的 “匿名用户具有可读权限” 点保存。

72d3c8479f762de106eeb6488743de78.png

4、在Gitlab的webhook 点击 test >push events 测试是否与jenkins连通。

99d2a503269386577f51c96b8416278b.png

如果页面上方出现 Hook executed successfully: HTTP 201 提示,表示已连通。

b7410a4e16a04ea7fa4ce8832859a485.png

在jenkins 查看对应的 控制台输出 Finished: SUCCESS 。

46f4d410d66c01b2ff73c53d390d7a6d.png

二、jenkins maven 自动(构建、单元测试)

1、jenkins进入任务详情的 “流水线”Pipeline 脚本编写,点击 “流水线语法”进入,查看语法。

6a401b171251dd385b3b18eff55977b8.png

步骤>示例步骤 选择 Git

e9f84a83287fbfed2143d618bdd84398.png

从GitLab 获取工程的git 地址到 复制到 Repository URL 然后点击 “生成流水线脚本”,复制到流水线的脚本中

83fbc2ab2ae7a900fa185b14d107a8e7.png
93260619a3d822b5443e242334e7f95f.png

编写自动获取代码、自动编译、单元测试 脚本 ,保存返回,点立即构建 ,进入自动构建。

06f75da8bead158c20e5ed0bce3b3268.png

查看jenkins首页 可以看到工程状态信息,进入控制台查看日志,如出现 BUILD SUCCESS 表示 自动获取代码、自动编译成功。

1f41c0659d5fbb1a8e763096288688f9.png

三、jenkins构建镜像 (docker images)push到docker 私有镜像仓库并自动化运行容器应用。

1、新建脚本路径与构建镜像脚本文件,编写脚本

cd /usr/local

mkdir build_script

cd build_script

vi build-images.sh

chmod 775 build-images.sh

编写脚本

f945cb7395b7df7a01a05a9258e227ad.png

应用docker镜像构建、推送私有镜像仓库、运行镜像生成容器

2、在jenkins流水线的脚本中添加build-images.sh执行步骤

85e95f42a3f5bbd32d3dc409a0748084.png

3、在idea修改微服务工程代码后push到gitlab,查看jenkins控制台输出及返回项目主页,如出现下图表示整理流程没问题了。

90c85e723ba3a49a6712d109575bf43c.png
7c90a126d454bea10a7625f5aecd0b9a.png

4、在服务器上通过docker命令查看镜像 可以发现已经构建成镜像了

d313a711212b2c7b5f904338dea79590.png

docker images

查看是否在运行:

421625a515116076e3f9d0dc3dc09dff.png

docker ps -a

已实现自动化构建容器应用,通过Kubernetes到Harbor私有镜像仓库拉取镜像,自动化编排服务,运行微服务容器应用。(下一计划)