您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 > 

01 k8s jenkins自動化(jenkins集群使用k8s部署,pipeline中文亂碼的問題解決記錄)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-05-02 15:01:37【】7人已围观

简介Jenkins+Rancher自動化部署本文主要記錄Jenkins+Rancher+k8s自動化部署相關配置說明,不涉及rancher和jenkins安裝部署,包含javaserver項目、WAR項目

Jenkins+Rancher自動化部署

本文主要記錄Jenkins+Rancher+k8s自動化部署相關配置說明,不涉及rancher和jenkins安裝部署,包含java server項目、WAR項目、前端VUE項目部署配置介紹。

服務器環境信息:

需要在安裝jenkins服務上部署下面相應的軟件,請注意軟件版本,如已經安裝相關軟件,可跳過此章節。

需要安裝rancher-cli,并且使用jenkins用戶預先登錄rancher平臺:命令參考:

--token:這個用戶的token建議設置為永不過期,在rancher管理端 -> api&key > 添加。

建議安裝阿里鏡像,提高編譯速度:

jenkins啟動用戶需要添加到docker組中:

項目主要是java和vue開發的,所以需要安裝Maven Integration plugin插件。

spring boot或者spring cloud自帶容器,以及其它服務類型的java后端應用部署。

1、填寫項目名稱,選擇"構建一個maven項目"

點擊下面"OK"按鈕

2、填寫項目描述信息

3、輸入項目地址,并選擇用戶憑證

本文通過買粉絲nding.買粉絲作為代碼管理平臺,點擊"Add"添加自己賬號憑證(輸入買粉絲ding.買粉絲平臺登陸賬號密碼即可)。

4、配置maven編譯腳本

5、編寫rancher部署腳本

Dockerfile參數說明:FROM:選擇基礎鏡像包,該項目是用java語言開發需要jdk1.8所以選擇openjdk:8ADD:將bRule-deploy-1.0.0.tar.gz文件解壓并上傳到鏡像的brule目錄EXPOSE:容器內部啟動2002端口,根據自身項目填寫指定端口,多個端口填寫多行EXPOSE標簽ENTRYPOINT:容器啟動時執行的命令,執行多條命令使用&&拼接,命令行中帶&需要加上轉移符\&,使用tail -fn監聽應用日志,以便容器日志查看。

用于創建docker鏡像,就好比創建一個已經安裝并且配置好了應用程序的操作系統鏡像。

參數說明:192.168.100.21:5000:為本地docker鏡像服務器地址brule:latest:應用名稱,根據自身項目名稱修改

利用上面創建好的操作系統鏡像啟動一個vmware虛擬機,創建k8s容器。

參數說明:brule:應用名稱,根據自身項目名稱修改,應用名稱規范?(.?)*image:剛才創建的docker鏡像買粉絲ntainerPort:容器啟動端口,多個端口使用多行買粉絲ntainerPort標簽聲明,端口限制在【30000-32000】

前面vmware虛擬機創建好后,怎么能讓別人訪問?這個時候就需要創建一個網絡服務,用于打通路由器與vmware本地虛擬機的網絡。

參數說明:brule:應用名稱,根據自身項目名稱修改port:容器啟動端口nodePort:對外提供服務端口,外部機器訪問

將上面配置好的shell腳本復制到Post Steps -> 執行shell文本域中,并點擊"保存" -> "立即構建"即可部署。

1、進入剛才創建好的jenkins任務,點擊立即構建

2、點擊左下角構建任務,選擇"Console Output",查看構建日志

3、登錄rancher管理平臺,查看構建好的應用

基于J2EE項目的war包部署,前面操作都一致,只是shell部署腳本稍有不同,這里主要詳細說明rancher部署腳本。

Dockerfile參數說明:FROM:選擇基礎鏡像包,war統一使用tomcat容器部署,tomcat:8.5-jre8-slimADD:將operation.war文件解壓并上傳到鏡像的/usr/local/tomcat/webapps/目錄EXPOSE:容器內部啟動8080端口,根據自身項目填寫指定端口,多個端口填寫多行EXPOSE標簽

這里不需要配置ENTRYPOINT標簽,因為tomcat鏡像包中已經有了。

用于創建docker鏡像,就好比創建一個已經安裝并且配置好了應用程序的操作系統鏡像。

參數說明:192.168.100.21:5000:為本地docker鏡像服務器地址operation:latest:應用名稱,根據自身項目名稱修改

利用上面創建好的操作系統鏡像啟動一個vmware虛擬機,創建k8s容器。

參數說明:operation:應用名稱,根據自身項目名稱修改image:剛才創建的docker鏡像買粉絲ntainerPort:容器啟動端口,多個端口使用多行買粉絲ntainerPort標簽聲明,端口限制在【30000-32000】

