你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用快速入门模板在虚拟网络中部署 Cloud Shell

在运行快速入门模板以在虚拟网络 (VNet) 中部署 Azure Cloud Shell 之前,需要满足几个先决条件。 必须在订阅上拥有“所有者”角色分配。 若要查看和分配角色,请参阅列出订阅的所有者

本文逐步讲解如何在虚拟网络中配置和部署 Cloud Shell:

  1. 注册资源提供程序。
  2. 收集所需信息。
  3. 使用 Azure Cloud Shell - VNet Azure 资源管理器模板(ARM 模板)创建虚拟网络。
  4. 使用 Azure Cloud Shell - VNet 存储 ARM 模板创建虚拟网络存储帐户。
  5. 在虚拟网络中配置和使用 Cloud Shell。

1.注册资源提供程序

Cloud Shell 需要访问特定 Azure 资源。 通过资源提供程序提供该访问权限。 必须已在订阅中注册以下资源提供程序:

  • Microsoft.CloudShell
  • Microsoft.ContainerInstance
  • Microsoft.Relay

根据创建租户的时间,其中部分提供程序可能已注册。

查看所有资源提供程序和订阅的注册状态:

  1. 登录 Azure 门户
  2. 在 Azure 门户菜单上,搜索“订阅”。 从可用选项中选择它。
  3. 选择要查看的订阅。
  4. 在左侧菜单中的“设置”下,选择“资源提供程序”。
  5. 在搜索框中输入“cloudshell”可搜索资源提供程序。
  6. 从提供程序列表中选择 Microsoft.CloudShell 资源提供程序。
  7. 选择“注册”,将状态从“未注册”更改为“已注册”。
  8. 对 Microsoft.ContainerInstance 和 Microsoft.Relay 资源提供程序重复上述步骤。

在 Azure 门户中选择资源提供程序的屏幕截图。

2.收集所需信息

需要先收集几个信息,然后才能部署 Cloud Shell。

可以使用默认的 Cloud Shell 实例收集所需的信息并创建必要的资源。 应为 Cloud Shell 虚拟网络部署创建专用资源。 所有资源必须位于同一 Azure 区域和同一资源组中。

填写以下值:

  • 订阅:包含 Cloud Shell 虚拟网络部署资源组的订阅的名称。
  • 资源组:Cloud Shell 虚拟网络部署的资源组的名称。
  • 区域:资源组的位置。
  • 虚拟网络:Cloud Shell 虚拟网络的名称。
  • 子网地址范围 - 此部署会创建三个子网。 需要为每个子网规划地址范围。
    • 容器子网 - 需要足够的 IP 地址来支持要使用的并发会话数。
    • 中继子网 - 中继子网至少需要一个 IP 地址。
    • 存储子网名称 - 需要足够的 IP 地址来支持要使用的并发会话数。
  • Azure 容器实例 OID:资源组的 Azure 容器实例的 ID。
  • Azure 中继命名空间:要分配给模板创建的 Azure 中继资源的名称。

创建资源组

可以使用 Azure 门户、Azure CLI 或 Azure PowerShell 来创建资源组。 有关详细信息,请参阅以下文章:

创建虚拟网络

可以使用 Azure 门户、Azure CLI 或 Azure PowerShell 来创建虚拟网络。 有关详细信息,请参阅以下文章:

注意

为 Cloud Shell 子网设置容器子网地址前缀时,请务必考虑需要并发运行的 Cloud Shell 会话数。 如果 Cloud Shell 会话数超过容器子网中的可用 IP 地址数,则这些会话的用户将无法连接到 Cloud Shell。 增加容器子网范围以满足特定需求。 有关详细信息,请参阅添加、更改或删除虚拟网络子网的“更改子网设置”部分。

获取 Azure 容器实例 ID

Azure 容器实例 ID 是每个租户的唯一值。 在快速入门模板中使用此标识符,为 Cloud Shell 配置虚拟网络。 若要从命令行获取 ID,请参阅用于获取 Azure 容器实例 ID 的备用方法

  1. 登录 Azure 门户。 在主页中选择 Microsoft Entra ID。 如果未显示图标,请在顶部搜索栏中输入 Microsoft Entra ID

  2. 在左侧菜单中,选择“概述”。 或者,在搜索栏中输入 azure container instance service

    搜索 Azure 容器实例服务的屏幕截图。

  3. 在企业应用程序下的结果中,选择“Azure 容器实例服务”

  4. 在 Azure 容器实例服务的“概述”页上,找到作为属性列出的对象 ID 值。

    需要在虚拟网络的快速启动模板中使用此 ID。

    Azure 容器实例服务详细信息的屏幕截图。

3.使用 ARM 模板创建所需的网络资源

使用 Azure Cloud Shell - VNet 模板在虚拟网络中创建 Cloud Shell 资源。 该模板在之前创建的虚拟网络下创建三个子网。 可以选择更改提供的子网名称或使用默认值。

虚拟网络和子网需要有效的 IP 地址分配。 中继子网至少需要一个 IP 地址,并且容器子网中需要足够的 IP 地址才能支持预期使用的并发会话数。

ARM 模板需要有关之前创建的资源的特定信息,以及新资源的命名信息。 表单中会填写此信息以及预先填充的信息。

模板所需的信息包括:

  • 订阅:包含 Cloud Shell 虚拟网络资源组的订阅的名称。
  • 资源组:现有或新创建的资源组的名称。
  • 区域:资源组的位置。
  • 虚拟网络:Cloud Shell 虚拟网络的名称。
  • 网络安全组:要分配给模板创建的网络安全组 (NSG) 的名称。
  • Azure 容器实例 OID:资源组的 Azure 容器实例的 ID。

