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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

利用VSTS跟Kubernetes整合进行CI/CD

發(fā)布時(shí)間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用VSTS跟Kubernetes整合进行CI/CD 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么VSTS要搭配Kubernetes?

通常我們在開發(fā)管理軟件項(xiàng)目的時(shí)候都會碰到一個(gè)很頭痛的問題,就是開發(fā)、測試、生產(chǎn)環(huán)境不一致,導(dǎo)致開發(fā)人員和測試人員甚至和運(yùn)維吵架。

因?yàn)槌R姷奈锢憝h(huán)境甚至云環(huán)境中,這些部署環(huán)境都是由運(yùn)維人員提前準(zhǔn)備好的。每次更新代碼版本,都要很小心的在幾個(gè)環(huán)境之前修改不同的參數(shù)配置,一不小心就將生產(chǎn)環(huán)境的數(shù)據(jù)庫連接到了測試庫,或者日志文件的地址寫到了一個(gè)不存在的盤符里等等各種異常情況,有了Kubernetes這樣微服務(wù)編排框架,我們可以通過代碼的形式描述服務(wù)的架構(gòu),描述服務(wù)之間的依賴關(guān)系,做到了 Infrastructure As Code。這樣可以大大減少了開發(fā)運(yùn)維之間在做環(huán)境切換時(shí)帶來的額外成本。

將VSTS的持續(xù)集成能力和持續(xù)發(fā)布能力整合Kubernetes,可以讓項(xiàng)目團(tuán)隊(duì)更容易發(fā)現(xiàn)和改進(jìn)代碼(這時(shí)候的Infrastructure也已經(jīng)是代碼了)的問題,真正將精力放在改進(jìn)用戶體驗(yàn)和改進(jìn)產(chǎn)品品質(zhì)上。

準(zhǔn)備VSTS管理環(huán)境

首先我們需要到www.visualstudio.com下申請好的VSTS賬號,然后在賬號下創(chuàng)建一個(gè)用Git作為代碼管理的項(xiàng)目

創(chuàng)建好項(xiàng)目后我們就可以利用git clone將代碼庫同步到本地開發(fā)服務(wù)器上面來,構(gòu)建開發(fā)人員的workspace

準(zhǔn)備Docker Registry和Kubernetes環(huán)境

2.準(zhǔn)備一個(gè)私有的Docker Registry.因?yàn)槲覀冃枰獙uild 好的代碼放進(jìn)一個(gè)Docker的Images上面然后推送到一個(gè)私有的Registry上。Azure Container Registry無疑是一個(gè)非常好的選擇,因?yàn)榈纫幌挛覀兊拇a需要部署到Azure的Kubernetes群集里,Image所在的地方離部署的地方越近,部署速度當(dāng)然也就越快了。而且Azure Container Registry還支持全球同步,如果你的代碼打算全球多站點(diǎn)發(fā)布的話,Azure Container Registry服務(wù)無疑是最好的選擇。創(chuàng)建Azure Docker Registry可以參考官方文檔:https://docs.microsoft.com/zh-cn/azure/container-registry/?

3.準(zhǔn)備Kubernetes群集,Azure上支持提供了AKS服務(wù),讓我們可以快速搭建出來Kubernetes的群集環(huán)境,減少了運(yùn)維人員管理群集的壓力,搭建方法參考官方文檔:https://docs.microsoft.com/zh-cn/azure/aks/kubernetes-walkthrough-portal?

? 搭建的過程中注意幾個(gè)地方

1.準(zhǔn)備好Service Principle服務(wù)主體APP

2.準(zhǔn)備好linux ssh登錄的Key

安裝好群集后通過 Azure CLI 2.0命令:az aks install-cli 這樣我們就可以自動在你的linux上裝上Kubernetes的kubectl命令行工具了.

要管理Kubernetes的話,需要運(yùn)行下面的命令,在本地生成K8S的管理配置信息

az aks get-credentials --resource-group=myResourceGroup --name=myK8sCluster

獲取到的配置內(nèi)容會放在/home/<youraccount>/.kube/config文件里面,這文件里面的內(nèi)容非常重要,等一下VSTS需要這個(gè)信息來跟K8S群集進(jìn)行鏈接的。

我們可以通過kubectl get nodes命令看看群集的狀況

開始配置VSTS的自動化構(gòu)建和自動化發(fā)布

我們再VSTS的項(xiàng)目站點(diǎn)里找到Build and Release的菜單項(xiàng),點(diǎn)擊New的按鈕

選擇NodeJS with Gulp的模板

創(chuàng)建好后,我們先裁剪掉暫時(shí)不需要的Task,然后添加上Docker build Image和push Image的Task

--->

配置Build an image Task:

在這里我們可以將一開始準(zhǔn)備好的Azure Container Registry環(huán)境用上了

配置Push an image Task,Image Name使用BuildId作為鏡像的Tag,這樣后面部署到Kubernetes的時(shí)候就可以指定這個(gè)Tag對Image進(jìn)行更新了。

Build的定義不算太復(fù)雜,定義完之后我們就可以直接觸發(fā)一次Build來檢驗(yàn)一下配置是否成功了。

下圖就是Build成功之后的日志,我圖中我們可以看到Docker push命令將image push到了我們之前建立的Azure注冊Repository里面了


自動化構(gòu)建成功之后,我們可以做自動化的部署了,

創(chuàng)建一個(gè)新的發(fā)布定義

在Environment里點(diǎn)擊一下藍(lán)色字體部分,編輯部署任務(wù)

在配置部署任務(wù)時(shí),選擇Deploy to Kubernetes的任務(wù)類型,并且在Manage這個(gè)藍(lán)色鏈接這里配置Kubernetes的鏈接信息。

在Kubernetes的命令里使用set命令,通過設(shè)置image的更新地址來通知Kubernetes更新部署版本。

命令的格式是:kubectl set image deployment/<deploymentname> <imagename>=<image url>

在VSTS里面,只需要argument里面把后面的部分填上就好

配置Kubernetes的 Service Endpoints信息:

配置好部署任務(wù)后,我們可以嘗試一下手動將前面成功的Build部署到Kubernetes環(huán)境中

至此我們已經(jīng)可以成功將一份代碼部署到了Kubernetes里面去了

部署成功后,可以通過kubectl get pods -w命令監(jiān)控一下Kubernetes對容器進(jìn)行更新替換的過程,從下圖中可以看到Kubernetes創(chuàng)建了一個(gè)新的pod,然后將舊版本的pod進(jìn)行了Terminate.

如果我們需要將Release跟Build自動鏈接起來,可以通過編輯Release定義,選擇圖上的閃電按鈕,將Continuous deployment trigger的按鈕設(shè)置為Enabled即可。

原文地址:https://www.cnblogs.com/wing-ms/p/8177718.html


.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結(jié)

以上是生活随笔為你收集整理的利用VSTS跟Kubernetes整合进行CI/CD的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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