子任务2:搭建DevOps流水线环境

 

本实验以主机本地虚拟机为载体,搭建Dev-ops流水线环境

使用的工具:

目录

一、实验概述

1.实验名称

2.实验目的

3.实验环境

二、实验内容

1.实验设计

2.实验过程

1.gitlab-server的搭建

2.harbor-server的搭建

3.Jenkins-server的搭建

4.Web-server的搭建

5.Dev搭建

6.工具集成配置

7.Jenkins插件安装

8.Jenkins全局工具配置

9.Jenkins系统配置

10.搭建数据库环境

11.开发代码,上传至gitlab仓库

12.在harbor-server上构建运行应用基础容器镜像

13.在jenkins-server上构建jenkins应用

三、实验总结

1.主要工作与收获

2.存在问题与展望

一、实验概述

1.实验名称

搭建DevOps流水线环境。

2.实验目的

DevOps已经成为解决软件开发过程中出现的缓慢、孤立或其它故障的默认方式。 假想你作为一家企事业单位软件研发部门技术负责人,为提高软件开发、部署效率,需要搭建一个DevOps流水线环境 (1)以本地虚拟机为载体,以Docker容器形式实践DevOps应用方案 (2)该方案应实现从应用开发、测试,到应用部署上线的完整过程 (3)在应用方案中要以具体的一种开发语言java/python开发一个简单的应用。 该应用必须要有完整的一个界面。可以相对简单,但必须完整。

3.实验环境

主机dev:

OS:Windows 11 专业版

IP:因网络状态而定

Gitlab-server:

OS:Ubuntu 20.04.5

IP:192.168.61.130

Harbor-server:

OS:Ubuntu 20.04.5

IP:192.168.61.131

Jenkins-server:

OS:Ubuntu 20.04.5

IP:192.168.61.132

Web-server:

OS:Ubuntu 20.04.5

IP:192.168.61.133

二、实验内容

1.实验设计

gitlab-server的搭建harbor-server的搭建Jenkins-server的搭建Web-server的搭建Dev搭建工具集成配置Jenkins插件安装Jenkins全局工具配置Jenkins系统配置搭建数据库环境开发代码,上传至gitlab仓库在harbor-server上构建运行应用基础容器镜像在jenkins-server上构建jenkins应用

2.实验过程

先决条件:本次dev-ops流水线需要使用的五台主机中,dev为我所拥有的笔记本电脑,剩下的gitlab-server、harbor-server、jenkins-server和web-server均为由Ubuntu20.04.5虚拟机克隆而来,被克隆虚拟机中本身有docker环境,因此本次虚拟机环境搭建并没有涉及docker的安装,但会通过查看docker版本来表示本机安装了docker。

1.gitlab-server的搭建

该步的内容请查看我的另一篇博客:

云计算课程-Ubuntu系统搭建gitlab_猪猡猪猡猪的博客-CSDN博客

2.harbor-server的搭建

该步的内容请查看我的另一篇博客:

云计算课程-Ubuntu系统搭建harbor仓库_猪猡猪猡猪的博客-CSDN博客

3.Jenkins-server的搭建

该步的内容请查看我的另一篇博客:

云计算课程-Ubuntu系统搭建jenkins服务_猪猡猪猡猪的博客-CSDN博客

4.Web-server的搭建

web-server的IP地址:192.168.61.133

Web-server只需要安装docker即可

由于该虚拟机是由有docker环境的虚拟机克隆而来,因此已有docker

5.Dev搭建

本次实验使用windows11主机作为dev主机进行开发,已有git工具

6.工具集成配置

1. 配置docker主机使用harbor

Jenkins-server主机、harbor-server主机、web-server主机都是安装了docker环境的主机,需要配置上述三个主机使用harbor

Harbor-server主机的信息:

Harbor仓库地址:http://192.168.61.131

用户名:admin

密码:123456 

① 对于web-service主机

老师所给博客上的步骤:

       实际操作步骤:

        #apt update(若已经更新,可以跳过该步)

#apt install vim(若已安装,可以跳过该步)

打开/etc/docker/daemon.json文件

修改内容如下:

重启docker使配置文件生效:

登陆时,使用用户名admin,密码123456

报错如下:

在主机上进行访问:

发现也无法访问,继续运行harbor-server,看看是否可以在本机上正常使用

发现在harbor-server上也访问不了,

尝试关闭重启一下harbor服务

使用的指令是:

#docker-compose down -v

#docker-compose up -d

重启之后,打开内置浏览器并访问

成功!可以回到web-server继续进行配置

使用docker login,连接到harbor-server 192.168.61.131

使用用户名admin,密码123456

② 对于harbor-server主机

老师所给博客上的步骤:

实际操作步骤:

#vim /etc/docker/daemon.json

修改配置文件,添加harbor仓库信赖

重启docker,重新加载配置文件

登录harbor,用户名admin,密码:123456

花开二度,又报错了

将harbor服务关闭再重启

再次登录,用户名admin,密码123456