使用以下信息填写窗体:

项目详细信息
订阅 默认为当前订阅上下文。
本文中的示例使用 Contoso (carolb)
资源组 根据必备信息输入此资源组的名称。
本文中的示例使用 rg-cloudshell-eastus
实例详细信息
区域 预先填充了默认区域。
本文中的示例使用 East US
现有 VNET 名称 根据收集的必备信息填写值。
本文中的示例使用 vnet-cloudshell-eastus
中继命名空间名称 创建要分配给模板创建的中继资源的名称。
本文中的示例使用 arn-cloudshell-eastus
Nsg 名称 输入 NSG 的名称。 如果部署,会创建此 NSG 并向其分配访问规则。
Azure 容器实例 OID 根据收集的必备信息填写值。
本文中的示例使用 8fe7fd25-33fe-4f89-ade3-0e705fcf4370
容器子网名称 默认为 cloudshellsubnet。 输入容器子网的名称。
容器子网地址前缀 本文中的示例使用 10.1.0.0/16,它为 Cloud Shell 实例提供 65,543 个 IP 地址。
中继子网名称 默认为 relaysubnet。 输入包含中继的子网的名称。
中继子网地址前缀 本文中的示例使用 10.0.2.0/24
存储子网名称 默认为 storagesubnet。 输入包含存储的子网的名称。
存储子网地址前缀 本文中的示例使用 10.0.3.0/24
专用终结点名称 默认为 cloudshellRelayEndpoint。 输入包含容器的子网的名称。
标记名称 默认为 {"Environment":"cloudshell"}。 保持不变或添加更多标记。
位置 默认为 [resourceGroup().location]。 保持不变。

表单完成后,选择“审阅 + 创建”,并将网络 ARM 模板部署到订阅。

4.使用 ARM 模板创建虚拟网络存储

使用 Azure Cloud Shell - VNet 存储模板在虚拟网络中创建 Cloud Shell 资源。 该模板可创建存储帐户并将其分配给专用虚拟网络。

ARM 模板需要有关之前创建的资源的特定信息,以及新资源的命名信息。

模板所需的信息包括:

  • 订阅:包含 Cloud Shell 虚拟网络资源组的订阅的名称。
  • 资源组:现有或新创建的资源组的名称。
  • 区域:资源组的位置。
  • 现有虚拟网络名称:之前创建的虚拟网络的名称。
  • 现有存储子网名称:使用网络快速入门模板创建的存储子网的名称。
  • 现有容器子网名称:使用网络快速入门模板创建的容器子网的名称。

使用以下信息填写窗体:

项目详细信息
订阅 默认为当前订阅上下文。
本文中的示例使用 Contoso (carolb)
资源组 根据必备信息输入此资源组的名称。
本文中的示例使用 rg-cloudshell-eastus
实例详细信息
区域 预先填充了默认区域。
本文中的示例使用 East US
现有 VNET 名称 本文中的示例使用 vnet-cloudshell-eastus
现有存储子网名称 填写网络模板创建的资源的名称。
现有容器子网名称 填写网络模板创建的资源的名称。
存储帐户名称 为新存储帐户创建一个名称。
本文中的示例使用 myvnetstorage1138
文件共享名称 默认为 acsshare。 输入要创建的文件共享的名称。
资源标记 默认为 {"Environment":"cloudshell"}。 保持不变或添加更多标记。
位置 默认为 [resourceGroup().location]。 保持不变。

表单完成后,选择“审阅 + 创建”,并将网络 ARM 模板部署到订阅。

5.配置 Cloud Shell 以使用虚拟网络

部署专用 Cloud Shell 实例后,每个 Cloud Shell 用户都必须更改配置才能使用新的专用实例。

如果在部署专用实例之前已经使用了默认 Cloud Shell 实例,则必须重置用户设置:

  1. 打开 Cloud Shell。
  2. 从菜单栏(齿轮图标)中选择“Cloud Shell 设置”。
  3. 选择“重置用户设置”,然后选择“重置”。

重置用户设置后,下次启动 Cloud Shell 时,会像首次使用一样。

Cloud Shell 存储对话框的屏幕截图。

  1. 选择想要的 shell 体验(Bash 或 PowerShell)

  2. 选择“显示高级设置”

  3. 选中“显示 VNET 隔离设置”复选框。

  4. 选择包含专用 Cloud Shell 实例的“订阅”。

  5. 选择包含专用 Cloud Shell 实例的区域。

  6. 对于资源组,请选择包含私有云 Shell 实例的资源组。

    如果选择了正确的资源组,“虚拟网络”、“网络配置文件”和“中继命名空间”会自动填入正确的值。

  7. 对于文件共享,请输入使用存储模板创建的文件共享的名称。

  8. 选择“创建存储”。

用于获取 Azure 容器实例 ID 的备用方法

如果你安装了 Azure PowerShell,可以使用以下命令获取 Azure 容器实例 ID。

(Get-AzADServicePrincipal -DisplayNameBeginsWith 'Azure Container Instance').Id
d5f227bb-ffa6-4463-a696-7234626df63f

如果你安装了 Azure CLI,可以使用以下命令获取 Azure 容器实例 ID。

az ad sp list --display-name 'Azure Container Instance' --query "[].id"
[
  "d5f227bb-ffa6-4463-a696-7234626df63f"
]

后续步骤

必须为需要使用新的专用 Cloud Shell 实例的每个用户完成 Cloud Shell 配置步骤。