jenkins用不用docker docker和jenkins區(qū)別或著有什么關(guān)系?
docker和jenkins區(qū)別或著有什么關(guān)系?docker相當(dāng)于是一個(gè)容器,可以集合所有軟件在里面jenkins是一個(gè)自動(dòng)化部署工具微服務(wù)在Docker k8s下如何部署?正好最近在項(xiàng)目中用到了這些
docker和jenkins區(qū)別或著有什么關(guān)系?
docker相當(dāng)于是一個(gè)容器,可以集合所有軟件在里面
jenkins是一個(gè)自動(dòng)化部署工具
微服務(wù)在Docker k8s下如何部署?
正好最近在項(xiàng)目中用到了這些技術(shù),我來(lái)拋磚引玉吧。
首先說(shuō)結(jié)論:
1. k8s 是非常好的一項(xiàng)技術(shù),很穩(wěn)定。如果發(fā)現(xiàn)正在運(yùn)行的 pod 的數(shù)量不等于用戶(hù)設(shè)定的期望值, k8s 則會(huì)自動(dòng)創(chuàng)建或者刪除 pod,直到兩者相等。這樣既保障了服務(wù)的不間斷運(yùn)行,同時(shí)還可以動(dòng)態(tài)縮放服務(wù)的規(guī)格。用戶(hù)只要調(diào)整 pod 的 replicate 的數(shù)量即可,其他的都交給 k8s 就好,非常省心。
2. 要用 jenkins 來(lái)集成命令行操作,雖然我個(gè)人非常偏愛(ài)使用命令行,但是我不得不承認(rèn)用 jenkins 集成命令行操作會(huì)極大的提升工作效率。
下面說(shuō)實(shí)現(xiàn)步驟:(本文以 azure 平臺(tái)為例)
1. 編寫(xiě) Dockerfile
2. 在 jenkins 創(chuàng)建任務(wù),并執(zhí)行包含如下命令的腳本
2.1 git pull 源代碼到本地
2.2 docker build 命令生成鏡像文件
2.3 docker 定義鏡像文件版本號(hào)并上傳到 azure 平臺(tái)
2.4 kubectl 命令來(lái)創(chuàng)建 k8s 的 deployment & service.
2.5 每次版本更新可以調(diào)用 update image 來(lái)編譯新的鏡像版本并提供給 k8s 使用
注意在創(chuàng)建 k8s 的 deployment 和 service 的時(shí)候需要編寫(xiě) yaml 格式的配置文件, deployment 配置包括 名稱(chēng),鏡像文件地址, cpu 最大最小分配值,內(nèi)存最大最小分配值等。service 配置文件包括 名稱(chēng),引用的 deployment 名稱(chēng),以及是否使用 load balancer等。
更多詳細(xì)信息可以參考我的 wiki. https://github.com/FamingHou/MyWiki
用Jenkins打包docker鏡像的時(shí)候,怎么把版本號(hào)加上去?
先創(chuàng)建一個(gè)自由風(fēng)格的軟件項(xiàng)目
勾選"參數(shù)化構(gòu)建過(guò)程", 然后選擇參數(shù)類(lèi)型, 比如"字符參數(shù)"
在構(gòu)建步驟中選擇"Build/Publish Docker Image"(前提是安裝好docker插件)
如果不想使用docker插件, 可以直接通過(guò)腳本的方式, 但是tag還是通過(guò)${var}的方式給到docekr build命令
保存后點(diǎn)擊"Build with Parameters"按鈕, 開(kāi)始構(gòu)建, 輸入tag參數(shù)值后, 點(diǎn)擊"開(kāi)始構(gòu)建"