设为首页 加入收藏

TOP

KubeSphere CI/CD+GitLab+Harbor将Spring Boot项目部署至Kubernetes(二)
2019-09-17 14:55:03 】 浏览:74
Tags:KubeSphere CI/CD GitLab Harbor Spring Boot 项目 部署 Kubernetes
明:

分支设置的保留分支的天数和保持分支的最大个数两个选项可以同时对分支进行作用,只要某个分支的保留天数和个数不满足任何一个设置的条件,则将丢弃该分支。假设设置的保留天数和个数为 2 和 3,则分支的保留天数一旦超过 2 或者保留个数超过 3,则将丢弃该分支。默认两个值为 -1,表示不自动删除分支。

丢弃旧的分支将确定何时应丢弃项目的分支记录。分支记录包括控制台输出,存档工件以及与特定分支相关的其他元数据。保持较少的分支可以节省 Jenkins 所使用的磁盘空间,我们提供了两个选项来确定应何时丢弃旧的分支:

  • 保留分支的天数:如果分支达到一定的天数,则丢弃分支。
  • 保留分支的个数:如果已经存在一定数量的分支,则丢弃最旧的分支。

2、默认的 脚本路径 为 Jenkinsfile,需要修改为 Jenkinsfile-on-prem

注:路径是 Jenkinsfile 在代码仓库的路径,表示它在示例仓库的根目录,若文件位置变动则需修改其脚本路径。

3、在 扫描 Repo Trigger 勾选 如果没有扫描触发,则定期扫描,扫描时间间隔可根据团队习惯设定,本示例设置为 5 minutes

说明:定期扫描是设定一个周期让流水线周期性地扫描远程仓库,根据 行为策略 查看仓库有没有代码更新或新的 PR。

Webhook 推送:

Webhook 是一种高效的方式可以让流水线发现远程仓库的变化并自动触发新的运行,GitHub 和 Git (如 Gitlab) 触发 Jenkins 自动扫描应该以 Webhook 为主,以上一步在 KubeSphere 设置定期扫描为辅。在本示例中,可以通过手动运行流水线,如需设置自动扫描远端分支并触发运行,详见 设置自动触发扫描 - GitHub SCM

完成高级设置后点击 创建

advance

第四步:运行流水线

流水线创建后,点击浏览器的 刷新 按钮,可见一条自动触发远程分支后的运行记录。

1、点击右侧 运行,将根据上一步的 行为策略 自动扫描代码仓库中的分支,在弹窗选择需要构建流水线的 master分支,系统将根据输入的分支加载 Jenkinsfile (此示例为根目录下的 Jenkinsfile-on-prem)。

2、由于仓库的 Jenkinsfile-on-prem 中 TAG_NAME: defaultValue 没有设置默认值,因此在这里的 TAG_NAME 可以输入一个 tag 编号,比如输入 v0.0.1。

3、点击 确定,将新生成一条流水线活动开始运行。

说明: tag 用于在 GitLab 和 Harbor 中分别生成带有 tag 的 release 和镜像。 注意: 在主动运行流水线以发布 release 时,TAG_NAME 不应与之前代码仓库中所存在的 tag 名称重复,如果重复会导致流水线的运行失败。

运行流水线

至此,流水线 已完成创建并开始运行。

注:点击 分支 切换到分支列表,查看流水线具体是基于哪些分支运行,这里的分支则取决于上一步 行为策略 的发现分支策略。

查看流水线

第五步:审核流水线

为方便演示,此处默认用当前账户来审核,当流水线执行至 input 步骤时状态将暂停,需要手动点击 继续,流水线才能继续运行。注意,在 Jenkinsfile-on-prem 中分别定义了三个阶段 (stage) 用来部署至 Dev 环境和 Production 环境以及推送 tag,因此在流水线中依次需要对 deploy to dev, push with tag, deploy to production这三个阶段审核 3次,若不审核或点击 终止 则流水线将不会继续运行。

审核流水线

说明:在实际的开发生产场景下,可能需要更高权限的管理员或运维人员来审核流水线和镜像,并决定是否允许将其推送至代码或镜像仓库,以及部署至开发或生产环境。Jenkinsfile 中的 input 步骤支持指定用户审核流水线,比如要指定用户名为 project-admin 的用户来审核,可以在 Jenkinsfile 的 input 函数中追加一个字段,如果是多个用户则通过逗号分隔,如下所示:

···
input(id: 'release-image-with-tag', message: 'release image with tag?', submitter: 'project-admin,project-admin1')
···

查看流水线

1、点击流水线中 活动 列表下当前正在运行的流水线序列号,页面展现了流水线中每一步骤的运行状态,注意,流水线刚创建时处于初始化阶段,可能仅显示日志窗口,待初始化 (约一分钟) 完成后即可看到流水线。黑色框标注了流水线的步骤名称,示例中流水线共 8 个 stage,分别在 Jenkinsfile-on-prem 中被定义。

stage

2、当前页面中点击右上方的 查看日志,查看流水线运行日志。页面展示了每一步的具体日志、运行状态及时间等信息,点击左侧某个具体的阶段可展开查看其具体的日志。日志可下载至本地,如出现错误,下载至本地更便于分析定位问题。

log

验证运行结果

1、若流水线执行成功,点击该流水线下的 代码质量,即可看到通过 sonarQube 的代码质量检测结果,如下图(仅供参考)。

2、流水线最终 build 的 Docker 镜像也将被成功地 push 到 Harbor 中,我们在 Jenkinsfile-on-prem 中已经配置过 Harbor,登录 Harbor 查看镜像的 push 结果,可以看到 tag 为 snapshot、TAG_NAME(master-1)、latest 的镜像已经被 push 到 Harbor,并且在 GitLab 中也生成了一个新的 tag 和 release。示例网站最终将以 deployment 和 service 分别部署到 KubeSphere 的 kubesphere-sample-devkubesphere-sample-prod 项目环境中。

环境 访问地址 所在项目 (Namespace) 部署 (Deployment) 服务 (Service)
Dev 公网 IP : 30861 (${EIP}:${NODEPORT}) kubesphere-sample-dev ks-sample-dev ks-sample-dev
Production 公网 IP : 30961 (${EIP}:${NODEPORT}) kubesphere-sample-prod ks-sample ks-sample

3、可通过 KubeSphere 回到项目列表,依次查看之前创建的两个项目中的部署和服务的状态。例如,以下查看 kubesphere-sample-prod 项目下的部署。

进入该项目,在左侧的菜单栏点击 工作负载 → 部署,可以看到 ks-sample 已创建成功。正常情况下,部署的状态应该显示 运行中

deploy

4、在菜单栏中选择 网络与服务 → 服务 也可以查看对应创建的服务,可以看到该服务对外暴露的节点端口 (NodePort) 是 30961

查看服务
service

5、查看推送到您个人的 Harbor 中的镜像,可以看到 devops-java-sample 就是 APP_NAME 的值,而 tag也是在 Jenkinsfile-on-prem 中定义的 tag。

访问示例服务

在浏览器或通过后台命令访问部署到 KubeSphere Dev 和 Production 环境的服务:

Dev 环境

例如,浏览器访问 http:/

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Ubuntu中更改默认的root用户密码.. 下一篇04、管道符、重定向与环境变量

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目