子任務(wù)2:搭建DevOps流水線環(huán)境
?
本實(shí)驗(yàn)以主機(jī)本地虛擬機(jī)為載體,搭建Dev-ops流水線環(huán)境
使用的工具:
目錄
一、實(shí)驗(yàn)概述
1.實(shí)驗(yàn)名稱
2.實(shí)驗(yàn)?zāi)康?/p>
3.實(shí)驗(yàn)環(huán)境
二、實(shí)驗(yàn)內(nèi)容
1.實(shí)驗(yàn)設(shè)計(jì)
2.實(shí)驗(yàn)過程
1.gitlab-server的搭建
2.harbor-server的搭建
3.Jenkins-server的搭建
4.Web-server的搭建
5.Dev搭建
6.工具集成配置
7.Jenkins插件安裝
8.Jenkins全局工具配置
9.Jenkins系統(tǒng)配置
10.搭建數(shù)據(jù)庫環(huán)境
11.開發(fā)代碼,上傳至gitlab倉庫
12.在harbor-server上構(gòu)建運(yùn)行應(yīng)用基礎(chǔ)容器鏡像
13.在jenkins-server上構(gòu)建jenkins應(yīng)用
三、實(shí)驗(yàn)總結(jié)
1.主要工作與收獲
2.存在問題與展望
一、實(shí)驗(yàn)概述
1.實(shí)驗(yàn)名稱
搭建DevOps流水線環(huán)境。
2.實(shí)驗(yàn)?zāi)康?/h3>
DevOps已經(jīng)成為解決軟件開發(fā)過程中出現(xiàn)的緩慢、孤立或其它故障的默認(rèn)方式。
假想你作為一家企事業(yè)單位軟件研發(fā)部門技術(shù)負(fù)責(zé)人,為提高軟件開發(fā)、部署效率,需要搭建一個(gè)DevOps流水線環(huán)境
(1)以本地虛擬機(jī)為載體,以Docker容器形式實(shí)踐DevOps應(yīng)用方案
(2)該方案應(yīng)實(shí)現(xiàn)從應(yīng)用開發(fā)、測試,到應(yīng)用部署上線的完整過程
(3)在應(yīng)用方案中要以具體的一種開發(fā)語言java/python開發(fā)一個(gè)簡單的應(yīng)用。
該應(yīng)用必須要有完整的一個(gè)界面??梢韵鄬唵?,但必須完整。
3.實(shí)驗(yàn)環(huán)境
主機(jī)dev:
OS:Windows 11 專業(yè)版
IP:因網(wǎng)絡(luò)狀態(tài)而定
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
二、實(shí)驗(yàn)內(nèi)容
1.實(shí)驗(yàn)設(shè)計(jì)
-
- gitlab-server的搭建
- harbor-server的搭建
- Jenkins-server的搭建
- Web-server的搭建
- Dev搭建
- 工具集成配置
- Jenkins插件安裝
- Jenkins全局工具配置
- Jenkins系統(tǒng)配置
- 搭建數(shù)據(jù)庫環(huán)境
- 開發(fā)代碼,上傳至gitlab倉庫
- 在harbor-server上構(gòu)建運(yùn)行應(yīng)用基礎(chǔ)容器鏡像
- 在jenkins-server上構(gòu)建jenkins應(yīng)用
2.實(shí)驗(yàn)過程
先決條件:本次dev-ops流水線需要使用的五臺主機(jī)中,dev為我所擁有的筆記本電腦,剩下的gitlab-server、harbor-server、jenkins-server和web-server均為由Ubuntu20.04.5虛擬機(jī)克隆而來,被克隆虛擬機(jī)中本身有docker環(huán)境,因此本次虛擬機(jī)環(huán)境搭建并沒有涉及docker的安裝,但會通過查看docker版本來表示本機(jī)安裝了docker。
1.gitlab-server的搭建
該步的內(nèi)容請查看我的另一篇博客:
云計(jì)算課程-Ubuntu系統(tǒng)搭建gitlab_豬玀豬玀豬的博客-CSDN博客
2.harbor-server的搭建
該步的內(nèi)容請查看我的另一篇博客:
云計(jì)算課程-Ubuntu系統(tǒng)搭建harbor倉庫_豬玀豬玀豬的博客-CSDN博客
3.Jenkins-server的搭建
該步的內(nèi)容請查看我的另一篇博客:
云計(jì)算課程-Ubuntu系統(tǒng)搭建jenkins服務(wù)_豬玀豬玀豬的博客-CSDN博客
4.Web-server的搭建
web-server的IP地址:192.168.61.133
Web-server只需要安裝docker即可
由于該虛擬機(jī)是由有docker環(huán)境的虛擬機(jī)克隆而來,因此已有docker
5.Dev搭建
本次實(shí)驗(yàn)使用windows11主機(jī)作為dev主機(jī)進(jìn)行開發(fā),已有g(shù)it工具
6.工具集成配置
1. 配置docker主機(jī)使用harbor
Jenkins-server主機(jī)、harbor-server主機(jī)、web-server主機(jī)都是安裝了docker環(huán)境的主機(jī),需要配置上述三個(gè)主機(jī)使用harbor
Harbor-server主機(jī)的信息:
Harbor倉庫地址:http://192.168.61.131
用戶名:admin
密碼:123456?
① 對于web-service主機(jī)
老師所給博客上的步驟:
?????? 實(shí)際操作步驟:
??? ??? #apt update(若已經(jīng)更新,可以跳過該步)
#apt install vim(若已安裝,可以跳過該步)
打開/etc/docker/daemon.json文件
修改內(nèi)容如下:
重啟docker使配置文件生效:
登陸時(shí),使用用戶名admin,密碼123456
報(bào)錯(cuò)如下:
在主機(jī)上進(jìn)行訪問:
發(fā)現(xiàn)也無法訪問,繼續(xù)運(yùn)行harbor-server,看看是否可以在本機(jī)上正常使用
發(fā)現(xiàn)在harbor-server上也訪問不了,
嘗試關(guān)閉重啟一下harbor服務(wù)
使用的指令是:
#docker-compose down -v
#docker-compose up -d
重啟之后,打開內(nèi)置瀏覽器并訪問
成功!可以回到web-server繼續(xù)進(jìn)行配置
使用docker login,連接到harbor-server 192.168.61.131
使用用戶名admin,密碼123456
② 對于harbor-server主機(jī)
老師所給博客上的步驟:
實(shí)際操作步驟:
#vim /etc/docker/daemon.json
修改配置文件,添加harbor倉庫信賴
重啟docker,重新加載配置文件
登錄harbor,用戶名admin,密碼:123456
花開二度,又報(bào)錯(cuò)了
將harbor服務(wù)關(guān)閉再重啟
再次登錄,用戶名admin,密碼123456
③ 對于jenkins-server主機(jī)
老師所給的博客上的步驟
實(shí)際的步驟:
修改配置文件:
#vim /etc/docker/daemon.json
修改內(nèi)容如下:
配置,重啟,登錄
這一次一氣呵成。
2. 配置jenkins主機(jī)使用docker
在jenkins-server主機(jī)上進(jìn)行配置即可。
3. 密鑰配置
① Dev主機(jī)連接至gitlab-ce
先在dev主機(jī)上生成密鑰對:
記事本打開C:\Users\Piggy\.ssh目錄下的id_rsa.pub文件
以ssh-rsa開頭的一大串內(nèi)容是公鑰
我的公鑰內(nèi)容為:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDLBOc9ryBK+2uVgI1+YOm4K9dzb1JajlTQvLFCRjarGv5RyB2Ay91rvql6FysRNFiw33n/TXjqzXCsTyibethvYwg70M1Efs0uPUPIYGX51aAqxmzyixNlZsH588oipLJRKHkqfbMWlHPZbt6IFTM0O0z8xOhVozWpkloDY0we6kTSmARSWeHhIJxnnIjCpv07ToIXANc4THlXcfZpnvSHM2ZOIb7oyomyE4ltHQPoQ8iLWuRotj7z0anWJijiaUFtOKxuRVWQJe9gOFJ2BjhzmnoNaS/nF6Ek8pnBqLS/zdYYOe9PdwM3PDi+Mi7kGSgNk2Juws0FQIn2NE+xL/d2yGxDSbGc6DqB6+hbwab1K54oqoYN9MoOEZj8tP/3c5FeRMnODl4NlvIGheCK/4ch37NOtNn0TTunuxXyFQtlw3MRDp4ZRURr3O6+kealo1HgV+vYipsBEujONoXagtXLpg/vRXGrwzU/HNuyYUM9WdIXqp17hTmCr4C9IXvtRF0= 豬玀@DESKTOP-341P8RO
?????? 接下來,將公鑰添加到gitlab-ce中
??????
?????? 正想要添加時(shí),出現(xiàn)了gitlab訪問不了的情況
(如果gitlab能正常訪問,可以跳過此步處理)
回到gitlab-server,對gitlab服務(wù)進(jìn)行重啟
?????? 重啟gitlab服務(wù)的命令為:
?????? # gitlab-ctl restart
?????? 重啟的輸出如下:
??????
?????? 還是沒辦法訪問,嘗試用ifconfig查看網(wǎng)卡情況
發(fā)現(xiàn)ens33的網(wǎng)卡消失了
此時(shí),因?yàn)閑ns33網(wǎng)卡的消失,ping不通baidu
重啟ens33的命令為:
# sudo dhclient ens33
再次訪問,就可以看到ens33網(wǎng)卡重新開啟了
再次試試打開gitlab:
訪問成功
接下來要進(jìn)行g(shù)itlab的ssh密鑰配置
進(jìn)行登錄
用戶名是root,密碼是搭建gitlab時(shí),要求用戶改變的
按上圖流程操作,將剛剛生成的公鑰放入此處:
點(diǎn)擊add key以后,會跳轉(zhuǎn)到此頁面:
這樣就算是配置好了dev主機(jī)和gitlab-ce的ssh連接
② Jenkins-server主機(jī)連接至gitlab-ce
在jenkins-server主機(jī)上生成密鑰對:
查看公鑰:
生成出來的公鑰內(nèi)容為:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZ0VmQ//bd/ySo4cs4RqAgPJdyTeHqUL/B/cL7iuoVP4wJN7WtQxHFsDWaDKT1J7fYCHKEWZWlSM+Mak51Sf/egsw3kRNOrEx9b5yqAevvFBue0PLqpZvC8F8BlN3nmx68uZGyJJ0xLlQmRjTOVDnPDyjEiM//uOgABpVtgi4uFU3SDmjInmCXsOcFjzD4uffwHHXIqHVaEdZusoG9SXKg62iz9d7OG7eV7rqjUHy6FHl2ZKfvhmAthiYcVHfJQYIvEZ3IbZF8ftQivL9UxcGdQLiidaRUv5avEesg/GpoD4fii9IFxV7m6S3Y8M47GIslBgjVVJLFRW2HWZpFkZ5gTaHj7ZTTCF9wjeOjq0bDBpLdC5BMyVV0kkn847WRQDmsbWR+bSxxBiF91tGQ2FajrCV4mp/qNGInoBEOyHU13r3VChjKaYNDzpe8SBygGenQSfFq8vC4YLGyqW17QJFAc3oMnwYn0XmmeZ5ECtyGoC92Ysz6FHo/fri1cZ8WDZ8= root@zhuluolin-virtual-machine
按照上述方法進(jìn)行添加,可以看到,gitlab中已經(jīng)有兩個(gè)ssh連接了
此時(shí),私鑰也需要進(jìn)行配置
Jenkins-server主機(jī)的私鑰應(yīng)該被配置到j(luò)enkins服務(wù)的憑據(jù)列表
查看jenkins-server主機(jī)的私鑰:
私鑰的內(nèi)容即包括begin和end行的內(nèi)容
打開jenkins服務(wù):192.168.61.132:8080
出現(xiàn)了jenkins的登錄頁面:
安裝jenkins時(shí)已經(jīng)設(shè)置,用戶名為admin,密碼為123456
進(jìn)入jenkin后,點(diǎn)擊manage Jenkins – manage Credentials
點(diǎn)擊global
添加一條憑據(jù):
在enter directly下,輸入私鑰內(nèi)容
輸入上述內(nèi)容以后,點(diǎn)擊create,會顯示下圖的內(nèi)容:
這樣就添加好了
7.Jenkins插件安裝
- 安裝maven integration
該插件用于編譯java項(xiàng)目
打開jenkins,點(diǎn)擊manage plugins管理插件
點(diǎn)擊available plugins可選插件
輸入maven查找相關(guān)內(nèi)容
第一個(gè)(Maven Integration)就是我們所需要的
點(diǎn)擊下載
這樣就安裝好了maven integration
- Git parameter插件
用于基于git版本提交進(jìn)行參數(shù)構(gòu)建項(xiàng)目
安裝成功。
- gitlab插件
該插件用戶jenkins-server拉去gitlab項(xiàng)目
??? 安裝成功
- generic webhook trigger
該插件用于項(xiàng)目的自動化構(gòu)建
安裝成功。
- ssh
該插件用于jenkins-server對web-server實(shí)施項(xiàng)目部署
這個(gè)紅色的報(bào)錯(cuò)信息可以先不管它。目前對于我們要搭建的dev-ops模型來說暫時(shí)不構(gòu)成影響。
安裝成功
8.Jenkins全局工具配置
打開jenkins的全局工具配置
即global tool configuration
- jdk配置
查看當(dāng)前jdk的信息
查看發(fā)現(xiàn),$JAVA_HOME的輸出為空
為什么呢?
原因是jenkis-server主機(jī)使用apt install安裝jdk
這是不會自動將JAVA_HOME內(nèi)置到環(huán)境變量中的
可以先查看java安裝在哪里
可以知道,java安裝在/usr/bin/java下
輸出這個(gè)目錄的內(nèi)容:
可以發(fā)現(xiàn),java是由alternatives進(jìn)行管理的
即,可以在系統(tǒng)中設(shè)置并切換多個(gè)jdk版本
因此,可以通過alternatives查看可用的java版本
由此,可以得知,java的安裝路徑為:
/usr/bin/jvm/java-11-openjdk-amd64/bin/java
接下來可以設(shè)置JAVA_HOME了
# vim /etc/profile
打開配置文件后,在文件的末尾加上如下內(nèi)容
退出文件編輯
重新加載資源文件
# source /etc/profile
再次查看java home內(nèi)容:
此時(shí)就將java寫入了環(huán)境變量中
現(xiàn)在,打開jenkins服務(wù)頁面
點(diǎn)擊 manage Jenkins,選擇global tool configuration
- git配置
先看一下jenkins-server主機(jī)上安裝的git工具版本
- maven配置
先查看maven的版本信息
這里的MAVEN_HOME也沒有顯示內(nèi)容
需要手動進(jìn)行配置:
# vim /etc/profile
在文件末尾寫入如下內(nèi)容:
退出文件編輯
重新加載配置文件:
# source /etc/profile
查看maven home的信息:
現(xiàn)在,進(jìn)入jenkins 的服務(wù)頁面,配置maven 的內(nèi)容
按照如上內(nèi)容進(jìn)行配置即可。
9.Jenkins系統(tǒng)配置
該步的內(nèi)容請查看我的另一篇博客:
云計(jì)算課程-DevOps流水線中jenkins的系統(tǒng)配置_豬玀豬玀豬的博客-CSDN博客
10.搭建數(shù)據(jù)庫環(huán)境
對web-server進(jìn)行操作,在上面安裝數(shù)據(jù)庫管理系統(tǒng):
安裝完成以后,mariadb會自動啟動, 查看mariadb的服務(wù)運(yùn)行狀態(tài)
(本項(xiàng)目暫時(shí)不適用數(shù)據(jù)庫功能)
11.開發(fā)代碼,上傳至gitlab倉庫
- 在gitlab-server主機(jī)的gitlab服務(wù)上創(chuàng)建一個(gè)空的倉庫
該倉庫的地址:
使用ssh clone
git@192.168.61.130:root/zhuluo-yjs.git
使用http clone
http://192.168.61.130/root/zhuluo-yjs.git
- Dev主機(jī)克隆該倉庫
第一次失敗
第二次就差成功了
- Dev主機(jī)寫含頁面的springboot項(xiàng)目
在創(chuàng)建項(xiàng)目時(shí),
Project sdk使用correto-11
Java版本使用java 11
頁面內(nèi)容為:
編寫完成以后,需要將以上的項(xiàng)目代碼上傳到gitlab中
# git tag 1.0.0
為本次提交打標(biāo)簽,表示提交的時(shí)1.0.0版本
使用git show 可以查看到此次提交的內(nèi)容
上傳到倉庫
返回gitlab-server倉庫中進(jìn)行查看
出現(xiàn)如上的結(jié)果,表示上傳成功
12.在harbor-server上構(gòu)建運(yùn)行應(yīng)用基礎(chǔ)容器鏡像
任務(wù)是安裝與項(xiàng)目代碼版本對應(yīng)的jdk
在此,我要安裝的是openjdk11
查看docker中的鏡像,現(xiàn)在能看到openjdk11了
打開harbor,發(fā)現(xiàn)harbor打不開,需要處理一下
(harbor打得開的話,可以跳過處理的步驟)
進(jìn)入harbor安裝目錄,重新啟動harbor
Harbor-server 的ip地址為:192.168.61.131
Harbor服務(wù)的端口號就是80
要將openjdk鏡像上傳到harbor倉庫中,需要先修改鏡像的tag等信息
以下完成了修改tag,登錄harbor,推送鏡像的操作
打開harbor,查看倉庫中是否已經(jīng)有openjdk的信息:
現(xiàn)在openjdk11已經(jīng)被上傳到了harbor倉庫中
13.在jenkins-server上構(gòu)建jenkins應(yīng)用
該步的內(nèi)容請查看我的另一篇博客:
云計(jì)算課程-構(gòu)建jenkins應(yīng)用_豬玀豬玀豬的博客-CSDN博客
三、實(shí)驗(yàn)總結(jié)
1.主要工作與收獲
主要有如下收獲:文章來源:http://www.zghlxwxcb.cn/news/detail-779023.html
- 安裝并搭建gitlab服務(wù)
- 安裝并搭建harbor服務(wù)
- 安裝并搭建jenkins服務(wù)
- 配置docker與harbor之間的連接
- 配置jenkins與gitlab之間的連接
- 配置jenkins與web-server主機(jī)的連接
- 網(wǎng)卡的重啟與配置
- 對docker更深層的理解
- 掌握dockerfile的使用
- 了解wget工具的使用
- 學(xué)會配置java、maven環(huán)境變量
- 更多的git使用技巧
- 對防火墻的理解加深
- 學(xué)會ssh服務(wù),掌握ssh加密與連接
- Jenkins的插件及其作用
- 對dev-ops流水線全流程的搭建和了解
- 搭建mariadb數(shù)據(jù)庫環(huán)境
- 掌握了springboot結(jié)合前后端內(nèi)容的技術(shù)
- 對Ubuntu系統(tǒng),或者說linux系統(tǒng)有了更深的理解
- 制作docker鏡像并上傳
2.存在問題與展望
希望未來能夠嘗試搭建使用數(shù)據(jù)庫的,較為復(fù)雜的java后端源碼,實(shí)現(xiàn)自動化部署,解決人力物力并提高迭代開發(fā)的可靠程度。文章來源地址http://www.zghlxwxcb.cn/news/detail-779023.html
到了這里,關(guān)于云計(jì)算課程第四次實(shí)驗(yàn)-搭建DevOps流水線的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!