.Net微服務(wù)實戰(zhàn)之CI/CD(一)

地基
在軟件工程不少的思想、概念來源于建筑工程,大家也喜歡把開發(fā)軟件比喻成建房子。那么如果說運(yùn)維是軟件的地基,那么框架就是承重墻。起房子就是先打地基,再建承重墻。地基打得越穩(wěn),房子才能起得更高。也等同于運(yùn)維技術(shù)越扎實,系統(tǒng)才能更加健壯。
特別在微服務(wù)興起得時代,運(yùn)維越發(fā)的現(xiàn)得尤為得重要,DevOps也風(fēng)靡全球。只要聊起DevOps與微服務(wù),CI/CD總是不能避免的。CI/CD不一定限制于微服務(wù),我認(rèn)為無論在什么樣風(fēng)格的架構(gòu)和怎么樣組織架構(gòu)的團(tuán)隊,自動化技術(shù)越早使用收效越高。
我認(rèn)為IT人員更多是腦力大于體力的勞動者,一些重復(fù)的、錯誤率高的、無法對自己有增長的工作應(yīng)該盡早交給自動化技術(shù)處理,節(jié)省了不需要浪費(fèi)的時間與精力,這樣才能更好的去完成有價值、有意義的工作。
部署圖
以上是我在虛擬機(jī)環(huán)境的部署圖:

一共三臺服務(wù)器,每臺服務(wù)器都裝了Docker,Server B是docker swarm的Manger角色,A和C是worker。
在Server B裝了Jenkins、Docker Registry、dotnet sdk,Server A裝了Gitlab,Server C裝了私有Nuget。
那么工作流程是:
遷入代碼push到Gitlab
Gitlab觸發(fā)webhook的push觸發(fā)事件并主動通知Jenkins構(gòu)建
Jenkins在Gitlab獲取源碼并通過配置好的規(guī)則與shell腳本進(jìn)行構(gòu)建
如果是工具庫則dotnet push到192.168.88.139:8081的私有Nuget
如果是Web應(yīng)用則通過dockerfile構(gòu)建docker鏡像并push到192.168.88.141:6000的Docker Registry,然后由docker swarm create多節(jié)點
安裝Docker
安裝最新版本Docker,并在所有需要使用docker的服務(wù)器節(jié)點根據(jù)以下步驟安裝
升級yum并安裝基礎(chǔ)組件
yum?upgrade?-ysudo?yum?install?-y?yum-utils?device-mapper-persistent-data?lvm2
添加安裝源信息
yum-config-manager?--add-repo?https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝docker-ce
yum?makecache?fastyum?install?docker-ce?-y
?
修改鏡像源
vim?/etc/docker/daemon.json???
{??"registry-mirrors"?:?[????"http://ovfftd6p.mirror.aliyuncs.com",????"http://registry.docker-cn.com",????"http://docker.mirrors.ustc.edu.cn",????"http://hub-mirror.c.163.com"
??],??"insecure-registries"?:?[????"registry.docker-cn.com",????"docker.mirrors.ustc.edu.cn"
??],??"debug"?:?true,??"experimental"?:?true}
啟動docker
systemctl?daemon-reload
systemctl?enable?docker
systemctl?start?docker

安裝 Docker Registry(私有倉儲)
選取一個服務(wù)器-Server B使用docker安裝Registry
docker?run?-d?-p?6000:5000?-v?/root/docker_registry:/var/lib/registry?--name?private_registry?registry
開放6000端口
firewall-cmd?--permanent?--add-port=6000/tcp
firewall-cmd?--reload
以上就Registry安裝完成了,但為了正常使用還需要做點配置修改
編輯所有需要docker registry使用的節(jié)點的daemon.json文件,確保能正常訪問
vim?/etc/docker/daemon.json
{"insecure-registries":["192.168.88.141:6000"]
}
重啟docker
systemctl?daemon-reload
service?docker?restart
如果需要推送鏡像到私庫確保標(biāo)簽(tag)前綴帶有私庫地址
docker push?192.168.88.141:6000/testdockerswarm

本文轉(zhuǎn)載自博園:
https://www.cnblogs.com/skychen1218/p/13384073.html