Kubernetes集成Jenkins实现CI/CD原理与实践

Kubernetes集成Jenkins实现CICD

一.CICD整体流程

在这里插入图片描述

1. 代码上传。

软件工程师编写完代码后,将本地代码上传到Source Control Management。如果使用Git作为源代码管理,则通过git命令或git客户端将代码PUSH到版本库。如果是使用Team Foundation Server(TFS)作为源代码管理,则通过TFS客户端将代码commit到版本库。

2.Hook触发构建。
TFS与Git均提供了Hook机制(钩子),即一些事件触发点,可以自定义当一些行为发生后,触发一些事件。如可以定义当发生代码提交动作后,触发jenkins的远程构建。
3.远程触发构建。
当然如果每次PUSH完代码均触发jenkins的远程构建,显然不够友好,我们可以通过配置jenkins,通过远程http请求实现触发远程构建的功能。如使用curl命令发起http请求,以远程触发jenkins自动构建。
4.自动构建。
接下来是核心的jenkins自动构建定义,通过定义jenkins任务或流水线,可以实现从按照分支/标签代码获取、maven自动编译打包、docker生成镜像并上传到镜像仓库、远程访问kubernetes以根据yaml文件生成kubernetes资源实现镜像上云部署等。

二.基础环境准备

本文只针对jenkins所在的服务器的基础软件安装做说明。需要安装的软件包括:
JDK
maven
Docker
Kubctl
Jenkins
2.1. Docker安装
因很多开发环境均是与外网隔离的环境,需要离线安装Docker。本文主要描述离线安装Docker的步骤。

