日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

基于 Rancher 的企业 CI/CD 环境搭建

發(fā)布時(shí)間:2025/5/22 编程问答 98 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于 Rancher 的企业 CI/CD 环境搭建 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

CI(Continuous Integration)持續(xù)集成,CD(Continuous Delivery) 持續(xù)交付(當(dāng)然也有叫 Continuous Deployment)通常會(huì)采用一些軟件如Jenkins、Drone、Travis、Gocd等來(lái)輔助我們。它們能夠與Git SVN等代碼管理倉(cāng)庫(kù)集成,幫助我們實(shí)現(xiàn)一些自動(dòng)化任務(wù)。

CI/CD軟件很多,再加上代碼倉(cāng)庫(kù)不同,外加上業(yè)務(wù)流程的復(fù)雜度和不同開(kāi)發(fā)語(yǔ)言的特性,會(huì)產(chǎn)生千變?nèi)f化的組合。可以說(shuō)CI/CD本身就是一個(gè)很大的話題,正所謂一千個(gè)人眼中就有一千個(gè)哈姆雷特,所以我們這次分享主要還是關(guān)注在與Rancher結(jié)合方面。

下面我們就以jenkins為例,看Rancher如何與其集成。

首先我們可以想到,對(duì)于一個(gè)CI/CD環(huán)境,Rancher可以提供什么?

  • 快速部署jenkins

  • 環(huán)境隔離/用戶管理

  • 基于Rancher compose進(jìn)行應(yīng)用編排

  • 提供外部訪問(wèn)入口

Rancher的Catalog中提供了jenkins部署的樣板:

左側(cè)是jenkins-ci server,右側(cè)是swam-plugin,這兩個(gè)可以組成一個(gè)master/slave模式的集群。

嘗試性的部署后,可以看到類似這樣的效果:

選用jenkins-swarm-plugin組成slave節(jié)點(diǎn), 這樣我們可以在jenkins跑任務(wù)時(shí)能夠和docker進(jìn)行更好的集成 。

構(gòu)建完畢后,可以在jenkins中看到集群狀況:

那么使用jenkins來(lái)做CI是一種怎樣的表現(xiàn)模式呢? 我們來(lái)通過(guò)一張圖來(lái)看下:

開(kāi)發(fā)人員 push commit后,代碼倉(cāng)庫(kù)收到提交信息。這時(shí)可以通過(guò)倉(cāng)庫(kù)自帶的hook來(lái)觸發(fā)jenkins build。也可以通過(guò)jenkins的自poll來(lái)獲取最新代碼。然后jenkins就自動(dòng)執(zhí)行你所設(shè)定的各種任務(wù)腳本。

插播一句,關(guān)于觸發(fā)jenkins build 的幾種方式:

  • Post commit hook (git原生hook)

  • Webhook (github/gitlab都支持,需要hook的server端接收請(qǐng)求

  • Jenkins有相應(yīng)的plugin)

  • Build periodically / Poll SCM

CI的過(guò)程根據(jù)業(yè)務(wù)的復(fù)雜程度,各有不同,一般情況下分為這幾步:

運(yùn)行測(cè)試用例—編譯lib—制作docker鏡像并push到倉(cāng)庫(kù)—ranchercompose 部署服務(wù)。

通常我們可以把 rancher-compose 的file直接寫在代碼project中,這樣jenkins可以直接讀取到,并執(zhí)行rancher-compose執(zhí)行部署服務(wù)。

在執(zhí)行rancher-compose時(shí),可以考慮下面兩種策略:

  • 每次根據(jù)jenkins的<buid_num>來(lái)創(chuàng)建新的stack

  • Rancher-compose --force-upgrade --pull 拉取最新鏡像并強(qiáng)制升級(jí)

在rancher-compose 執(zhí)行完畢后,通常交付一個(gè)對(duì)外訪問(wèn)的ip:port,但是這個(gè)訪問(wèn)地址一般來(lái)說(shuō)不是固定的,所以我們的業(yè)務(wù)服務(wù)部署完畢后,自動(dòng)綁定dns,是一個(gè)非常好的體驗(yàn)。

sync-service 可以將app-service的服務(wù)地址在dns中添加A記錄,這樣我們只需記住dns,就可以直接看到CD后的業(yè)務(wù)服務(wù)。這里的dns-server 最好是可以支持SRV Record,關(guān)于SRV Record,大家可以理解為類似AWS Route53的功能。

關(guān)于如何取出服務(wù)地址并自動(dòng)添加DNS記錄的原理,可以參考我之前的一篇文章:http://blog.neunn.com/wordpre... 文中第三部分有詳細(xì)描述。

Q & A

Q:你剛才提到「在執(zhí)行rancher-compose時(shí),可以考慮下面兩種策略:每次根據(jù)jenkins的<buid_num>來(lái)創(chuàng)建新的stack」。這種方式可以用DNS么?如果用的話,轉(zhuǎn)發(fā)到哪個(gè)stack上?

A:默認(rèn)情況下 <stack.name>.<env.name>.<root_domain>,你也可以特殊制定一個(gè)dns前綴<special_name>.<root_domain>

Q:jenkins里只能有一個(gè)ENV-*?

A:可以在env下部署多個(gè)jenkins,但是考慮企業(yè)內(nèi)部不同部門不同業(yè)務(wù)要進(jìn)行隔離,所以建議每個(gè)env一套jenkins。

總結(jié)

以上是生活随笔為你收集整理的基于 Rancher 的企业 CI/CD 环境搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。