將 .NET Aspire 專案部署至 Azure Container Apps
.NET
.NET Aspire 項目的設計目的是在容器化環境中執行。
Azure Container Apps 是完全受控的環境,可讓您在無伺服器平台上執行微服務和容器化應用程式。 本文將逐步引導您建立新的 .NET Aspire 解決方案,並使用 Azure Container Apps (Azure Developer CLI) 將它部署至Microsoft azd
。 您將瞭解如何完成下列工作:
- 布建 Azure 資源群組和容器註冊表
- 將 .NET Aspire 項目發佈為 Azure Container Registry 內的容器映像
- 在 Redis 中布建 Azure 容器
- 將應用程式部署至 Azure Container Apps 環境
- 檢視應用程式主控台記錄以針對應用程式問題進行疑難解答
先決條件
若要使用 .NET.NET Aspire,您需要在本機安裝下列元件:
- .NET 8.0 或 .NET 9.0
- 符合 OCI 規範的容器運行時間,例如:
- Docker Desktop 或 Podman。 如需詳細資訊,請參閱 容器運行時間。
- 整合式開發人員環境 (IDE) 或程式碼編輯器,例如:
- Visual Studio 2022 17.9 版或更高版本 (選用)
-
Visual Studio Code (選擇性)
- C# Dev Kit:擴充功能(選擇性)
- JetBrains Rider 搭配 .NET.NET Aspire 外掛程式 (選用)
如需詳細資訊,請參閱 .NET.NET Aspire 設定和工具和 .NET.NET Aspire SDK。
作為本教學課程的替代方案以及更深入的指南,請參閱 Azure Container Apps將 azd
專案部署至 。
使用 .NET 部署 .NET Aspireazd
專案
使用 .NET Aspire 和 Azure Container Apps (ACA),您擁有絕佳的託管方案,可利用 .NET建置您的雲端原生應用程式。 我們為 Azure Developer CLI(azd
)開發了一些絕佳的新功能,專門為使 .NET Aspire 在開發和部署到 Azure 上的過程更加順暢,提供無摩擦的體驗。 當您需要對部署進行細微控制時,您仍然可以使用 Azure CLI 和/或 Bicep 的選項。 但對於新專案,要成功將新的微服務拓撲部署至雲端,您找不到比這更輕鬆的路徑。
建立 .NET.NET Aspire 專案
本文假設您已從 .NET 範本建立 .NET Aspire 專案。 如需詳細資訊,請參閱 快速入門:建置您的第一個 .NET.NET Aspire 專案。
資源命名
當您建立新的 Azure 資源時,請務必遵循命名需求。 針對 Azure Container Apps,名稱長度必須為 2-32 個字元,且包含小寫字母、數位和連字元。 名稱開頭必須是字母,並以英數位元結尾。
如需詳細資訊,請參閱 Azure 資源的命名規則和限制。
安裝 Azure Developer CLI
安裝 azd
的過程會根據您的操作系統而有所不同,但可以廣泛地透過 winget
、brew
、apt
或直接透過 curl
獲得。 若要安裝 azd
,請參閱 安裝 Azure Developer CLI。
初始化範本
開啟新的終端機視窗,並
cd
您 .NET 解決方案的 .NET Aspire 項目目錄。執行
azd init
命令,以使用azd
初始化專案,這會檢查本機目錄結構,並判斷應用程式的類型。azd init
如需
azd init
命令的詳細資訊,請參閱 azd init。當 提示您使用兩個應用程式初始化選項時,請選取
azd
。? How do you want to initialize your app? [Use arrows to move, type to filter] > Use code in the current directory Select a template
掃描目錄之後,
會提示您確認它找到正確的 appHost 專案 。 選取 確認並繼續初始化我的應用程式 選項。 Detected services: .NET (Aspire) Detected in: D:\source\repos\AspireSample\AspireSample.AppHost\AspireSample.AppHost.csproj azd will generate the files necessary to host your app on Azure using Azure Container Apps. ? Select an option [Use arrows to move, type to filter] > Confirm and continue initializing my app Cancel and exit
輸入環境名稱,用來命名 Azure 中布建的資源,以及管理不同的環境,例如
dev
和prod
。Generating files to run your app on Azure: (✓) Done: Generating ./azure.yaml (✓) Done: Generating ./next-steps.md SUCCESS: Your app is ready for the cloud! You can provision and deploy your app to Azure by running the azd up command in this directory. For more information on configuring your app, see ./next-steps.md
azd
會產生數個檔案,並將其放在工作目錄中。 這些檔案包括:
- azure.yaml:描述應用程式的服務,例如 .NET Aspire AppHost 專案,並將其對應至 Azure 資源。
-
。azure/config。json:指示
azd
目前有效環境的組態檔。 - .azure/aspireazddev/.env:包含環境特定設定覆寫。
部署範本
初始化
範本之後,您可以使用 azd up ,從 AppHost 項目目錄,以單一命令執行布建和部署程式:azd up
從可用的選項清單中,選取您想要部署至的訂用帳戶:
Select an Azure Subscription to use: [Use arrows to move, type to filter] 1. SampleSubscription01 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx) 2. SamepleSubscription02 (xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx)
請從可用選項清單中選取要使用的 Azure 位置。
Select an Azure location to use: [Use arrows to move, type to filter] 42. (US) Central US (centralus) 43. (US) East US (eastus) > 44. (US) East US 2 (eastus2) 46. (US) North Central US (northcentralus) 47. (US) South Central US (southcentralus)
選取項目之後,azd
會執行布建和部署程式。
By default, a service can only be reached from inside the Azure Container Apps environment it is running in. Selecting a service here will also allow it to be reached from the Internet.
? Select which services to expose to the Internet webfrontend
? Select an Azure Subscription to use: 1. <YOUR SUBSCRIPTION>
? Select an Azure location to use: 1. <YOUR LOCATION>
Packaging services (azd package)
Provisioning Azure resources (azd provision)
Provisioning Azure resources can take some time.
Subscription: <YOUR SUBSCRIPTION>
Location: <YOUR LOCATION>
You can view detailed progress in the Azure Portal:
<LINK TO DEPLOYMENT>
(✓) Done: Resource group: <YOUR RESOURCE GROUP>
(✓) Done: Container Registry: <ID>
(✓) Done: Log Analytics workspace: <ID>
(✓) Done: Container Apps Environment: <ID>
SUCCESS: Your application was provisioned in Azure in 1 minute 13 seconds.
You can view the resources created under the resource group <YOUR RESOURCE GROUP> in Azure Portal:
<LINK TO RESOURCE GROUP OVERVIEW>
Deploying services (azd deploy)
(✓) Done: Deploying service apiservice
- Endpoint: <YOUR UNIQUE apiservice APP>.azurecontainerapps.io/
(✓) Done: Deploying service webfrontend
- Endpoint: <YOUR UNIQUE webfrontend APP>.azurecontainerapps.io/
Aspire Dashboard: <LINK TO DEPLOYED .NET ASPIRE DASHBOARD>
SUCCESS: Your up workflow to provision and deploy to Azure completed in 3 minutes 50 seconds.
azd up
命令可作為下列個別 azd
命令的包裝函式,以在單一步驟中布建及部署您的資源:
-
azd package
:應用程式專案及其相依性會封裝到容器中。 -
azd provision
:應用程式所需的 Azure 資源已經備妥並布建完成。 -
azd deploy
:專案會以容器的形式推送至 Azure Container Registry 實例,然後用來建立將託管程式碼之 Azure Container Apps 的新修訂。
當 azd up
階段完成時,您的應用程式將會在 Azure上使用,而且您可以開啟 Azure 入口網站來探索資源。
azd
也會輸出 URL 以直接存取已部署的應用程式。
測試已部署的應用程式
現在應用程式已佈建並部署,您可以流覽至 Azure 入口網站。 在部署應用程式的資源群組中,您會看到三個容器應用程式和其他資源。
按兩下 web
容器應用程式,在入口網站中開啟它。
按兩下 應用程式 URL 連結,以在瀏覽器開啟前端。
當您在導覽列中按兩下 [天氣] 節點時,前端 web
容器應用程式會呼叫 apiservice
容器應用程式以取得數據。 前端的輸出將會使用 redis
容器應用程式,並透過 .NET AspireRedis 輸出快取整合進行快取。 當您重新整理前端幾次時,您會發現天氣數據已被緩存。 它會在幾秒鐘後更新。
部署 .NET.NET Aspire 儀錶板
您可以將 .NET.NET Aspire 儀錶板部署為託管應用程式的一部分。 這項功能現在已完全支援。 部署時,azd 輸出記錄會顯示已部署儀錶板的額外 URL。
您可以執行 azd monitor
來自動啟動儀錶板。
azd monitor
清除資源
當您不再需要您所建立 Azure 資源時,請執行下列 Azure CLI 命令來刪除資源群組。 刪除資源群組也會刪除其內含的資源。
az group delete --name <your-resource-group-name>
如需詳細資訊,請參閱 清除資源在 Azure中。