.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環境,建議你查看前幾篇文章。