練習 - 在 Azure 中設定、部署及執行應用程式
現在可以開始在 Azure 中執行您的應用程式。 您需要建立 Azure App Service 應用程式、使用受控識別與您的保存庫設定進行設定,以及部署您的程式碼。
建立 App Service 方案與應用程式
建立 App Service 應用程式是兩個步驟的處理序:首先建立「方案」,然後建立「應用程式」。
「方案」名稱只需在您的訂用帳戶內是唯一的,因此您可以使用相同的名稱:keyvault-exercise-plan
。 不過,應用程式名稱需要全域唯一,因此請挑選您自己的名稱。
在 Azure Cloud Shell 中,執行下列命令以建立 App Service 方案。
az appservice plan create \ --name keyvault-exercise-plan \ --sku FREE \ --location centralus \ --resource-group "<rgn>[sandbox resource group name]</rgn>"
接下來,若要建立使用您所建立的 App Service 方案的 Web 應用程式,請執行下列命令。 請務必在
--name
參數中以您的應用程式名稱取代<your-unique-app-name>
。az webapp create \ --plan keyvault-exercise-plan \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name <your-unique-app-name>
az webapp create \ --plan keyvault-exercise-plan \ --runtime "node|16LTS" \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name <your-unique-app-name>
將設定新增至應用程式
若要部署至 Azure,請遵循將 VaultName
組態置於應用程式設定中 (而非組態檔) 的 App Service 最佳做法。 若要建立應用程式設定,請執行此命令。 請務必在 --name
參數中以您的應用程式名稱取代 <your-unique-app-name>
,並在 --settings
參數中以您的保存庫名稱來取代 <your-unique-vault-name>
。
az webapp config appsettings set \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name <your-unique-app-name> \
--settings 'VaultName=<your-unique-vault-name>'
若要部署至 Azure,請遵循將 VaultName
組態置於應用程式設定中 (而非組態檔) 的 App Service 最佳做法。 您也會將 SCM_DO_BUILD_DURING_DEPLOYMENT
設定設定為 true
,以便 App Service 可以在伺服器上還原您的應用程式套件,並建立必要組態以執行應用程式。 若要建立應用程式設定,請執行此命令。 請務必在 --name
參數中以您的應用程式名稱取代 <your-unique-app-name>
,並在 --settings
參數中以您的保存庫名稱來取代 <your-unique-vault-name>
。
az webapp config appsettings set \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name <your-unique-app-name> \
--settings 'VaultName=<your-unique-vault-name>' 'SCM_DO_BUILD_DURING_DEPLOYMENT=true'
啟用受控識別
在應用程式上啟用受控身分識別非常簡單。 若要在應用程式上啟用,請執行以下命令。 請務必在 --name
參數中以您的應用程式名稱取代 <your-unique-app-name>
。
az webapp identity assign \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name <your-unique-app-name>
從產生的 JSON 輸出中複製 principalId
值。 PrincipalId
是應用程式在 Microsoft Entra ID 中新身分識別的唯一識別碼,您將在下一個步驟中使用該識別碼。
授權保存庫的存取權
部署前的最後一個步驟是將 Key Vault 權限指派給您應用程式的受控識別。 請務必在 --name
參數中以您的保存庫名稱取代 <your-unique-vault-name>
,然後輸入您在上一個步驟中複製的 principalId
值,做為下列命令中 object-id
的值。 若要建立 Get
和 List
存取,請執行此命令。
az keyvault set-policy \
--secret-permissions get list \
--name <your-unique-vault-name> \
--object-id <your-managed-identity-principleid>
部署應用程式並立即試用
您的設定均已完成,可以開始進行部署! 下列命令會將網站發佈到 pub 資料夾、將其壓縮成 site.zip,並將 ZIP 檔案部署至 App Service。 請務必在
--name
參數中以您的應用程式名稱取代<your-unique-app-name>
。注意
如果您還沒有
cd
回 KeyVaultDemoApp 目錄,您將需要這麼做。dotnet publish -o pub zip -j site.zip pub/* az webapp deploy \ --src-path site.zip \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name <your-unique-app-name>
您的設定均已完成,可以開始進行部署! 下列命令會將您的應用程式壓縮成 site.zip,並將其部署到 App Service。 我們會從該 zip 檔排除
node_modules
,因為 App Service 會在您部署時自動進行還原。 請務必在--name
參數中以您的應用程式名稱取代<your-unique-app-name>
。注意
如果您還沒有
cd
回 KeyVaultDemoApp 目錄,您將需要這麼做。zip site.zip * -x node_modules/ az webapp deploy \ --src-path site.zip \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --name <your-unique-app-name>
- 部署可能需要一兩分鐘才能完成。 取得指出網站已部署的結果之後,請在瀏覽器中開啟
https://<your-unique-app-name>.azurewebsites.net/api/SecretTest
。 應用程式第一次在伺服器上啟動時需要一些時間,但啟動後,您應該會看到祕密值 reindeer_flotilla。
您的應用程式已完成,並且已部署!