Kubernetes 构建企业 Jenkins 持续集成平台

本文介绍如何在Kubernetes集群环境下搭建基于Jenkins的CI/CD流程,包括GitLab的安装配置、Jenkins镜像的制作及部署、Jenkins与Kubernetes的集成配置等关键技术点。

K8s中CI/CD持续集成
GIitlab介绍:
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
CI/CD
CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。
在这里插入图片描述
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。下图反应的是CI/CD 的大概工作模式。
在这里插入图片描述一、容器交付流程

在这里插入图片描述
在这里插入图片描述
二、k8s部署项目流程:
在这里插入图片描述
环境:
在这里插入图片描述
三、部署(这里已经部署好k8s集群)

持续构建与发布是我们日常工作中必不可少的一个步骤,目前大多公司都采用 Jenkins 集群来搭建符合需求的 CI/CD 流程,然而传统的 Jenkins Slave 一主多从方式会存在一些痛点,比如:

  • 主 Master 发生单点故障时,整个流程都不可用了
  • 每个 Slave的配置环境不一样,来完成不同语言的编译打包等操作,但是这些差异化的配置导致管理起来非常不方便,维护起来也是比较费劲
  • 资源分配不均衡,有的Slave 要运行的 job 出现排队等待,而有的 Slave 处于空闲状态 资源有浪费
  • 每台 Slave 可能是物理机或者虚拟机,当Slave 处于空闲状态时,也不会完全释放掉资源。

正因为上面的这些种种痛点,我们渴望一种更高效更可靠的方式来完成这个 CI/CD 流程,而 Docker 虚拟化容器技术能很好的解决这个痛点,又特别是在 Kubernetes 集群环境下面能够更好来解决上面的问题,下图是基于 Kubernetes 搭建 Jenkins 集群的简单示意图:

在这里插入图片描述
从图上可以看到 Jenkins Master 和 Jenkins Slave 以 Pod 形式运行在 Kubernetes 集群的 Node 上,Master 运行在其中一个节点,并且将其配置数据存储到一个 Volume 上去,Slave 运行在各个节点上,并且它不是一直处于运行状态,它会按照需求动态的创建并自动删除。
这种方式的工作流程大致为:当 Jenkins Master 接受到 Build 请求时,会根据配置的 Label 动态创建一个运行在 Pod 中的 Jenkins Slave 并注册到 Master 上,当运行完 Job 后,这个 Slave 会被注销并且这个 Pod 也会自动删除,恢复到最初状态。
使用jenkins动态slave的优势:

  • 服务高可用,当 Jenkins Master 出现故障时,Kubernetes 会自动创建一个新的 Jenkins Master容器,并且将 Volume 分配给新创建的容器,保证数据不丢失,从而达到集群服务高可用。
  • 动态伸缩,合理使用资源,每次运行 Job时,会自动创建一个Jenkins Slave,Job 完成后,Slave 自动注销并删除容器,资源自动释放,而且 Kubernetes会根据每个资源的使用情况,动态分配 Slave 到空闲的节点上创建,降低出现因某节点资源利用率高,还排队等待在该节点的情况。
  • 扩展性好,当Kubernetes 集群的资源严重不足而导致 Job 排队带时,可以很容易的添加一个 Kubernetes Node到集群中,从而实现扩展。
    1、gitlab安装
[root@harbor ~]# docker pull twang2218/gitlab-ce-zh

我这里有harbor端口80、22、443被占用,gitlab端口改成81、23、444

[root@harbor ~]# docker run -d -p 81:80 -p 444:443 -p 23:22 --name gitlab --restart unless-stopped -v gitlab-config:/etc/gitlab -v gitlab-logs:/var/log/gitlab -v gitlab-data:/var/opt/gitlab twang2218/gitlab-ce-zh 

在这里插入图片描述
在这里插入图片描述
用户名:root 密码:00000000
在这里插入图片描述
会发现http/ssh会出现容器id没有ip
外部访问提交代码url出现容器id
修改容器内部配置文件
vim /etc/gitlab/gitlat.rb #宿主机ip
在这里插入图片描述
docker restart gitlab
在这里插入图片描述
#容器里启动服务
docker exec id gitlab-ctl reconfigure
git仓库安装:

[root@harbor ~]# yum install git -y

初始化git init,会在当前目录下有一个.git文件
在这里插入图片描述
准备好提前的代码,解压
在这里插入图片描述

[root@harbor opt]# unzip tomcat-java-demo-master.zip

在这里插入图片描述
修改源码中配置文件
在这里插入图片描述

导入数据库
在这里插入图片描述

mysql> create database fp CHARACTER SET utf8 COLLATE utf8_general_ci;         
Query OK, 1 row affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
gilab默认分支是master
添加gitlab地址

git remote add origin http://192.168.254.233:81/root/java-demo.git
git add . #添加到本地
git commit -m “说明”

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值