③ 对于jenkins-server主机

老师所给的博客上的步骤

实际的步骤:

修改配置文件:

#vim /etc/docker/daemon.json

修改内容如下:

配置,重启,登录

这一次一气呵成。

2. 配置jenkins主机使用docker

在jenkins-server主机上进行配置即可。

3. 密钥配置

① Dev主机连接至gitlab-ce

先在dev主机上生成密钥对:

记事本打开C:\Users\Piggy\.ssh目录下的id_rsa.pub文件

以ssh-rsa开头的一大串内容是公钥

我的公钥内容为:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLBOc9ryBK+2uVgI1+YOm4K9dzb1JajlTQvLFCRjarGv5RyB2Ay91rvql6FysRNFiw33n/TXjqzXCsTyibethvYwg70M1Efs0uPUPIYGX51aAqxmzyixNlZsH588oipLJRKHkqfbMWlHPZbt6IFTM0O0z8xOhVozWpkloDY0we6kTSmARSWeHhIJxnnIjCpv07ToIXANc4THlXcfZpnvSHM2ZOIb7oyomyE4ltHQPoQ8iLWuRotj7z0anWJijiaUFtOKxuRVWQJe9gOFJ2BjhzmnoNaS/nF6Ek8pnBqLS/zdYYOe9PdwM3PDi+Mi7kGSgNk2Juws0FQIn2NE+xL/d2yGxDSbGc6DqB6+hbwab1K54oqoYN9MoOEZj8tP/3c5FeRMnODl4NlvIGheCK/4ch37NOtNn0TTunuxXyFQtlw3MRDp4ZRURr3O6+kealo1HgV+vYipsBEujONoXagtXLpg/vRXGrwzU/HNuyYUM9WdIXqp17hTmCr4C9IXvtRF0= 猪猡@DESKTOP-341P8RO

       接下来,将公钥添加到gitlab-ce中

      

       正想要添加时,出现了gitlab访问不了的情况

(如果gitlab能正常访问,可以跳过此步处理)

回到gitlab-server,对gitlab服务进行重启

       重启gitlab服务的命令为:

       # gitlab-ctl restart

       重启的输出如下:

      

       还是没办法访问,尝试用ifconfig查看网卡情况

发现ens33的网卡消失了

此时,因为ens33网卡的消失,ping不通baidu

重启ens33的命令为:

# sudo dhclient ens33

再次访问,就可以看到ens33网卡重新开启了

再次试试打开gitlab:

访问成功

接下来要进行gitlab的ssh密钥配置

进行登录

用户名是root,密码是搭建gitlab时,要求用户改变的

按上图流程操作,将刚刚生成的公钥放入此处:

点击add key以后,会跳转到此页面:

这样就算是配置好了dev主机和gitlab-ce的ssh连接

② Jenkins-server主机连接至gitlab-ce

在jenkins-server主机上生成密钥对:

查看公钥:

生成出来的公钥内容为:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZ0VmQ//bd/ySo4cs4RqAgPJdyTeHqUL/B/cL7iuoVP4wJN7WtQxHFsDWaDKT1J7fYCHKEWZWlSM+Mak51Sf/egsw3kRNOrEx9b5yqAevvFBue0PLqpZvC8F8BlN3nmx68uZGyJJ0xLlQmRjTOVDnPDyjEiM//uOgABpVtgi4uFU3SDmjInmCXsOcFjzD4uffwHHXIqHVaEdZusoG9SXKg62iz9d7OG7eV7rqjUHy6FHl2ZKfvhmAthiYcVHfJQYIvEZ3IbZF8ftQivL9UxcGdQLiidaRUv5avEesg/GpoD4fii9IFxV7m6S3Y8M47GIslBgjVVJLFRW2HWZpFkZ5gTaHj7ZTTCF9wjeOjq0bDBpLdC5BMyVV0kkn847WRQDmsbWR+bSxxBiF91tGQ2FajrCV4mp/qNGInoBEOyHU13r3VChjKaYNDzpe8SBygGenQSfFq8vC4YLGyqW17QJFAc3oMnwYn0XmmeZ5ECtyGoC92Ysz6FHo/fri1cZ8WDZ8= root@zhuluolin-virtual-machine

按照上述方法进行添加,可以看到,gitlab中已经有两个ssh连接了

此时,私钥也需要进行配置

Jenkins-server主机的私钥应该被配置到jenkins服务的凭据列表

查看jenkins-server主机的私钥:

私钥的内容即包括begin和end行的内容

打开jenkins服务:192.168.61.132:8080

出现了jenkins的登录页面:

安装jenkins时已经设置,用户名为admin,密码为123456

进入jenkin后,点击manage Jenkins – manage Credentials

点击global

添加一条凭据:

在enter directly下,输入私钥内容

输入上述内容以后,点击create,会显示下图的内容:

这样就添加好了

7.Jenkins插件安装

安装maven integration

该插件用于编译java项目

打开jenkins,点击manage plugins管理插件

点击available plugins可选插件