Docker下载地址:
https://download.docker.com/linux/static/stable/x86_64/docker-17.03.2-ce.tgz
Docker安装步骤:
(1)前提:使用root用户安装。
(2)解压:tar -xvf docker-17.03.2-ce.tgz
(3)将解压出来的docker文件内容移动到 /usr/bin/ 目录下:cp docker/* /usr/bin/
(4)将docker注册为service:vim /etc/systemd/system/docker.service,并将将下列配置加到docker.service中并保存,如下所示:

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

(5)启动

chmod +x /etc/systemd/system/docker.service #添加文件权限并启动docker
systemctl daemon-reload #重载unit配置文件
systemctl start docker #启动Docker
systemctl enable docker.service #设置开机自启。

(6)验证

systemctl status docker #查看Docker状态
docker -v #查看Docker版本

(7)授权给非root 用户。
此时我们已经完成了root用户的docker安装,但如果实际使用docker的用户不是root,此时部分docker命令将无权操作,例如第6步的
systemctl status docker #查看Docker状态 与docker -v #查看Docker版本均可在非root用户操作执行,但docker info命令就会报错如下图所示:
在这里插入图片描述

此时只需要使用root用户将/var/run/docker.sock文件的权限扩大即可:

chmod 777 /var/run/docker.sock

(8)登录至镜像仓库,此时会报错如下图所示:
在这里插入图片描述

分析原因有二,一是未配置镜像仓库的证书;二是未配置
镜像仓库域名服务器解析。

2.2. jenkins安装
1.安装jenkins。
jenkins安装很简单,可需要在官网上下载jenkins.war包,即可使用。
下载地址为:https://jenkins.io/zh/download/
启动方式有两种,
一种是启动方法: java -jar jenkins.war 即可,如果要以后台进程的方式启动,改成nohup java -jar jenkins.war & 即可,启动过程中,它会将war包解压到~/.jenkins目录下,并生成一些目录及配置文件
第二种是将jenkins.war包,放到tomcat的webapps目录下,启动tomcat即可本文采用了第二种方式,如下图所示:
在这里插入图片描述

此时访问10.229.:8080/jenkins/ 来访问即可进入jenkins的控制台。
2.更新jenkins插件下载源。
jenkins的使用必须依托于大量的插件,这些插件又依赖一些其他插件,逐个手动下载插件代价很大,最好的方式是通过jenkins控制台的下载插件功能来下载。但因其官网服务器部署在美国,通过官网下载插件很慢,因此需要将下载地址更新为国内源。更新方式为:
(1)进入jenkins控制台,点菜单“Manage Jenkins”,如下所示:
在这里插入图片描述

(2)选择“Manage Plugins”
在这里插入图片描述

(3)选择”Manage Plugins”–>”Updte Center”,选择”Advanced”选项页:
在这里插入图片描述

(4)在”Update Site”页中,配置清华大学的地址:

在这里插入图片描述

但是这里有个问题,清华源中的插件地址仍然是国外的官网,做到这一步并不能提升速度,我们需要手动再修改下这个源地址文件。
操作步骤为:
一、打开本地jenkins的源地址文件,路径为”.jenkins\updates\default.json”,这个文件里就是我们刚刚配置的清华源的文件内容。
二、打开default.json,将文件中的www.google.com替换为www.baidu.com,将文件中的updates.jenkins-ci.org/download替换为https://mirrors.tuna.tsinghua.edu.cn/jenkins,然后保存退出。
三、重启Jenkins即可。
3.下载jenkins插件。

为支持前文说的持续构建,需要大量 jenkins插件的支持,主要包括:
Team Foundation Server Plug-in、Version Number Plug-In、Maven Integration plugin、Hudson Post build task、Gitlab Hook Plugin、Git plugin、Git Parameter Plug-In、Build Authorization Token Root Plugin、Command Agent Launcher Plugin
4.离线安装jenkins插件。
在第三步骤,在有网环境下下载的jenkins插件保存在”.jenkins\plugins\”目录下,
如下所示:
在这里插入图片描述

将该目录下的所有文件,拷贝到离线环境下的相同目录下,重启jenkins,即可离线安装插件。
2.3. Kubctl安装
为了能够远程操作kubernetes,需要在jenkins所在服务器上安装Kubernetes集群的命令行工具Kubectl。
离线安装方式很简单:
第一步:下载应用程序。下载地址:
https://storage.googleapis.com/kubernetes-release/release/v1.7.1/bin/linux/amd64/kubectl
第二步:将该应用程序上传到服务器。
第三步:chmod +x kubectl

三.jenkins配置

3.1 jenkins公共配置**
第一步:进入jenkins控制台后,选择”Manage Jenkins”–>”Global Tool Configuration”进行公共配置
在这里插入图片描述

第二步:配置各个配置项,主要配置三项:jdk配置、git配置、Maven配置。如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2新建任务
第一步:进入jenkins控制台后,选择“New Item”即可创建一个构建任务。
在这里插入图片描述

第二步:输入任务名称后,选择“构建一个maven项目”,点击“确定”。
在这里插入图片描述

第三步:配置maven项目的各个配置内容。
(1) 获取代码。为支持GIT与TFS,需要分别安装GIT 与 TFS的插件,安装好后,即可在“Source Code Management”中配置GIT或TFS的远程地址与用户名,密码,如下图所示:

在这里插入图片描述

(2)为支持GIT或TFS中按照分支或标签获取,在第(1)步中配置了$BUILD_TAG参数,该参数需要在“General”中选择“This project is parameterized”,指定字符串参数,如下所示:
在这里插入图片描述

(3)配置一个Build Environment,用于生成一个版本号,如下图所示,版本号由“日期+构建次数”组成,
在这里插入图片描述

(4)配置Build,主要是针对maven构建所需要的pom.xml文件路径,以及maven命令行参数等,如下图所示:
在这里插入图片描述

(5)最后在“Post Steps”配置maven构建后的处理,这里将打docker镜像、上传镜像仓库、调用kubectl部署到paas云的操作均写到这里,如下图所示:
在这里插入图片描述

#!/bin/bash -il
echo "helloworld"
cp -f   $WORKSPACE/testboot/target/testboot-0.0.1-SNAPSHOT.jar $WORKSPACE/
docker build -f  $WORKSPACE/Dockerfile -t registry.xxxx/hbgov/sxfang:${BUILD_VERSION}  $WORKSPACE/.
docker login --username=quzhongwei --password=密码 registry.xxxx
docker push registry.xxxxx:${BUILD_VERSION}
sed -i  "s/{IMAGE_TAG}/${BUILD_VERSION}/g"  $WORKSPACE/sxfang.yaml 
/home/usr/bin/kubectl --kubeconfig=/home/usr/bin/admin.kubeconfig --validate=false apply -f $WORKSPACE/sxfang.yaml 

(6)为支持远程触发构建,需要做两步操作,第一步是配置操作用户的token信息,操作为选择右上角用户名的链接,如下图所示:
在这里插入图片描述

再选择“Configure”,如下图所示:

在这里插入图片描述

在“API Token”中选择“Add new Token”,将生成的Token值,复制到剪贴板。
在这里插入图片描述

第二步:回到刚才创建的Maven Job中,配置Build Triggers,将Token值配置到如下图所示,这样就支持了远程触发。
在这里插入图片描述

远程触发示例为:

curl -s -u admin:密码 -X  GET http://IP:8080/jenkins/job/test/build?token=xxxxxxxxxxxx

其中admin:密码分别表示jenkins的用户名与密码,用: 分隔。
http://IP:8080/jenkins/job/test/build?token=11d82237e92310afad810e5e65a3b3f6a0
地址由jenkins的地址
http://IP:8080/jenkins/
+
Job/test,test就是上文创建的Maven构建任务的名称,
后面的token=就是登录token。

**四.集中构建使用说明

4.1代码提交
通过git提交代码,操作步骤不再示例。

4.2触发构建
支持两种触发构建方式:
一是远程构建,发送http请求触发。
在windows平台上,可以安装一个Cmder工具,这样就实现了在windows平台发送curl命令。当然也可以使用其他方式发送http请求。这里只以curl命令为例,因我们构建的有参数,所以远程构建需要同步传递参数:

curl -s -u admin:密码 -X GET http://IP:8080/jenkins/job/test/buildWithParameters?token=11d82237e92310afad810e5e65a3b3f6a0&BUILD_TAG=origin%2Fmaster

二是登录到jenkins控制台,输入用户名密码,用户名是admin
并选择构建好的Maven任务,如下图所示:
在这里插入图片描述

选择“Build with Parameters”,如下图所示:
在这里插入图片描述

输入BUILD_TAG,即分支名或标签名,点”Build”即可触发构建。
在这里插入图片描述

4.3查看构建结果

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个非常好的问题。要创建一个通过集成Jenkins CI/CD DevOps的Vue可视化项目,需要遵循以下步骤: 1. 创建Vue项目:首先,你需要创建一个Vue项目。你可以使用Vue CLI来创建一个全新的项目。在终端中输入以下命令:`vue create my-vue-project`。这将在当前目录中创建一个新的Vue项目。 2. 安装依赖项:接下来,你需要安装项目所需的所有依赖项。在项目的根目录下,运行命令`npm install`。 3. 集成Jenkins:现在,你需要将Jenkins集成到你的项目中。为此,你需要安装Jenkins插件。在终端窗口中,输入以下命令:`npm install jenkins --save-dev`。 4. 创建Jenkinsfile:现在,你需要创建Jenkinsfile来定义你的CI/CD流程。在项目根目录下,创建一个名为Jenkinsfile的文件。在该文件中,你可以定义构建、测试和部署步骤。 5. 配置Jenkins:现在,你需要配置Jenkins来运行你的CI/CD流程。为此,你需要在Jenkins中创建一个新的流水线项目,并将Jenkinsfile添加到该项目中。确保你的Jenkins服务器能够访问你的代码库,并且已经安装了所需的插件和工具。 6. 测试流程:一旦你的CI/CD流程已经设置好,你需要测试它是否正常工作。在你的代码库中进行一些更改,并触发Jenkins流水线。确保所有测试都通过,并且你的应用程序已成功构建和部署。 7. 部署应用程序:最后,你需要将你的应用程序部署到生产环境中。你可以使用KubernetesDocker等工具来实现自动化部署。 希望这些步骤能够帮助你创建一个通过集成Jenkins CI/CD DevOps的Vue可视化项目。如果你有任何问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值