簡體   English   中英

如何將 Visual Studio 2019 解決方案部署到 Azure AKS

[英]How to Deploy Visual Studio 2019 Solution to Azure AKS

我開發了一個基於 DDD 的建模工具,該工具將 .Net Core 3.x Web API 服務作為單個 VS 2019 解決方案中的單獨項目進行代碼生成。 我的建模工具使我能夠快速捕獲業務領域,並從那里生成滿足每個業務領域所需的盡可能多的領域服務。

我創建了一個測試域,它創建了三個 .Net Core Web API 服務(微服務),我一直在 Docker 內為 Windows 部署和調試,效果很好。 為此,我在生成的 VS 2019 解決方案文件夾中添加了一個 docker-compose 文件,因此我可以通過選擇 Docker Compose 調試選項來運行和調試所有服務。 奇跡般有效!

現在我想將我的整個解決方案作為一個整體部署到 Azure AKS 中。 我創建了一個 AKS 實例並啟用了 Azure Dev Spaces。

在 VS 2019 中,我為每個 Web API 項目添加了對 Kube.nettes 的容器支持,這在每個 Web API 項目文件夾中創建了一個圖表文件夾。 注意:我沒有編輯圖表文件夾中的任何文件。

我為我的第一個 API 服務創建了一個 azure 開發空間,然后運行 AZDS Prep,然后運行 AZDS UP,它運行了所有 29 個步驟並成功構建了容器鏡像,隨后顯示消息 Waiting for container...
其次是服務“api”端口 80 (http) 可通過端口轉發在http://localhost:58512 獲得
按 Ctrl+C 分離

當我的服務嘗試連接到 EventStore 時出現未處理的異常。 這非常有意義,因為我沒有將 EventStore 添加到我的 AKS 集群。

因此,似乎我必須在每個 API 服務上運行此 AZDS Prep 及更高版本,這似乎是任務密集型的,因為一次執行此步驟一個服務可能適用於這個簡單的示例,但當我有更多 web 時將不實用api 個項目(微服務)。

我覺得我應該利用 Azure Dev Ops CI/CD 來處理每個微服務的所有這些,但我找不到任何教程來說明如何從 VS2019 解決方案的角度進行設置。

我發現的所有示例似乎都基於部署到 AKS 的單個 Web 或 Web API 項目,而不是基於具有多個 Web API 項目並且依賴於第三方圖像/容器的解決方案。

我想要一個教程,向我展示如何將我整個 Repo 的服務價值包括任何依賴項(例如我的 EventStore)部署到 AKS 中,這不需要我成為 Helm 專家,也許一些可以利用 docker compose 的工具文件。

如果您知道一些可以告訴我如何設置它的教程,請告訴我。

您不需要一次將所有內容部署到您的集群。 使用 DevSpaces,根空間將包含所有微服務的穩定版本。 當您想要處理給定服務時,您可以將本地開發環境附加到子空間

自動發布到根開發空間看起來像這樣:

  1. 設置一個 Azure DevOps 管道,它將構建解決方案中的所有項目並將其推送到 Azure Container Registry。 您將需要多個buildAndPush任務,一個用於您的解決方案生成的每個容器。 為您的容器鏡像提供獨特的標簽(我喜歡將構建 ID 與提交哈希連接在一起)。
  2. 使用kompose 將您的 docker-compose.yml 轉換為 kube.netes 資源定義 yaml 文件。 您可能需要微調 output,為圖像標簽添加一些模板等。將 output 添加到您的 repo。
  3. 使用kubectl apply task(s)擴展步驟 1 中的 AzDO 管道,將 k8s yaml 文件應用到您的 AKS 集群。
  4. 如果您只想構建和部署在給定提交時發生更改的微服務,則需要將 k8s yaml 文件拆分為每個項目,並在管道觸發器上使用路徑過濾器

我會將 EventStore 服務與我的代碼構建和部署管道分開提供——通常像 EventStore 這樣的共享服務將在任何依賴服務之前和之后運行。 如果需要,您可以通過另一個管道自動執行此操作。 一些指南可用於將 EventStore 部署到 AKS - 請注意,目前,這不是推薦的配置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM