CICD
CICD是一个可以集部署、拉取、上传等于一体的架构环境,它支持一线进行部署,免去了人工一条条的进行部署环境的工作流程,大大降低了人力手工运维成本和出错率。
CICD的搭建需要至少三台服务器,他们分别监管着Harbor(镜像仓库存储),git(开发代码仓库存储),Jenkings(一键化部署)
企业级镜像Harbor部署
docker镜像级的存储可以储存在docker hub 上,也可以储存在自建本地仓库上,而Harbor属于本地仓库的其中一种,该软件可以提供图形化界面操作,安装简单,且方便查看。
它是一个类似docker hub的可以使用浏览器进行登录操作查看的软件,又不需要像docker hub需要直接网上拉取,导致容易出现丢包、拉取失败的现象,因此国内很多企业都会将安装包存放于此。
安装
1)首先需要一台虚拟机,在搭建好docker和compose的情况下才能进行Harbor的下载,其中Harbor的下载有多种,有在线安装(通过docker hub下载镜像),这边讲的就是离线下载,即直接安装安装包。安装包可以通过官方地址:https://vmware.github.io/harbor/cn/ 去进行下载
2)准备一台虚拟机,其ip地址为192.168.53.10,将下载好的Harbor安装包拉入到虚拟机中。
3)安装docker:
创建docker专用下载通道:
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
开启存储库
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test
安装docker
yum install docker-ce docker-ce-cli containerd.io
安装完成后使用命令使docker永久开启
systemctl start docker
systemctl enable docker
4)安装compose(可以直接将编辑好的compose放置/usr/local/bin下,并且更改为可执行文件即可)
5)解压Harbor压缩包,并且将压缩包放置在/usr/local目录下:
tar -xf harbor-offline-installer-v1.9.1.tar
6)修改文件vi /etc/docker/daemon.json ,添加如下代码:
{"insecure-registries":[“192.168.9.10"]} \\更改成自己Harbor的IP地址
systemctl restart docker \\重启docker
7)进入解压好的harbor文件中,编写vim harbor.yml,将hostname改为自己的地址
8)./prepare
./install.sh
进行安装
8)当完成安装后,即可通过本机地址进行浏览器的访问,账户名为admin,密码默认为Harbor12345
9)当我们上传某个镜像的时候,即可通过tag改名(harbor的ip地址/存放的标签/文件名:标签)来进行改名,并且上传。
上传的话首先需要进行登录,登录的形式为docker login ip地址 -uadmin -pHarbor12345 的形式来登录,如果忽略了后面的一步,系统会默认登录到docker hub网页
10)创建存放镜像的项目页(也可以称之为目录)
11)上传镜像,第一步,登录:docker login 192.168.53.10 -uadmin -pHarbor12345
12)第二步,镜像改名: docker tag hello-world 192.168.53.10/xiaoyang/hello-world:v1
13)第三步,上传镜像:docker push 192.168.53.10/xiaoyang/hello-world:v1
14)第四步:验证,可以在xiaoyang的项目页中进行查看
15)为了完成DIDC的实验,需要提前将tomcat镜像放置在harbor的项目中
git 开发语言存放仓库
Harbor是用于镜像的存放的,而git则是用于开发语言的存放的,二者分工不同,但却是架构中的一员,现实中,最首先由开发工作人员上传代码和数据进入git,而后由运维从Jenkings来进行一键化的部署
需要新开一台服务器:192.168.53.20
安装
1)安装git首先需要拥有ssh软件,但是该程序linux是自带拥有的,所以可以直接进行下载,如果没有ssh,可以使用:yum install openssh.x86_64来进行下载
2)yum install -y git 下载git,也可以通过官网中下载安装包进行拉取
git官网:https://mirrors.edge.kernel.org/pub/software/scm/git/
3)使用git version命令可以查看git版本,同时也可以进行查看git是否进行安装
4)创建用户,用户名字随意,但是尽量还是使用和git相关的名字
useradd gitme
passwd 123
5)切换到gitme用户
6)
mkdir demo.git #创建名为demo.git的用户
cd demo.git/
git --bare init #在该目录下,初始化仓库
jenkings一键部署
jenkings是一款可以实现一键化部署的软件,以往,一个开发软件或者app的部署需要从测试到上线起码需要一天的时间,而jenkings通过与其他服务器的联动的,大大简化了到正式上线为止的繁琐步骤,所以,这也是jenkings被人选择的原因。
需要新开一台服务器:192.168.53.30
安装
1)准备材料:jenkings主机上需要安装docker、tomcat、java文件等,其中,docker是为了进行部署,tomcat、jdk则是为了进行java代码的编译(jenkings需要接触java)
2)yum -y install java 安装java模块
3)yum -y install maven
4)docker安装略,而后将tomcat的安装包拉进/usr/local的目录中,进入tomcat的bin目录下,输入./startup.sh启动tomcat
5)为了不影响使用,需要将tomcat的webapps里的目录删除,只留ROOT
6)将.war包放入到ROOT下
7)将.war包用unzip解压
上述为源代码安装,yum安装如下:
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key #导入公钥
yum install jenkins
#通过java命令可以查看jenkins是否正常下载完成
java -jar /usr/lib/jenkins/jenkins.war --httpPort=端口号 #命令可以开启jenkins
#该端口号不可与别的端口号重复
开启过后可以直接使用端口ip地址:端口号 来进行浏览器访问
8)从镜像平台拉包,并且更改,此操作先不要开启tomcat或者jenkings
git clone https://github.com/407777853/java-demo
cd java-demo/
vi .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = gitme@192.168.53.20:/home/gitme/demo.git #修改这一步为自己的git服务器
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
8)cd java-demo
git add . #添加该代码进入存储git库
git status #查看git库
git commit -m "all"
[root@localhost java-demo]# git push origin master
Everything up-to-date
9)免密登录
ssh-keygen
ssh-copy-id gitme@192.168.53.20
10)根据内容提示cat /root/.jenkins/secrets/initialAdminPassword,来将密码复制粘贴并且放置在浏览器中。
11)根据推荐来安装相应的模块
12)可以进行注册登录
13)上传jenkings的私钥到网页上:cat /root/.ssh/id_rsa
14)添加凭据,将类型改为SSH Username with private key
15)而后在凭据中会生成该凭据id
16)新建item,选择流水线(已安装好的模块)
stage为任务项
这边要注意的是checkout这一列需要将对应的凭据ID更改,并且指向git服务器
其余的为镜像服务器,并且要确保路径和你的Harbor项目对应
17)执行Build now命令开始构建
18)而后便可以完成一键部署
备注
如果没构建成功,有以下可能:
1、所需要的模块因为网络等问题并没有下载成功
2、脚本配置文件中的IP地址和指向地点有没有写对的遗漏地点