快速入门:部署服务目录托管应用程序

在本快速入门中,你将使用通过其中一篇快速入门文章创建的托管应用程序定义。 该部署创建两个资源组。 一个资源组包含托管应用程序,另一个是已部署资源的受管理资源组。 托管应用程序定义可部署应用服务计划、应用程序服务和存储帐户。

先决条件

创建服务目录托管应用程序

这些示例使用了发布应用程序定义快速入门中创建的资源组名称。 如果已使用快速入门通过自带存储发布定义,请使用这些资源组名称。

  • 发布应用程序定义packageStorageGroupappDefinitionGroup
  • 使用自带存储发布定义packageStorageGroupbyosDefinitionStorageGroupbyosAppDefinitionGroup

获取托管应用程序定义

若要使用 Azure PowerShell 获取托管应用程序的定义,请运行以下命令。

在 Visual Studio Code 中,打开新的 PowerShell 终端并登录到 Azure 订阅。

Connect-AzAccount

此命令会打开默认浏览器,并提示登录到 Azure。 有关详细信息,请转到使用 Azure PowerShell 登录

从 Azure PowerShell 获取托管应用程序的定义。 在此示例中,使用部署托管应用程序定义时创建的资源组名称 appDefinitionGroup

Get-AzManagedApplicationDefinition -ResourceGroupName appDefinitionGroup

Get-AzManagedApplicationDefinition 列出了指定资源组中的所有可用定义,例如 sampleManagedApplication

为托管应用程序定义的资源 ID 创建变量。

$definitionid = (Get-AzManagedApplicationDefinition -ResourceGroupName appDefinitionGroup -Name sampleManagedApplication).ManagedApplicationDefinitionId

在部署托管应用程序时使用 $definitionid 变量的值。

创建资源组和参数

为托管应用程序部署创建资源组。

New-AzResourceGroup -Name applicationGroup -Location chinanorth3

还需要为托管应用程序资源组创建名称。 资源组是在部署托管应用程序时创建的。

运行以下命令以创建受管理资源组的名称。

$mrgprefix = 'mrg-sampleManagedApplication-'
$mrgtimestamp = Get-Date -UFormat "%Y%m%d%H%M%S"
$mrgname = $mrgprefix + $mrgtimestamp
$mrgname

$mrgprefix$mrgtimestamp 变量连接并存储在变量 $mrgname 中。 变量的值采用 mrg-sampleManagedApplication-20230512103059 格式。 在部署托管应用程序时使用 $mrgname 变量的值。

需要为托管应用程序的部署命令提供多个参数。 可以使用 JSON 格式的字符串或创建 JSON 文件。 在此示例中,我们使用 JSON 格式的字符串。 引号的 PowerShell 转义字符是反撇号 (`) 字符。 反撇号还用于行延续,以便命令可以使用多行。

JSON 格式字符串的语法如下所示:

"{ `"parameterName`": {`"value`":`"parameterValue`"}, `"parameterName`": {`"value`":`"parameterValue`"} }"

为了提高可读性,已完成的 JSON 字符串使用反撇号进行行继续。 值存储在 $params 变量中,并在部署命令中使用。 部署受管理资源需要 JSON 字符串中的参数。

$params="{ `"appServicePlanName`": {`"value`":`"demoAppServicePlan`"}, `
`"appServiceNamePrefix`": {`"value`":`"demoApp`"}, `
`"storageAccountNamePrefix`": {`"value`":`"demostg1234`"}, `
`"storageAccountType`": {`"value`":`"Standard_LRS`"} }"

用于创建受管理资源的参数:

  • appServicePlanName:创建计划名。 最多 40 个字母数字字符和连字符。 例如 demoAppServicePlan。 应用服务计划名称在订阅中的资源组中必须是唯一的。
  • appServiceNamePrefix:为计划名称创建前缀。 最多 47 个字母数字字符或连字符。 例如 demoApp。 在部署期间,前缀与唯一字符串连接,以创建在 Azure 中全局唯一的名称。
  • storageAccountNamePrefix:只能使用小写字母和数字,最多 11 个字符。 例如 demostg1234。 在部署期间,前缀与唯一字符串连接,以创建在 Azure 中全局唯一的名称。 尽管你正在创建前缀,控件会检查 Azure 中的现有名称,并可能会发布一条验证消息,指出该名称已存在。 如果出现此情况,请选择其他前缀。
  • storageAccountType:选项包括 Premium_LRS、Standard_LRS 和 Standard_GRS。

部署托管应用程序

运行以下命令来部署托管应用程序。

New-AzManagedApplication `
  -Name "demoManagedApplication" `
  -ResourceGroupName applicationGroup `
  -Location chinanorth3 `
  -ManagedResourceGroupName $mrgname `
  -ManagedApplicationDefinitionId $definitionid `
  -Kind ServiceCatalog `
  -Parameter $params

部署命令中使用的参数:

  • Name:指定托管应用程序的名称。 对于此示例,请使用 demoManagedApplication。
  • ResourceGroupName:为托管应用程序创建的资源组的名称。
  • Location:指定资源部署的区域。 对于此示例,请使用“chinanorth3”。
  • ManagedResourceGroupName:使用 $mrgname 变量的值。 部署托管应用程序时会创建受管理资源组。
  • ManagedApplicationDefinitionId:使用托管应用程序定义资源 ID 的 $definitionid 变量值。
  • Kind:指定托管应用程序的该类型。 此示例使用 ServiceCatalog
  • Parameter:在 JSON 格式的字符串中使用 $params 变量的值。

查看结果

部署服务目录托管应用程序后,可获得两个新资源组。 一个资源组包含托管应用程序。 另一个资源组包含已部署的受管理资源。 在此示例中,即应用程序服务、应用服务计划和存储帐户。

托管应用程序

部署完成后,可以检查托管应用程序的状态。

运行以下命令以检查托管应用程序的状态。

Get-AzManagedApplication -Name demoManagedApplication -ResourceGroupName applicationGroup

展开属性,以便更轻松地阅读 Properties 信息。

Get-AzManagedApplication -Name demoManagedApplication -ResourceGroupName applicationGroup | Select-Object -ExpandProperty Properties

托管的资源

可以查看部署到受管理资源组的资源。

若要显示受管理资源组的资源,请运行以下命令。 你在创建参数时创建了 $mrgname 变量。

Get-AzResource -ResourceGroupName $mrgname

若要显示受管理资源组的所有角色分配。

Get-AzRoleAssignment -ResourceGroupName $mrgname

在快速入门文章中创建的托管应用程序定义使用了具有所有者角色分配的组。 可以使用以下命令查看组。

Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner

还可以列出受管理资源组的拒绝分配。

Get-AzDenyAssignment -ResourceGroupName $mrgname

清理资源

处理完托管应用程序后,可以删除资源组,这将删除你创建的所有资源。 例如,在本快速入门中,你创建了资源组 applicationGroup 和前缀为 mrg-sampleManagedApplication 的受管理资源组。

命令会提示你确认删除资源组。

Remove-AzResourceGroup -Name applicationGroup

如果要删除托管应用程序定义,请删除在快速入门文章中创建的资源组。

  • 发布应用程序定义packageStorageGroupappDefinitionGroup
  • 使用自带存储发布定义packageStorageGroupbyosDefinitionStorageGroupbyosAppDefinitionGroup

后续步骤