容器編排從幾年前群雄割據、各方亂戰,到如今Google的k8s一統天下。能迅速力挽狂瀾,已說明其技術實力。但k8s複雜的架構,不太友好的文檔,確實讓一些初學者望而卻步。近期正好一直在學習k8s的東西,走了一些彎路。整理出來以備參考。
由於內容過多,本文將分多章介紹k8s集群構建過程,並發布demo到k8s集群,簡單演示一個完整CI/CD的自動化過程。各章節內容如下:
一、k8s集群環境準備
二、rancher搭建k8s集群環境
三、rancher應用部署
四、Jenkins部署應用到rancher集群
部署資源
centos7.7虛擬機3臺,對應ip如下:
- 192.168.0.110- 192.168.0.111- 192.168.0.112
192.168.0.110 : rancher和jenkins部署機器。
192.168.0.111/192.168.0.112:k8s集群node節點。筆者機器資源所限,超過3臺虛擬機,個人筆記本電腦將無法工作。使用者可根據具體情況增加虛擬機節點。
Jenkins安裝
192.168.0.110 虛擬機安裝Jenkins程序
docker run \ -u root \ --restart=always \ -d \ -p 8080:8080 \ -p 50000:50000 \ -v /data/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /data/repository:/root/.m2/repository \ jenkinsci/blueocean
啟動完成,瀏覽器訪問http://192.168.0.110:8080 地址。
首次啟動,初始密碼位於/data/jenkins_home/secrets/initialAdminPassword文件中,設置密碼後,更新常用Jenkins插件。
Jenkins安裝Redeploy Rancher2.x Workload 插件
Redeploy Rancher2.x Workload插件,可通過Jenkins發布rancher集群中安裝的應用服務。
注意該插件只支持redeploy rancher集群中的應用,不能發布新應用。即該插件只支持rancher集群中配置好的應用,插件僅通過api調用rancher中workload完成的配置,觸發rancher將應用部署到集群中。新應用需先在rancher中配置workload,然後Jenkins插件方能生效。
插件安裝完成後,瀏覽器http://192.168.0.110:8080/restart ,重啟Jenkins使插件立即生效。
Jenkins新建任務,輸入app-demo,並選擇自定義方式。
設置git倉庫,這裡為阿里雲code倉庫。
添加參數化構建配置
添加boolean參數buildImage(打包鏡像)
添加string參數appName(應用鏡像名稱)
添加string參數version(應用版本號)
添加maven構建
添加shell腳本
按上圖添加以下shell內容,其中shell變量來源於Jenkins上一步參數構建值。
#!/bin/bash# 切換到部署jar包目錄,替換為實際項目目錄cd ****/***-demoecho "cur dir is: `pwd`"#登錄阿里雲docker鏡像倉庫,公開鏡像倉庫跳過這一步,自行替換帳號密碼docker login --username=***** registry.cn-shanghai.aliyuncs.com -p=***if [ $buildImage == true ]; then echo "start to build docker images..." #構建docker鏡像 docker build --tag=$appName:$version . #將鏡像推向阿里雲註冊倉庫 docker push $appName:$versionfi
添加rancher插件
添加rancher插件前,先要在rancher工具中添加api key。
登錄rancher工具界面。點擊右上角用戶頭像 - API&Key 按鈕,添加api key。
點擊 addKey。
填入描述,點擊create。
記住對應信息,右側按鈕複製內容。注意:秘鑰信息只有新建時明文顯示,關閉後無法查看,請提前做好保存,後續jenkins插件會用到。
jenkins 中添加rancher redeploy插件
註:若插件面板有亂碼,可參考後面rancher redeploy 亂碼解決。
上圖填寫內容說明:
點擊 添加 ,新增rancher api 認證。
按上圖,填寫相應信息。其中endpoint 和 Bearer Token對應rancher中添加api key是預先生成的值。
點擊 添加 完成密鑰設置。
工作負載地址,可以從rancher界面app-demo應用workload列表頁 - 右側編輯 - view in api 查看。
值為打開瀏覽器頁面url中/project/* 那部分路徑。
點擊保存,完成jenkins任務配置。
rancher redeploy 亂碼解決
jenkins版本可能導致rancher redeploy亂碼問題。
下載redeploy-rancher2-workload.jar到本地。
https://gitee.com/eagle_daiq/pub/blob/master/redeploy-rancher2-workload.jar
通過ftp上傳本地文件到,jenkins所在機器/data/jenkins_home/plugins/redeploy-rancher2-workload/WEB-INF/lib目錄,覆蓋redeploy-rancher2-workload.jar文件。重啟jenkins。
jenkins部署發布
點擊jenkins中app-demo任務,開始構建。
構建完成,查看rancher app-demo workload列表頁,可見最新版本20200503版本部署已被觸發。
總結
到此,通過jenkins發布app-demo項目的CI/CD自動化集成已全部完成。
本系列文章介紹了rancher搭建k8s集群,並通過一個簡單maven app-demo示例,演示jenkins到rancher工具的集成過程。希望對初入k8s集群學習的朋友有所幫助。有任何疑問可留言討論。
清風明月eagle
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.