.NET 微服務——CI/CD(4):避坑和一點經驗

如果你看過之前幾篇文章,應該已經Jenkins成功搭建了CICD環境,但是進入正式環境會有一些坑,不注意中招的話很難受,這裡總結一下,避免重複消耗精力。

後門漏洞

Jenkins有後門,這是個老問題了。雖然早在18年就有人發現,而且當時Jenkins團隊也快速打了修補程式(2.137以後),但你下載的某些插件如果有漏洞(比如最近Log4j的大雷)也可能導致被黑。

為了杜絕這個問題,我建議你做到這幾點:

1、升級Jenkins到最新穩定版(2021-12-01最新2.319.1)

2、如果可以,不要把Jenkins伺服器暴露在公網。可以選擇個人電腦+花生殼。

3、放通docker tcp埠時,不要放2376埠。

4、不要在業務伺服器上安裝Jenkins。

5、替換/刪除掉可能出現問題的插件。

6、SSH Server不要配置root賬戶。

6、修改Jenkins授權:

無用鏡像

通過Jenkins自動構建鏡像後,會在Docker留下一個空鏡像,大概700-800M左右,要命的是每構建一次就會多一個,多來幾次伺服器的磁碟就不夠用了。。。。手動可以解決但不優雅,CICD嘛,必須全自動。

增加構建步驟,通過SSH執行這段命令:

echo "==========清理空鏡像=========="
clearImagesList=$(docker images -f "dangling=true" -q)
if [ ! -n "$clearImagesList" ]; then
echo "沒有空鏡像"
else
docker rmi $(docker images -f "dangling=true" -q)
echo "空鏡像已清理"
fi

如果你選擇上傳鏡像到阿里雲倉庫(或其他雲倉庫),還會留下一個tag鏡像和原鏡像,也可以在構建步驟中刪除:

echo "==========清理鏡像=========="
docker rmi -f mydotnet6
docker rmi registry.cn-shenzhen.aliyuncs.com/命名空間/倉庫名:版本號

硬體配置

根據實踐經驗,建議Jenkins所在伺服器至少擁有2核4GB的配置,低於這個配置時,構建過程可能會十分緩慢,會導致它經常彈出異常錯誤。

私服鏡像倉庫

Jenkins默認支援Harbor,非常簡單但需要你先搭建好Harbor。通過這種方式上傳可以勾選「清理本地鏡像」:

其他的小細節不再贅述,進入生產環境後大家都會有自己的經驗。歡迎討論。

如果你現在還沒有利用Jenkins搭建過CICD環境,建議你查看前幾篇文章。