Jenkins自動化部署完整流程


jenkins+maven+gitlab+harbor+k8s的 CI/CD

 首先需要安裝jenkins,maven,gitlab,harobor,k8s等工具:

  1. jenkins安裝   安裝文檔:https://www.cnblogs.com/momoyan/p/12770919.html
  2. maven安裝    安裝文檔:https://blog.csdn.net/qq_38270106/article/details/97764483
  3. gitlab安裝      安裝文檔:  https://www.cnblogs.com/momoyan/p/14033256.html
  4. harbor安裝    安裝文檔:https://www.cnblogs.com/dalianpai/p/11800371.html
  5. k8s安裝         安裝文檔:https://blog.csdn.net/weixin_42214548/article/details/109001157
  6. docker安裝   安裝文檔:https://www.cnblogs.com/momoyan/p/9129200.html

1.Jenkins配置

安裝完之后,開始配置:

1.1.安裝jenkins插件

點擊系統管理,管理插件,安裝 GitHub Branch Source PluginGitlab Authentication pluginGitlab Hook PluginGitLab PluginMaven Repository Server PluginPublish Over SSHWorkspace Cleanup Plugin 這些插件

插件下載地址:

1.2.新建任務

 

 

1.3.配置jenkins項目

(1)寫好描述 主要是寫上項目名

 

 (2)配置git地址

 

 

注:第一個紅框標起來的是git地址,是從gitlab上獲取的,首先登陸gitlab,如下圖,從這里獲取

 

 

而第二個紅框標識的證書而是需要從jenkins初始頁面憑據添加的,首先點擊jenkins首頁的憑據,依次點擊

 

 之后點擊

 

 類型選擇:

 

 之后設置成如圖樣子,注意username要和登陸jenkins的用戶一樣,證書生成也不多說,在jenkins本機生成,貼上去即可,ID選項不用管,之后會自動生成一串ID:

 

 設置好憑據后,回到創建jenkins項目的界面,選擇:

 

 如果出現大片紅色報錯,沒關系,那一定是gitlab沒有配置jenkins的密鑰,去配置一下,首先打開gitlab,點到相應項目中,再點擊圖中位置,填寫好.ssh/id.rsa.pub中的內容即可:

 

 再回到jenkins看看是否可以了呢,可以了就不會報一片紅~  繼續下一步

(3)構建觸發器選擇基本默認,有別的需要可以自定義:

這個選項中的url之后會用到,需要配置到gitlab~

 

 (4)接下來就是maven打包這里,配置pom.xml的絕對路徑,然后輸入打包命令,將會自動完成:

 

 (5) 接下來就是配置建立后的步驟:

 

 添加shell,完成要完成的動作(根據自己需求來)

HOST="192.168.147.138"

API_PORT=80

IMAGE_NAME="192.168.147.138/docker-tomcat/tomcat:v$BUILD_NUMBER"

docker build -t $IMAGE_NAME .

docker push %IMAGE_NAME

sed -i "s/BUILD_NUMBER/$BUILD_NUMBER/g" docker-tomcat.yaml

 

 再添加一段ssh,通過這個把生成的包或者文件傳到master並執行命令:

 

 

 

配置好點擊保存,這樣,jenkins就算完成了,接下來去到gitlab看下:

點到相應的項目中,配置url,這個url在jenkins配置的時候出現過,復制過來即可,保存

 

 配置好以后,拉到底下,我們測試一下:

 

 出現這樣說明配置成功了:

 

 這樣子整套CI/CD流程也就做完了,提交代碼后會自動打包部署。

測試:

 寫博客的這個項目我並沒有保存,畢竟也是公司環境,所以我拿之前配置好的一個項目(項目名:docker)做下測試,記錄下成果:

首先我提交代碼,看jenkins變化:

 

 

部署已經成功了,看下部署過程:

 

 

 

 部署已經完成了,去機器上看下:

   kubectl get po

 

 下圖可以看到這個pod鏡像是剛打出來的,v33版本

   kubectl describe pod ng-364889701-m09zn

 

 去harbor看下鏡像,是有的:

 

 

版本回滾

那么我們發現一個問題,cicd是做好了,可是如果版本有問題,怎樣回滾呢,其實也是很好解決的,可以用k8s自己的rolling update機制去完成,不但可以回滾版本,還可以彈性伸縮pod數量。

首先先試一下回滾,查看一下之前的版本:

kubectl rollout history deployment ng

 

 讓我們用一條命令回滾到上一版本:

kubectl rollout undo deployment ng

 

 

看下現在pod用的是否是上個版本的鏡像:

kubectl get po

 

 之前我們是v33版本,回滾到v32版本也是成功了,接下來說下怎樣回滾到指定版本:\

  kubectl rollout history deployment ng

 

 通過一條   

kubectl rollout undo deployment deploy名 --to-revision=2

指定版本前方所對應的數字即可。

彈性伸縮

接下來說如何彈性伸縮:

手動伸縮通過命令:

kubectl scale deployment deploy名 --replicas=2
例如:
kubectl scale deployment ng --replicas=2

設定replicas數量即可,如圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM