教程:如何使用模板创建安全工作区

模板提供了一种简便方法来创建可重现服务部署。 该模板定义将创建的内容,以及使用模板时提供的一些信息。 例如,为 Azure 机器学习工作区指定唯一名称。

本教程介绍如何使用 Microsoft BicepHashicorp Terraform 模板创建以下 Azure 资源:

  • Azure 虚拟网络。 以下资源在此 VNet 后面受到保护:
    • Azure 机器学习工作区
      • Azure 机器学习计算实例
      • Azure 机器学习计算群集
    • Azure 存储帐户
    • Azure Key Vault
    • Azure Application Insights
    • Azure 容器注册表
    • Azure Bastion 主机
    • Azure 机器学习虚拟机 (Data Science Virtual Machine)
    • Bicep 模板还会创建 Azure Kubernetes 服务群集,并为其创建单独的资源组。

提示

Azure 建议使用 Azure 机器学习托管虚拟网络,而不是执行本文中的步骤。 使用托管虚拟网络,Azure 机器学习可处理工作区和托管计算的网络隔离作业。 还可以为工作区所需的资源(例如 Azure 存储帐户)添加专用终结点。 有关详细信息,请参阅工作区托管网络隔离

先决条件

在使用本文中的步骤之前,必须有一个 Azure 订阅。 如果没有 Azure 订阅,请创建一个试用版订阅

还必须具有 Bash 或 Azure PowerShell 命令行。

提示

阅读本文时,请使用每个部分中的选项卡来选择是查看有关使用 Bicep 模板还是 Terraform 模板的信息。

  1. 若要安装命令行工具,请参阅设置 Bicep 开发和部署环境

  2. 本文中使用的 Bicep 模板位于 https://github.com/Azure/azure-quickstart-templates/blob/master/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure。 使用以下命令将 GitHub 存储库克隆到开发环境:

    提示

    如果在开发环境中没有 git 命令,可以从 https://git-scm.com/ 安装该命令。

    git clone https://github.com/Azure/azure-quickstart-templates
    cd azure-quickstart-templates/quickstarts/microsoft.machinelearningservices/machine-learning-end-to-end-secure
    

了解模板

Bicep 模板由 main.bicep 和 modules 子目录中的 .bicep 文件组成。 下表描述了每个文件负责的内容:

文件 说明
main.bicep 参数和变量。 将参数和变量传递给 modules 子目录中的其他模块。
vnet.bicep 定义 Azure 虚拟网络和子网。
nsg.bicep 定义 VNet 的网络安全组规则。
bastion.bicep 定义 Azure Bastion 主机和子网。 Azure Bastion 允许你使用 Web 浏览器轻松访问 VNet 中的 VM。
dsvmjumpbox.bicep 定义 Data Science Virtual Machine (DSVM)。 Azure Bastion 用于通过 Web 浏览器访问此 VM。
storage.bicep 定义工作区用于默认存储的 Azure 存储帐户。
keyvault.bicep 定义工作区使用的 Azure Key Vault。
containerregistry.bicep 定义工作区使用的 Azure 容器注册表。
applicationinsights.bicep 定义工作区使用的 Azure Application Insights 实例。
machinelearningnetworking.bicep 为 Azure 机器学习工作区定义专用终结点和 DNS 区域。
Machinelearning.bicep 定义 Azure 机器学习工作区。
machinelearningcompute.bicep 定义 Azure 机器学习计算群集和计算实例。
privateaks.bicep 定义 Azure Kubernetes 服务群集实例。

重要

示例模板不一定会使用 Azure 机器学习的最新 API 版本。 使用此模板之前,建议对其进行修改以使用最新的 API 版本。 有关 Azure 机器学习的最新 API 版本的信息,请参阅 Azure 机器学习 REST API

每项 Azure 服务都有自己的 API 版本集。 有关特定服务的 API 的信息,请查看 Azure REST API 参考中的服务信息。