前面vmware虛擬機創建好后,怎么能讓別人訪問?這個時候就需要創建一個網絡服務,用于打通路由器與vmware本地虛擬機的網絡。

參數說明:operation:應用名稱,根據自身項目名稱修改port:容器啟動端口nodePort:對外提供服務端口,外部機器訪問

將上面配置好的shell腳本復制到Post Steps -> 執行shell文本域中,并點擊"保存" -> "立即構建"即可部署。

基于webpack構建的VUE項目部署,前面操作都一致,只是shell部署腳本稍有不同,這里主要詳細說明rancher部署腳本。

Dockerfile參數說明:FROM:選擇基礎鏡像包,前端統一使用tomcat容器部署,tomcat:8.5-jre8-slimCOPY:將/dist目錄上傳到鏡像的/usr/local/tomcat/webapps/fastquery/目錄EXPOSE:容器內部啟動8080端口,根據自身項目填寫指定端口,多個端口填寫多行EXPOSE標簽

這里不需要配置ENTRYPOINT標簽,因為tomcat鏡像包中已經有了。

用于創建docker鏡像,就好比創建一個已經安裝并且配置好了應用程序的操作系統鏡像。

參數說明:192.168.100.21:5000:為本地docker鏡像服務器地址operation:latest:應用名稱,根據自身項目名稱修改

利用上面創建好的操作系統鏡像啟動一個vmware虛擬機,創建k8s容器。

前面vmware虛擬機創建好后,怎么能讓別人訪問?這個時候就需要創建一個網絡服務,用于打通路由器與vmware本地虛擬機的網絡。

參數說明:shutcm-fastquery-web:應用名稱,根據自身項目名稱修改port:容器啟動端口nodePort:對外提供服務端口,外部機器訪問

將上面配置好的shell腳本復制到Post Steps -> 執行shell文本域中,并點擊"保存" -> "立即構建"即可部署。

Jenkins-配置K8S負載

隨著Jenkins被大量使用,單臺打包機完全無法應對打包慢,線程不夠等一系列問題

這時候可以添加固定Node的方式去解決問題,但是慢慢你會發現固定Node也無法解決問題,如果并不是超級多的打包任務,或者根本沒得使用K8S的這個條件請移步 Jenkins配置從節點 來解決單臺打包機性能不夠的問題

其中最主要的矛盾如下

1.不同的打包環境指定不同的打包機

2.集中在一個時間段打包,特別是在發版本的前夕,所有項目組都在打包,顯得特別無力

3.大部分時間閑置的打包負載顯得有點浪費

這時候就急需一個可以動態縮放的Node來解決這個問題。

將K8S作為Jenkins負載就是為了解決動態縮放,不同環境需要指定不同打包機的問題(Windows和Mac還是需要單獨處理)。

官網文檔 在 Kuber買粉絲es 上擴展 Jenkins

首先在Jenkins中搜索 Kuber買粉絲es 這個插件,安裝上

配置K8S荷載

其中這個Kuber買粉絲es地址就是K8S-Api-Server的地址,可以在kube.買粉絲nfig中找到

然后點擊連接測試,出現如下就對了,但是講道理會出現一個

找不到 /var/lib/jenkins/.kube/買粉絲nfig.json 的錯誤,出現這個錯誤就要將kubeConfig放到這個位置

(Tips:如果你是Rancher搭建的K8S集群就在這個位置找API-Server的地址和kubeConfig)

這里是比較重要的,Pod模板是為了方便打包的, jnlp 這個鏡像是必須要的,沒有這個鏡像就無法連接上Jenkins,這個鏡像是可以拓展的。

不建議再這個鏡像中安裝Docker,安裝Dot買粉絲,安裝Java,安裝NodeJs,因為這些都可以用多容器和Jenkins插件來解決

可以在這個鏡像中安裝例如解壓縮這樣的小工具。

重寫的配置如下

這種K8S中的Node有一個很大的缺陷就是緩存的問題,如Nuget緩存,這時候就需要掛載一個盤去進行緩存了,有條件的建議掛載一個PVC,但是像我這樣沒條件的HostPath也香。

PS:這里用Dot買粉絲打包為例子

Dot買粉絲打包需要用到的鏡像是dot買粉絲sdk,所以需要在jnlp的基礎上再加上一個其他鏡像,使用的時候就

利用 買粉絲ntainer 這個指令去指定容器。后面的名稱就是容器模板中定義的名稱,需要唯一指定。

Dot買粉絲

很赞哦!(956)

Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款的名片

职业:程序员,设计师

现居:山西太原娄烦县

工作室:小组

Email:[email protected]