练习 - 在 Azure 中配置、部署和运行应用
现在可以在 Azure 中运行应用了。 你需要创建 Azure 应用服务应用,使用托管标识和保管库配置对其进行设置,并部署我们的代码。
创建应用服务计划和应用
创建应用服务应用分为两步:先创建计划,再创建应用。
计划名称只需在订阅中唯一即可,因此可使用同一名称:keyvault-exercise-plan
。 但应用名称需要全局唯一,因此请自行命名。
在 Azure Cloud Shell 中,运行以下命令来创建应用服务计划。
az appservice plan create \ --name keyvault-exercise-plan \ --sku FREE \ --location centralus \ --resource-group "<rgn>[sandbox resource group name]</rgn>"
接下来,运行以下命令以创建使用创建的应用服务计划的 Web 应用。 请确保将
<your-unique-app-name>
替换为--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
配置放入应用设置(而不是配置文件)中的应用服务最佳做法。 若要创建应用设置,请运行以下命令。 请确保将 <your-unique-app-name>
替换为 --name
参数中的应用名称,将 <your-unique-vault-name>
替换为 --settings
参数中的保管库名称。
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
配置放入应用设置(而不是配置文件)中的应用服务最佳做法。 你还会将 SCM_DO_BUILD_DURING_DEPLOYMENT
设置设为 true
,以便应用服务能还原服务器上的应用包,并创建必要的配置以运行应用。 若要创建应用设置,请运行以下命令。 请确保将 <your-unique-app-name>
替换为 --name
参数中的应用名称,将 <your-unique-vault-name>
替换为 --settings
参数中的保管库名称。
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'
启用托管标识
在应用上启用托管标识采用的是单行方式。 若要在应用上启用它,请运行以下命令。 请确保将 <your-unique-app-name>
替换为 --name
中的应用名称。
az webapp identity assign \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name <your-unique-app-name>
从生成的 JSON 输出复制 principalId
值。 PrincipalId
是 Microsoft Entra ID 中应用新标识的唯一 ID,你将在下一步中使用它。
授予对保管库的访问权限
部署之前的最后一步是将 Key Vault 权限分配给应用的托管标识。 请确保将 <your-unique-vault-name>
替换为 --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 部署到应用服务。 请确保将
<your-unique-app-name>
替换为--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 中,并将其部署到应用服务。 我们将
node_modules
从 zip 中排除,因为应用服务会在你部署时自动还原它们。 请确保将<your-unique-app-name>
替换为--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。
你的应用已完成并部署!