前言
持續(xù)集成對于微服務開發(fā)來說眶蕉,已經(jīng)是不可或缺了砰粹,能夠極大的提升效率。由于自己在家鼓搗項目的過程中妻坝,時常會有一些發(fā)布伸眶,本著偷懶的目的,在家里搭建了這套環(huán)境刽宪,記錄下過程厘贼。
準備
- 一個docker服務器。用于部署docker私庫和jenkins服務
- 一個k8s集群圣拄。后續(xù)要不要出個關于k8s的教程呢
整體架構
todo
流程控制
- ?代碼推送到git倉庫
- ?git上打tag嘴秸,通過webhook觸發(fā)構建(本文不涉及,手動觸發(fā))
- ?構建完成調(diào)用docker build鏡像庇谆,然后推送到私有倉庫(搭建docker registry私庫)
- ?通過ssh在k8s服務器上執(zhí)行遠程命令岳掐,替換鏡像,完成滾動發(fā)布
部署
jenkins部署
創(chuàng)建服務
$ docker pull jenkins/jenkins:lts-jdk11
$ docker run -d --name jenkins -v jenkins_data_path:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -u root -p 8080:8080 jenkins/jenkins:lts-jdk11
說明下:-u root
饭耳、-v /var/run/docker.sock:/var/run/docker.sock
串述、-v /usr/local/bin/docker:/usr/bin/docker
都是為了能夠調(diào)用宿主機的docker執(zhí)行build鏡像
配置jenkins
-
初始化
通過瀏覽器訪問8080端口,就能打開jenkins的管理頁面了寞肖。
這里根據(jù)提示的路徑找到root密碼進行登錄
第一次會讓你選擇安裝插件纲酗,這里會非常耗時而且有一些會失敗,實測下來新蟆,后續(xù)手動安裝會更快而且不容易失敗觅赊,所以這里選擇右邊,然后取消所有勾選進行下一步
- 安裝中文插件琼稻,參考這里
-
安裝常用插件吮螺,安裝完成之后重啟生效
- 添加憑據(jù)
- 首先需要為jenkins服務器生成密鑰
ssh-keygen -m PEM -t rsa
,注意這里的-m PEM
參數(shù)帕翻,如果沒有的話鸠补,會生成較新版本的證書,jsch無法識別嘀掸,后面無法用于ssh登錄 -
然后在jenkins中添加憑據(jù)
注意這里用戶名要輸入待會兒需要用到的k8s集群的登錄用戶名莫鸭,這樣這個憑據(jù)就可以同時用于git和ssh
- 將剛生成的公鑰添加到git倉庫
創(chuàng)建第一個jenkins項目
示例的構建用的是一個maven項目
- 由于使用maven構建,所以首先需要配置jdk和maven横殴,在global tool configuration中進行配置
-
首先是maven被因,點擊新增maven卿拴,然后勾選install automatically,選擇最新版本即可
-
jdk的話梨与,我這里是手動下載的openjdk11堕花,然后配置了路徑。前面下載插件的時候會自動下載Oracle JDK auto installer粥鞋,但是最高支持到jdk9缘挽,而且還有l(wèi)icense問題
-
創(chuàng)建任務
-
完成上一步最基本的配置之后,點擊Build Now呻粹,如果配置都是ok的壕曼,應該就能成功了
如果有構建失敗,可以進入具體的構建中等浊,點擊控制臺輸出查看失敗原因
添加docker鏡像構建
- 配置docker服務器腮郊,這里是以jenkins和docker在一臺服務器上為例,如果不在筹燕,估計得用api調(diào)用轧飞,這里就不示范了。
點擊Test Connection后撒踪,如果顯示了版本號过咬,說明配置ok。注意制妄,如果使用docker運行jenkins掸绞,那么啟動jenkins容器的時候務必添加參數(shù)-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker
,并且jenkins需要使用此鏡像耕捞,否則容器中會因為權限問題導致調(diào)用宿主機的docker報錯衔掸;如果使用官方鏡像,可以在啟動參數(shù)中增加-u root
注意砸脊,請盡量在x86的服務器上部署。我開始嘗試在我的香蕉派上部署纬霞,結果這一步一直調(diào)用不到docker凌埂,網(wǎng)上搜索了一番也沒找到解決的辦法,然后換x86的服務器就成功了诗芜。 -
打開上一步的項目配置頁瞳抓,然后添加一個post step
-
保存之后重新點擊構建,能夠在控制臺輸出看到這樣的信息就說明成功了
調(diào)用k8s服務器伏恐,完成發(fā)布
-
在配置中添加ssh服務器孩哑,記得將之前的公鑰添加到目標服務器的authorized_keys中,這樣才能免密登錄
-
構建配置中添加一個post step配置翠桦,這里直接替換掉deployment的鏡像即可