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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(二)

發布時間:2023/12/4 asp.net 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上文中我介紹了ASP.NET Core應用程序容器化時需要注意的幾個問題,并給出了一個案例應用程序:tasklist。今天接著上文的內容,繼續了解一下如何使用Azure DevOps進行ASP.NET Core應用程序的持續集成。為了便于討論,本文會將持續集成(Continuous Integration)縮寫為CI,而將持續部署(Continuous Deployment)縮寫為CD。

Azure DevOps前身是Visual Studio Team Services(VSTS),從2018年9月10日開始,VSTS改名為Azure DevOps,原來VSTS所提供的服務也作了相應的調整。有關Azure DevOps的介紹,可以參考https://azure.microsoft.com/en-us/blog/introducing-azure-devops/。

容器化應用程序的CI/CD流程

下圖展示了基于微軟技術架構的容器化應用程序的CI/CD流程:

大致流程如下:

  • 開發人員通過Visual Studio Team Services Backlog(也就是最新的Azure Boards)獲取一些開發任務

  • 開發人員使用Visual Studio進行應用程序開發

  • 開發的代碼保存在Visual Studio Team Services Git(也就是最新的Azure Repos)

  • Visual Studio Team Services CI(也就是最新的Azure Pipelines)從代碼庫獲取代碼,進行編譯和持續集成

  • 編譯產生的容器被推送到Azure Container Registry

  • Visual Studio Team Services CD(也就是最新的Azure Pipelines)觸發持續部署,從Azure Container Registry獲取容器鏡像,然后部署到Azure Container Service中(這里使用托管的Kubernetes服務作為例子)

  • Azure Application Insights對運行的應用程序進行跟蹤分析,并將結果反饋給開發人員

  • 開發人員將結果記錄到Visual Studio Team Services Backlog(也就是最新的Azure Boards)中

  • 這個過程還是比較容易理解的。圖片來自https://azure.microsoft.com/en-us/solutions/architecture/cicd-for-containers/。對于tasklist而言,我所采用的持續集成/持續部署方案跟上圖流程差不多,所不同的是,我沒有使用Azure Repos,而是使用眾所周知的GitHub,我也沒有使用Azure Container Registry,而是使用Docker Hub。接下來,我們一起了解一下Azure DevOps Pipeline持續集成的配置過程。

    基于Azure DevOps為tasklist搭建持續集成環境

    首先使用你的微軟賬號(Microsoft Account)登錄Azure DevOps,默認還是會進入經典的VSTS界面,此時點擊屏幕右上角的大頭貼圖標,選擇Preview features:

    然后在Preview features中打開New Navigation選項即可進入Azure DevOps的新界面:

    接下來,我們可以點擊界面右上角的Create project按鈕來創建一個新的項目。在創建新項目的界面中,輸入項目名稱和描述,然后決定是否公開該項目,之后在Advanced部分可以選擇版本控制方案(Git或者Team Foundation Version Control),并且選擇一個開發流程。這里我將項目命名為tasklist-demo,版本控制方案使用Git,開發流程就選擇Agile(其實在我們的案例中,這并不重要)。一切就緒之后,點擊Create按鈕創建項目。

    項目創建成功之后,就自動進入了如上圖所示的項目儀表板(Dashboard),此時我們可以在Boards里創建一些開發任務,然后通過Repos界面來初始化我們的代碼庫。不過,這兩個步驟我們都不需要做,因為我們的代碼已經在GitHub中了,我們可以直接進入Pipelines,定義我們的項目構建過程。

  • 在Pipelines項目下,點擊Builds,然后點擊New pipeline按鈕。在創建Build Pipeline的第一步,需要選擇代碼來源。Azure DevOps提供各種選擇:Azure Repos Git、GitHub、GitHub Enterprise、Subvision、Bitbucket Cloud以及External Git。對于tasklist而言,我們選擇使用GitHub。此時,如果你還沒有創建GitHub連接,則需要新建一個。如下圖指定GitHub連接的名稱,然后通過OAuth或者GitHub訪問token進行安全認證:

  • 在認證成功后,即可選擇需要編譯的代碼庫,并指定需要編譯的代碼所在的分支(Branch)。在一切就緒后,點擊Continue按鈕繼續:

  • 接下來,在Select a template頁面中,點擊Empty job來創建一個空的構建任務,當然,也可以根據需要,在預定的構建模板中進行選擇

  • 在新建的Buid Pipeline中,可以看到,所有操作的第一步就是獲取源代碼,這一步已經在上面定義好了,不過還可以在這個界面中進行一些高級設置,比如可以指定在簽出代碼時,將submodule也同時簽出

  • 我們需要關注的就是Agent Job,一個Build Pipeline中,可以包含多個Agent Job,也就是執行過程需要Build Agent支持的Job;也可以包含多個Agentless Job,也就是執行過程不需要Build Agent支持的Job。Agent Job的執行需要依賴某種環境,比如托管的Linux環境,或者是裝有VS2017的Windows環境。而Agentless Job的執行則不需要這樣的環境,比如,調用RESTful API,或者設置一個定時器,延遲后續Job的執行等。對于tasklist而言,我們需要一個Linux的環境來執行Docker容器構建,因此,可以選擇Hosted Ubuntu 1604的Agent Pool,于是,當代碼構建開始執行時,Azure DevOps會從Hosted Ubuntu 1604的Agent池中,選擇一個Agent執行構建

  • 接下來,在這個新建的Agent Job中,點擊加號(+),然后在列出的所有任務模板中,選擇Docker Compose,并點擊Add按鈕,將它添加到Agent的任務中。事實上,Azure DevOps Pipelines提供了非常多的任務模板,比如,你可以選擇一個執行單元測試的模板并將其添加到Agent Job中,然后根據自己的需要,配置單元測試的運行參數,這樣的話,Agent Job就能幫你完成單元測試

  • 在定義Docker Compose Command的界面中,注意將Container Registry Type切換為Container Registry,然后通過點擊New按鈕,新建一個Docker Registry連接。由于我們選用Docker Hub作為Registry,因此,選擇Docker Hub,填上自己的賬號和密碼后,確認能夠連接就可以了:

  • 在Docker Compose File文本框中,輸入tasklist代碼庫中docker-compose.yml文件的路徑,也可以點擊“…“按鈕,在彈出的對話框中選擇該文件:

  • 在Action下拉框中,指定所執行的操作為Build service images,然后,在Additional Image Tags中,可以指定$(Build.BuildNumber),表示使用當前的構建編號為構建產生的容器鏡像打上tag,同時可以選擇Include Latest Tag選項,表示當前構建的容器鏡像為最新版本(打上latest Tag)。完成這部分設置之后,參數大致如下:

  • 在完成了上述步驟之后,我們已經可以完成整個tasklist App的編譯了。可以看到,在Azure DevOps中設置Build Pipeline進行代碼編譯是非常簡單的。由于我們已經定義了用于代碼編譯的Docker Compose文件,所以,只需要在Pipeline中添加一個Docker Compose的編譯任務即可。現在測試一下,看看編譯是否能夠成功完成:

  • 到目前為止,我們只是成功編譯了tasklist的容器鏡像,還沒有將鏡像推送到Docker Hub。在容器鏡像被推送到Docker Hub之后,我們才能夠將容器部署到Azure Container Service中運行。要推送編譯好的容器鏡像,只需要重復以上6到10步,在Agent Job下再添加一個Docker Compose的任務,所不同的是,Action需要修改為Push service images,保持其它配置不變。保存完Pipeline之后,再次觸發編譯:

  • 打開Docker Hub,看看鏡像是否已經成功推送:

  • 最后一步,就是要將tasklist代碼庫中的yml文件作為編譯結果(Artifacts)公布出來,這樣做是為了在下一步做Azure Kubernetes Service(AKS)部署的時候,能夠獲取到部署的定義文件并根據該文件的內容進行部署。使用上述第6步的方法,添加一個Copy Files的任務和一個Publish Build Artifacts的任務。Copy Files的任務設置如下:

    Publish Build Artifacts的任務設置如下:

  • 再次啟動Build Pipeline,可以看到,tasklist已經成功編譯:

    所需的編譯結果文件(yml文件)也復制成功:

  • 在Triggers頁面,可以選擇Enable continuous integration選項,此時每當有新的代碼簽入代碼庫,就會觸發一次新的構建。當然,還有一些高級選項,比如選擇代碼分支等,還可以啟用Pull request validation,這些內容與持續集成的流程有關,我們可以在今后學習,在這里,我們先勾選Enable continuous integration選項

  • 總結

    本文首先簡單介紹了容器化應用程序的CI/CD流程,然后基于Azure DevOps,為tasklist案例建立了一個Build Pipeline,成功完成了tasklist App的編譯以及Docker容器鏡像的發布,最后,啟用了持續集成功能,使得每次代碼變更提交都會觸發CI過程。這部分設置與開發過程以及持續集成的流程有關,不同的項目進行持續集成的方式也會有所不同,我們可以單獨在其它篇章中進行深入討論學習。在接下來的第三部分,讓我們一起看看,如何把編譯好的tasklist容器部署到Azure Kubernetes Service中。

    相關文章:

    • ASP.NET Core應用程序容器化、持續集成與Kubernetes集群部署(一)

    • 微軟發布Azure Pipelines,開源項目可無限制使用CI/CD

    • 持續集成配置之Nuget

    原文地址:?http://sunnycoding.cn/2018/10/09/dockerize-aspnetcore-cicd-with-azure-devops-and-kubernetes-part2/


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

    總結

    以上是生活随笔為你收集整理的ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。