若要更新 API 版本,请查找资源类型的 Microsoft.MachineLearningServices/<resource> 条目,并将其更新为最新版本。 以下示例显示 Azure 机器学习工作区的一个条目,该工作区使用 API 版本 2022-05-01

resource machineLearning 'Microsoft.MachineLearningServices/workspaces@2022-05-01' = {

重要

在本教程中,DSVM 和 Azure Bastion 作为连接到安全工作区的一种简单方法。 在生产环境中,建议使用 Azure VPN 网关Azure ExpressRoute 直接从本地网络访问 VNet 中的资源。

配置模板

要运行 Bicep 模板,请使用 main.bicep 文件所在的 machine-learning-end-to-end-secure 中的以下命令:

  1. 若要创建新的 Azure 资源组,请使用以下命令。 将 exampleRG 替换为资源组名称,将 chinaeast2 替换为要使用的 Azure 区域:

    az group create --name exampleRG --location chinaeast2
    
  2. 若要运行模板,请使用以下命令。 将 prefix 替换为唯一前缀。 创建 Azure 机器学习所需的 Azure 资源时,将使用该前缀。 将 securepassword 替换为跳转盒的安全密码。 该密码用于跳转盒的登录帐户(以下示例中的 azureadmin):

    提示

    prefix 必须为 5 个或更少字符。 它不能全为数字或包含以下字符:~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , < > / ?

    az deployment group create \
        --resource-group exampleRG \
        --template-file main.bicep \
        --parameters \
        prefix=prefix \
        dsvmJumpboxUsername=azureadmin \
        dsvmJumpboxPassword=securepassword
    

连接到工作区

模板完成后,使用以下步骤连接到 DSVM:

  1. Azure 门户中,选择与模板一起使用的 Azure 资源组。 然后,选择模板创建的 Data Science Virtual Machine。 如果在查找时遇到问题,请使用筛选器部分来筛选虚拟机的类型。

    Screenshot of filtering and selecting the vm.

  2. 从虚拟机的“概述”部分中,选择“连接”,然后从下拉列表中选择“Bastion”。

    Screenshot of selecting to connect using Bastion.

  3. 出现提示时,提供配置模板时指定的用户名和密码,然后选择“连接”。

    重要

    首次连接到 DSVM 桌面时,将打开 PowerShell 窗口并开始运行脚本。 在继续执行下一步之前,请允许此操作完成。

  4. 从 DSVM 桌面启动 Microsoft Edge,并输入 https://studio.ml.azure.cn 作为地址。 登录到 Azure 订阅,然后选择模板创建的工作区。 将显示工作区工作室。

疑难解答

错误:Windows 计算机名的长度不能超过 15 个字符,并且不能全为数字或包含以下字符

当 DSVM 跳转框的名称大于 15 个字符或包含以下字符之一时,可能会发生此错误:~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , < > / ?

使用 Bicep 模板时,将使用提供给模板的前缀值以编程方式生成跳转盒名称。 为了确保名称不超过 15 个字符或包含任何无效字符,请使用不超过 5 个字符的前缀,并且不要在前缀中使用以下任何字符:~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , < > / ?

使用 Terraform 模板时,将使用 dsvm_name 参数传递跳转盒名称。 为了避免此错误,请使用不超过 15 个字符的名称,并且名称中不要包含以下任何字符:~ ! @ # $ % ^ & * ( ) = + _ [ ] { } \ | ; : . ' " , < > / ?

后续步骤

重要

Data Science Virtual Machine (DSVM) 和任何计算实例资源都按它们运行的每小时计费。 为避免产生额外的费用,应在不使用时停止这些资源。 有关详细信息,请参阅以下文章:

若要继续了解如何从 DSVM 使用安全工作区,请参阅教程:一天中的 Azure 机器学习

若要详细了解常见的安全工作区配置和输入/输出要求,请参阅 Azure 机器学习安全工作区流量流