練習 - 在 Azure 中設定、部署及執行應用程式

已完成

現在可以開始在 Azure 中執行您的應用程式。 您需要建立 Azure App Service 應用程式、使用受控識別與您的保存庫設定進行設定,以及部署您的程式碼。

建立 App Service 方案與應用程式

建立 App Service 應用程式是兩個步驟的處理序:首先建立「方案」,然後建立「應用程式」

「方案」名稱只需在您的訂用帳戶內是唯一的,因此您可以使用相同的名稱:keyvault-exercise-plan。 不過,應用程式名稱需要全域唯一,因此請挑選您自己的名稱。

  1. 在 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>"
    
  2. 接下來,若要建立使用您所建立的 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 的值。 若要建立 GetList 存取,請執行此命令。

az keyvault set-policy \
    --secret-permissions get list \
    --name <your-unique-vault-name> \
    --object-id <your-managed-identity-principleid>

部署應用程式並立即試用

  1. 您的設定均已完成,可以開始進行部署! 下列命令會將網站發佈到 pub 資料夾、將其壓縮成 site.zip,並將 ZIP 檔案部署至 App Service。 請務必在 --name 參數中以您的應用程式名稱取代 <your-unique-app-name>

    注意

    如果您還沒有 cd 回 KeyVaultDemoApp 目錄,您將需要這麼做。

    dotnet publish -o pub
    zip -j site.zip pub/*
    
    az webapp deployment source config-zip \
        --src site.zip \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --name <your-unique-app-name>
    
  1. 您的設定均已完成,可以開始進行部署! 下列命令會將您的應用程式壓縮成 site.zip,並將其部署到 App Service。 我們會從該 zip 檔排除 node_modules,因為 App Service 會在您部署時自動進行還原。 請務必在 --name 參數中以您的應用程式名稱取代 <your-unique-app-name>

    注意

    如果您還沒有 cd 回 KeyVaultDemoApp 目錄,您將需要這麼做。

    zip site.zip * -x node_modules/
    
    az webapp deployment source config-zip \
        --src site.zip \
        --resource-group "<rgn>[sandbox resource group name]</rgn>" \
        --name <your-unique-app-name>
    
  1. 部署可能需要一兩分鐘才能完成。 取得指出網站已部署的結果之後,請在瀏覽器中開啟 https://<your-unique-app-name>.azurewebsites.net/api/SecretTest。 應用程式第一次在伺服器上啟動時需要一些時間,但啟動後,您應該會看到祕密值 reindeer_flotilla

您的應用程式已完成,並且已部署!