设为首页 加入收藏

TOP

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

上一篇文章分享了如何在 KubeSphere 对公共的代码仓库 GitHub 和镜像仓库 DockerHub 创建流水线,本文将继续使用 KubeSphere,基于 Harbor 和 GitLab 创建流水线,将 Spring Boot 项目发布至 Kubernetes。

KubeSphere 集成了 Harbor 和 GitLab,内置的 Harbor 和 GitLab 作为可选安装项,需在安装前进行配置开启安装。用户可以根据团队项目的需求来安装,方便对项目的镜像和代码进行管理,非常适合内网环境下的 CI/CD 流水线构建。

目的

本示例演示通过内置 GitLab 仓库中 Spring Boot 项目的 Jenkinsfile 来创建流水线,流水线共包含 7 个阶段,首先会将 GitLab 中的源码构建成镜像,然后推送到 Harbor 私有仓库,最终将一个输出 “Hello,World!” 的Web示例部署到 KubeSphere 集群中的开发环境 (Dev) 和生产环境 (Production) ,这两个环境在底层的 Kubernetes 是以项目 (Namespace) 为单位进行资源隔离的。

操作示例

流水线概览

下面的流程图简单说明了流水线完整的工作过程:

流程说明:

  • 阶段一. Checkout SCM: 拉取 GitLab 仓库代码
  • 阶段二. Unit test: 单元测试,如果测试通过了才继续下面的任务
  • 阶段三. sonarQube analysis:sonarQube 代码质量检测
  • 阶段四. Build & push snapshot image: 根据行为策略中所选择分支来构建镜像,并将 tag 为 SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER 推送至 Harbor (其中 $BUILD_NUMBER 为 pipeline 活动列表的运行序号)。
  • 阶段五. Push latest image: 将 master 分支打上 tag 为 latest,并推送至 Harbor。
  • 阶段六. Deploy to dev: 将 master 分支部署到 Dev 环境,此阶段需要审核。
  • 阶段七. Push with tag: 生成 tag 并 release 到 GitLab,并推送到 Harbor。
  • 阶段八. Deploy to production: 将发布的 tag 部署到 Production 环境。

基础设置

第一步:修改 CoreDNS 配置

通过 CoreDNS 的 hosts 插件配置 KubeSphere 集群的 DNS 服务,使集群内部可通过 hostname 域名访问外部服务,参考 修改系统配置 - 如何修改 CoreDNS 配置

第二步:上传基础镜像到 Harbor

参考 如何上传基础镜像到 Harbor 导入预先准备好的基础镜像 java:openjdk-8-jre-alpine

创建凭证

使用项目普通用户 project-regular 登录 KubeSphere,进入已创建的 DevOps 工程,开始创建凭证。

1、本示例代码仓库中的 Jenkinsfile 需要用到 Harbor、GitLab 和 Kubernetes (kubeconfig 用于访问接入正在运行的 Kubernetes 集群) 等一共 3 个凭证 (credentials) ,参考 创建凭证 依次创建这三个凭证。

2、然后参考 访问 SonarQube 并创建 Token,创建一个 Java 的 Token 并复制。

3、最后在 KubeSphere 中进入 devops-demo 的 DevOps 工程中,与上面步骤类似,在 凭证 下点击 创建,创建一个类型为 秘密文本 的凭证,凭证 ID 命名为 sonar-token,密钥为上一步复制的 token 信息,完成后点击 确定

至此,4 个凭证已经创建完成,下一步需要在示例仓库中的 jenkinsfile 修改对应的四个凭证 ID 为用户自己创建的凭证 ID。

ce

修改 Jenkinsfile

第一步:进入项目

  1. 根据前提条件中的要求,现应已按照 安装 GitLab 要求正确将 GitHub 中的 devops-java-sample 导入到GitLab中。

注:若因网络限制,无法从 GitHub 导入,请自行 clone 至其他服务器,然后上传至 GitLab 仓库,仓库名称请保持一致。

gitlab

  1. 点击项目进入。

第二步:修改 Jenkinsfile

? 1、在 根目录 进入 Jenkinsfile-on-prem

jenkins

? 2、在 GitLab UI 点击编辑 Edit,需要修改如下环境变量 (environment) 的值。

edit

修改项 含义
HARBOR_CREDENTIAL_ID harbor-id 填写创建凭证步骤中的 Harbor 凭证 ID,用于登录您的 Harbor 仓库
GITLAB_CREDENTIAL_ID gitlab-id 填写创建凭证步骤中的 GitLab 凭证 ID,用于推送 tag 到 GitLab 仓库
KUBECONFIG_CREDENTIAL_ID demo-kubeconfig kubeconfig 凭证 ID,用于访问接入正在运行的 Kubernetes 集群
REGISTRY harbor.devops.kubesphere.local:30280 默认为 Harbor 域名,用于镜像的推送
HARBOR_NAMESPACE library 默认为 Harbor 下的 library 项目,可根据实际情况更改项目名称
GITLAB_ACCOUNT admin1 GitLab用户,默认为admin1
APP_NAME devops-docs-sample 应用名称
SONAR_CREDENTIAL_ID sonar-token 填写创建凭证步骤中的 sonarQube token凭证 ID,用于代码质量检测

创建两个项目

CI/CD 流水线会根据示例项目的 yaml 模板文件,最终将示例分别部署到 Dev 和 Production 这两个项目 (Namespace) 环境中,项目名为 kubesphere-sample-devkubesphere-sample-prod,这两个项目需要预先在控制台依次创建。

project

创建流水线

第一步:填写基本信息

1、进入已创建的 DevOps 工程,选择左侧菜单栏的 流水线,然后点击 创建

create-pipeline

2、在弹出的窗口中,输入流水线的基本信息。

  • 名称:为创建的流水线起一个简洁明了的名称,便于理解和搜索
  • 描述信息:简单介绍流水线的主要特性,帮助进一步了解流水线的作用
  • 代码仓库:点击选择代码仓库,代码仓库需已存在 Jenkinsfile

basic_info

第二步:添加 Git 仓库

1、点击代码仓库,以添加 GitLab 仓库为例。

addrepo

2、输入仓库URl,默认为http://gitlab.devops.kubesphere.local:30080/admin1/devops-java-sample.git

注意:GitLab 中提供的 HTTP 和 SSH URI 有误。HTTP URI 需要手动加上端口号30080,SSH URI 需要手动加上协议 ssh:// 和端口号:30090。

证书选择之前创建的 gitlab-id

点击 「保存」 后进行下一步。

第三步:高级设置

完成代码仓库相关设置后,进入高级设置页面,高级设置支持对流水线的构建记录、行为策略、定期扫描等设置的定制化,以下对用到的相关配置作简单释义。

1、构建设置中,勾选 丢弃旧的构建,此处的 保留分支的天数保留分支的最大个数 默认为 -1。

丢弃旧的分支

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

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目