输入maven查找相关内容

第一个(Maven Integration)就是我们所需要的

点击下载

这样就安装好了maven integration

Git parameter插件

用于基于git版本提交进行参数构建项目

安装成功。

gitlab插件

该插件用户jenkins-server拉去gitlab项目

    安装成功

generic webhook trigger

该插件用于项目的自动化构建

安装成功。

ssh

该插件用于jenkins-server对web-server实施项目部署

这个红色的报错信息可以先不管它。目前对于我们要搭建的dev-ops模型来说暂时不构成影响。

安装成功

8.Jenkins全局工具配置

打开jenkins的全局工具配置

即global tool configuration

jdk配置

查看当前jdk的信息

查看发现,$JAVA_HOME的输出为空

为什么呢?

原因是jenkis-server主机使用apt install安装jdk

这是不会自动将JAVA_HOME内置到环境变量中的

可以先查看java安装在哪里

可以知道,java安装在/usr/bin/java下

输出这个目录的内容:

可以发现,java是由alternatives进行管理的

即,可以在系统中设置并切换多个jdk版本

因此,可以通过alternatives查看可用的java版本

由此,可以得知,java的安装路径为:

/usr/bin/jvm/java-11-openjdk-amd64/bin/java

接下来可以设置JAVA_HOME了

# vim /etc/profile

打开配置文件后,在文件的末尾加上如下内容

退出文件编辑

重新加载资源文件

# source /etc/profile

再次查看java home内容:

此时就将java写入了环境变量中

现在,打开jenkins服务页面

点击 manage Jenkins,选择global tool configuration

git配置

先看一下jenkins-server主机上安装的git工具版本

maven配置

先查看maven的版本信息

这里的MAVEN_HOME也没有显示内容

需要手动进行配置:

# vim /etc/profile

在文件末尾写入如下内容:

退出文件编辑

重新加载配置文件:

# source /etc/profile

查看maven home的信息:

现在,进入jenkins 的服务页面,配置maven 的内容

按照如上内容进行配置即可。

9.Jenkins系统配置

该步的内容请查看我的另一篇博客:

云计算课程-DevOps流水线中jenkins的系统配置_猪猡猪猡猪的博客-CSDN博客

10.搭建数据库环境

对web-server进行操作,在上面安装数据库管理系统:

安装完成以后,mariadb会自动启动, 查看mariadb的服务运行状态

(本项目暂时不适用数据库功能)

11.开发代码,上传至gitlab仓库

在gitlab-server主机的gitlab服务上创建一个空的仓库

该仓库的地址:

使用ssh clone

git@192.168.61.130:root/zhuluo-yjs.git

使用http clone

http://192.168.61.130/root/zhuluo-yjs.git

Dev主机克隆该仓库

第一次失败

第二次就差成功了

Dev主机写含页面的springboot项目

在创建项目时,

Project sdk使用correto-11

Java版本使用java 11

页面内容为:

编写完成以后,需要将以上的项目代码上传到gitlab中

# git tag 1.0.0

为本次提交打标签,表示提交的时1.0.0版本

使用git show 可以查看到此次提交的内容

上传到仓库

返回gitlab-server仓库中进行查看

出现如上的结果,表示上传成功

12.在harbor-server上构建运行应用基础容器镜像

任务是安装与项目代码版本对应的jdk

在此,我要安装的是openjdk11

查看docker中的镜像,现在能看到openjdk11了

打开harbor,发现harbor打不开,需要处理一下

(harbor打得开的话,可以跳过处理的步骤)

进入harbor安装目录,重新启动harbor

Harbor-server 的ip地址为:192.168.61.131

Harbor服务的端口号就是80

要将openjdk镜像上传到harbor仓库中,需要先修改镜像的tag等信息

以下完成了修改tag,登录harbor,推送镜像的操作

打开harbor,查看仓库中是否已经有openjdk的信息:

现在openjdk11已经被上传到了harbor仓库中

13.在jenkins-server上构建jenkins应用

该步的内容请查看我的另一篇博客:

云计算课程-构建jenkins应用_猪猡猪猡猪的博客-CSDN博客

三、实验总结

1.主要工作与收获

主要有如下收获:

安装并搭建gitlab服务安装并搭建harbor服务安装并搭建jenkins服务配置docker与harbor之间的连接配置jenkins与gitlab之间的连接配置jenkins与web-server主机的连接网卡的重启与配置对docker更深层的理解掌握dockerfile的使用了解wget工具的使用学会配置java、maven环境变量更多的git使用技巧对防火墙的理解加深学会ssh服务,掌握ssh加密与连接Jenkins的插件及其作用对dev-ops流水线全流程的搭建和了解搭建mariadb数据库环境掌握了springboot结合前后端内容的技术对Ubuntu系统,或者说linux系统有了更深的理解制作docker镜像并上传

2.存在问题与展望

希望未来能够尝试搭建使用数据库的,较为复杂的java后端源码,实现自动化部署,解决人力物力并提高迭代开发的可靠程度。

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: