您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何利用VSTS跟Kubernetes整合進行CI/CD”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何利用VSTS跟Kubernetes整合進行CI/CD”吧!
為什么VSTS要搭配Kubernetes?
通常我們在開發管理軟件項目的時候都會碰到一個很頭痛的問題,就是開發、測試、生產環境不一致,導致開發人員和測試人員甚至和運維吵架。
因為常見的物理環境甚至云環境中,這些部署環境都是由運維人員提前準備好的。每次更新代碼版本,都要很小心的在幾個環境之前修改不同的參數配置,一不小心就將生產環境的數據庫連接到了測試庫,或者日志文件的地址寫到了一個不存在的盤符里等等各種異常情況,有了Kubernetes這樣微服務編排框架,我們可以通過代碼的形式描述服務的架構,描述服務之間的依賴關系,做到了 Infrastructure As Code。這樣可以大大減少了開發運維之間在做環境切換時帶來的額外成本。
將VSTS的持續集成能力和持續發布能力整合Kubernetes,可以讓項目團隊更容易發現和改進代碼(這時候的Infrastructure也已經是代碼了)的問題,真正將精力放在改進用戶體驗和改進產品品質上。
準備VSTS管理環境
首先我們需要到www.visualstudio.com下申請好的VSTS賬號,然后在賬號下創建一個用Git作為代碼管理的項目
創建好項目后我們就可以利用git clone將代碼庫同步到本地開發服務器上面來,構建開發人員的workspace
準備Docker Registry和Kubernetes環境
2.準備一個私有的Docker Registry.因為我們需要將Build 好的代碼放進一個Docker的Images上面然后推送到一個私有的Registry上。Azure Container Registry無疑是一個非常好的選擇,因為等一下我們的代碼需要部署到Azure的Kubernetes群集里,Image所在的地方離部署的地方越近,部署速度當然也就越快了。而且Azure Container Registry還支持全球同步,如果你的代碼打算全球多站點發布的話,Azure Container Registry服務無疑是最好的選擇。創建Azure Docker Registry可以參考官方文檔:https://docs.microsoft.com/zh-cn/azure/container-registry/
3.準備Kubernetes群集,Azure上支持提供了AKS服務,讓我們可以快速搭建出來Kubernetes的群集環境,減少了運維人員管理群集的壓力,搭建方法參考官方文檔:https://docs.microsoft.com/zh-cn/azure/aks/kubernetes-walkthrough-portal
搭建的過程中注意幾個地方
1.準備好Service Principle服務主體APP
2.準備好linux ssh登錄的Key
安裝好群集后通過 Azure CLI 2.0命令:az aks install-cli 這樣我們就可以自動在你的linux上裝上Kubernetes的kubectl命令行工具了.
要管理Kubernetes的話,需要運行下面的命令,在本地生成K8S的管理配置信息
az aks get-credentials --resource-group=myResourceGroup --name=myK8sCluster
獲取到的配置內容會放在/home/<youraccount>/.kube/config文件里面,這文件里面的內容非常重要,等一下VSTS需要這個信息來跟K8S群集進行鏈接的。
我們可以通過kubectl get nodes命令看看群集的狀況
開始配置VSTS的自動化構建和自動化發布
我們再VSTS的項目站點里找到Build and Release的菜單項,點擊New的按鈕
選擇NodeJS with Gulp的模板
創建好后,我們先裁剪掉暫時不需要的Task,然后添加上Docker build Image和push Image的Task
--->
配置Build an image Task:
在這里我們可以將一開始準備好的Azure Container Registry環境用上了
配置Push an image Task,Image Name使用BuildId作為鏡像的Tag,這樣后面部署到Kubernetes的時候就可以指定這個Tag對Image進行更新了。
Build的定義不算太復雜,定義完之后我們就可以直接觸發一次Build來檢驗一下配置是否成功了。
下圖就是Build成功之后的日志,我圖中我們可以看到Docker push命令將image push到了我們之前建立的Azure注冊Repository里面了
自動化構建成功之后,我們可以做自動化的部署了,
創建一個新的發布定義
在Environment里點擊一下藍色字體部分,編輯部署任務
在配置部署任務時,選擇Deploy to Kubernetes的任務類型,并且在Manage這個藍色鏈接這里配置Kubernetes的鏈接信息。
在Kubernetes的命令里使用set命令,通過設置image的更新地址來通知Kubernetes更新部署版本。
命令的格式是:kubectl set image deployment/<deploymentname> <imagename>=<image url>
在VSTS里面,只需要argument里面把后面的部分填上就好
配置Kubernetes的 Service Endpoints信息:
配置好部署任務后,我們可以嘗試一下手動將前面成功的Build部署到Kubernetes環境中
至此我們已經可以成功將一份代碼部署到了Kubernetes里面去了
部署成功后,可以通過kubectl get pods -w命令監控一下Kubernetes對容器進行更新替換的過程,從下圖中可以看到Kubernetes創建了一個新的pod,然后將舊版本的pod進行了Terminate.
如果我們需要將Release跟Build自動鏈接起來,可以通過編輯Release定義,選擇圖上的閃電按鈕,將Continuous deployment trigger的按鈕設置為Enabled即可。
感謝各位的閱讀,以上就是“如何利用VSTS跟Kubernetes整合進行CI/CD”的內容了,經過本文的學習后,相信大家對如何利用VSTS跟Kubernetes整合進行CI/CD這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。