k8s-jenkins持續釋出tomcat專案

隨風.浮萍發表於2021-01-25

k8s-jenkins持續釋出tomcat專案

一、需求

  這個實驗前期後後搞了很久(公司經常插一些別的事過來,然後自己比較懶,再加上自己知識不夠紮實)。二進位制部署完k8s叢集就開始做jenkins持續整合了。

       參考這個語雀的部署連結:https://www.yuque.com/duduniao/k8s/gp8n04【3. 交付Jenkins到K8S 開始到maven結束】。

       部署過程中遇到很多問題 :jenkins映象要從版本2.190.3換為blueocean(pipeline用),然後gitlab拉不了程式碼。。。【我的心酸血淚史:https://www.cnblogs.com/windysai/p/14161282.html 】

(想想,感覺自己做什麼都不太成功哇,感謝有個小夥經常幫我解決關鍵的問題,但我也有時也蠻討厭他的,“你除了xxx做成功其他實驗都沒成功過,或者xxx你做了好久了哦”,可能他覺得是句玩笑,也確實是個事實,但還是覺得不太好受滴~~~~控制不了別人的嘴,只能改變自己心態咯——》 付出加倍的努力哇:人家1小時搞掂的活,我花2個小時或者更多,應該。。。應該,也能做出來的吧,哈哈哈,思維有時跟不上呢,默默給自己打氣,fighting~~~努力,加油,好好學習)

       說回正題吧,之前解決那個利用configmap覆蓋tomcat專案資料庫配置檔案的問題【https://www.cnblogs.com/windysai/p/14305441.html】(是那個說我實驗經常做不成功的傢伙幫了我,這人真是讓我又愛又恨),然後回頭搞完這個流程吧(不然心底總覺得有根刺),公司辦公電腦開了4臺虛機做不了(就12G記憶體,拉映象的時候卡死不動),然後我把這環境搬到家裡(16G記憶體),勉強能做。然鵝,家裡那個jenkins叢集環境最近抽風了!!!jenkins登入連續幾天報錯:bad gateway,jenkins日誌沒有找到報錯,唯一比較像錯誤的是kubelet的日誌。。。。

 jenkins 開啟頁面及對應日誌(昨晚搞到我11點16分,才去洗洗睡的(這個時間要再加8小時)):

         

kubelet的日誌,還沒去研究。

 

 然後某天我領導在我工作日誌上評論,叫我把這個實驗在公司的測試平臺跑通釋出,想想也挺有道理,畢竟公司環境都有了,配置不用愁。大致介紹下這個環境(這個是公司前運維部署的,單節點master,2個工作節點,服務那列我寫的比較簡略)

主機名

IP

配置

服務

master1(單節點,沒做叢集)

192.168.0.233

4核CPU,10G記憶體,150G儲存

Docker、Harbor、kubernetes 1.10.1服務

slave01(工作節點1)

192.168.0.243

8核CPU,16G記憶體,100G儲存

Docker

slave02(工作節點2)

192.168.0.244

8核CPU,16G記憶體,100G儲存

Docker

 

 當我終於看到這個頁面,我是很感動的(我等了你很久呢)

 

 

、問題解決

說明:maven是從我的虛機複製出來的,因為構建公司專案要很多依賴包。

還是使用tomcat基礎映象:tomcat:8.5.31(我強調下,大家看這篇文章的時候一定要先看我這篇:https://www.cnblogs.com/windysai/p/14305441.html,因為我就是從這裡改的)

 

 ## 1、下載基礎映象到本地: tomcat:8.5.31  ——》最原始的映象

docker pull tomcat:8.5.31

 

##2、構造tomcat映象(可以理解為預處理)

就是加了啟動指令碼進去,刪除webapps下的檔案等

(1)Dockerfile

(刪掉了複製war包到映象那句,因為我要用jenkins構建的war包,不能寫死的!結合後面的pipeline程式碼一起看)

From tomcat:8.5.31    #上面docker pull已拷到本地

COPY wdtz-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war #去掉

 (2)runtomcat.sh  跟之前文章一樣,保持不變

(3)新增構建tomcat映象並上傳到harbor:v8.5.31   ——》 jenkins釋出用到

docker build -t tomcat:v8.5.31 ./
docker push 192.168.0.233/test/tomcat:v8.5.31

## 3、編寫交付給k8s的資源配置檔案:configmap.yaml,deployment.yaml,service.yaml

(1)configmap.yaml:保持不變

(2)deployment.yaml:spec.template.containers.image    改成:

image: 192.168.0.233/test/tomcat-deploy:v1    ——》jenkins釋出用

(3)service.yaml:spec.ports.nodePort: 30031   ——》上篇文章的埠用不了,有範圍限制

 

## 4、jenkins配置部分(直接貼程式碼了,因為準備洗洗睡)

 1 pipeline {
 2     agent any
 3     environment {
 4         GIT_URL="拉取的專案程式碼地址"
 5         BRANCH="分支名"
 6         BUILD_PATH="/root/k8s/"
 7     }
 8     stages {
 9             stage('拉取程式碼') {
10                 steps{
11                     echo "git pull。。。"
12                     git branch: "${BRANCH}", credentialsId: '拉取gitlab程式碼的憑證', url: "${GIT_URL}"
13                 }
14             }
15             stage('程式碼編譯') {
16                 steps{
17                     echo "maven build 。。。"
18                     sh "/root/ljy_test/maven-3.6.2-8u232/bin/mvn clean install -e -Dmaven.test.skip=true -P pro -f pom.xml"
19                 }
20             }
21             stage('構建映象') {
22                 steps {
23                    echo "build docker tomcat deploy image。。。"
24                    sh """
25                    echo '
26                        From 192.168.0.233/test/tomcat:v8.5.31
27                        LABEL maintainer ljy
28                        COPY ./target/wdtz-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps/ROOT.war
29                    ' > Dockerfile
30                    docker build -t 192.168.0.233/test/tomcat-deploy:v1 .
31                    docker push 192.168.0.233/test/tomcat-deploy:v1
32                    """
33                 }
34             }
35      
36             stage('部署到k8s節點'){
37                steps{
38                     echo "deploy project to k8s node。。。"
39                     sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/configmap.yaml"
40                     sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/deployment.yaml"
41                     sh "/usr/bin/kubectl apply -f /root/ljy_test/tomcat/service.yaml"
42                    }
43             }
44     }
45 }

三、實驗結果
訪問:http://192.168.0.233:30031/report/notice.html

 

 

 

 

   


 

相關文章