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

配置容器映像以执行部署

本文介绍了如何生成自定义 Bicep 容器映像,以在 Azure 部署环境 (ADE) 中部署环境定义。

本文介绍如何生成自定义 Terraform 容器映像,以在 Azure 部署环境 (ADE) 中部署环境定义。 了解如何配置自定义映像以使用 Terraform 基础结构即代码 (IaC) 框架来预配基础结构。

本文介绍如何利用 Pulumi 在 Azure 部署环境 (ADE) 中进行部署。 了解如何使用 Pulumi 提供的示例映像,或者如何使用 Pulumi 基础结构即代码 (IaC) 框架配置自定义映像来预配基础结构。

ADE 支持扩展性模型,通过该模型,你可以创建可在环境定义中使用的自定义映像。 若要使用此扩展性模型,请创建你自己的自定义映像,并将其存储在容器注册表中,例如 Azure 容器注册表 (ACR) 或 Docker Hub。 然后,可以在环境定义中引用这些映像来部署环境。

环境定义至少包含两个文件:一个模板文件(例如 azuredeploy.jsonmain.bicep)和一个名为 environment.yaml 的清单文件。 ADE 使用容器部署环境定义。

ADE 团队提供了一系列映像来帮助你入门,包括核心映像和 Azure 资源管理器 (ARM)-Bicep 映像。 可以在运行程序映像文件夹中访问这些示例映像。

环境定义至少包含两个文件:一个模板文件(例如 main.tf)和一个名为 environment.yaml 的清单文件。 使用容器部署使用 Terraform 的环境定义。

环境定义至少包括两个文件:一个 Pulumi 项目文件 Pulumi.yaml 和一个名为 environment.yaml 的清单文件。 它还可能包含一个用你喜欢的编程语言(C#、TypeScript、Python 等)编写的用户程序。ADE 使用容器部署环境定义。

先决条件

将容器映像与 ADE 配合使用

可以采用以下方法之一将容器映像与 ADE 配合使用:

  • 使用示例容器映像:对于简单场景,请使用 ADE 提供的示例 ARM-Bicep 容器映像。
  • 创建自定义容器映像:对于较复杂的场景,请创建满足特定要求的自定义容器映像。

使用容器映像时要遵循的主要步骤包括:

  1. 选择要使用的映像类型:示例映像或自定义映像。
    • 如果使用自定义映像,请从示例映像开始,然后对其进行自定义以满足你的要求。
  2. 生成映像。
  3. 将映像上传到一个专用注册表或公共注册表。
  4. 配置对注册表的访问权限。
    • 对于公共注册表,请配置匿名拉取。
    • 对于专用注册表,请授予 DevCenter ACR 权限。
  5. 将映像位置添加到环境定义中的 runner 参数
  6. 部署使用自定义映像的环境。

该过程的第一步是选择要使用的映像类型。 选择相应的选项卡来查看该过程。

使用示例容器映像

ADE 支持 ARM 和 Bicep,无需进行任何额外配置。 你可以通过将模板文件(例如 azuredeploy.jsonenvironment.yaml)添加到目录来为部署环境创建用来部署 Azure 资源的环境定义。 然后,ADE 使用示例 ARM-Bicep 容器映像来创建部署环境。

在 environment.yaml 文件中,runner 属性指定要使用的容器映像的位置。 若要使用在 Microsoft 工件注册表上发布的示例映像,请使用相应的标识符 runner

以下示例演示了引用示例 ARM-Bicep 容器映像的 runner

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

可以在 ARM-Bicep 映像的 Runner-Images 文件夹下的 ADE 示例存储库中看到示例 Bicep 容器映像。

有关如何创建使用 ADE 容器映像部署 Azure 资源的环境定义的详细信息,请参阅添加和配置环境定义

使用自定义映像配置 Terraform 映像。

使用 Pulumi 提供的示例容器映像

Pulumi 团队提供了一个预生成映像供你开始操作,你可以在 Runner-Image 文件夹中看到它。 此映像在 Pulumi 的 Docker Hub 中作为 pulumi/azure-deployment-environments 公开提供,因此你可以直接从 ADE 环境定义使用它。

下面是利用预生成映像的示例 environment.yaml 文件

name: SampleDefinition
version: 1.0.0
summary: First Pulumi-Enabled Environment
description: Deploys a Storage Account with Pulumi
runner: pulumi/azure-deployment-environments:0.1.0
templatePath: Pulumi.yaml

可以在 Environments 文件夹中找到一些示例环境定义。

生成映像

你可以使用 Docker CLI 构建你的映像。 确保计算机上已安装 Docker 引擎。 然后,导航到 Dockerfile 的目录并运行以下命令:

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

例如,如果要将映像保存在名为 customImage 的注册表中的存储库下,并使用 1.0.0 的标记版本进行上传,请运行:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

使自定义映像可供 ADE 使用

为了使用自定义映像,需要将它们存储在容器注册表中。 你可以使用公共容器注册表,也可以使用专用容器注册表。 强烈建议使用 Azure 容器注册表 (ACR),由于它与 ADE 紧密集成,因此可以发布映像,但不允许进行公共匿名拉取访问。 必须生成自定义容器映像并将其推送到容器注册表,才能在 ADE 中使用它。

也可以将映像存储在另一个容器注册表(例如 Docker Hub 容器注册表)中,但这种情况下它需要可供公开访问。

注意

将容器映像存储在具有匿名(未经身份验证)拉取访问权限的注册表中,会使其可公开访问。 如果映像中包含任何敏感信息,请不要这样做。 相反,请将其存储在禁用了匿名拉取访问的 Azure 容器注册表 (ACR) 中。

若要使用存储在 ACR 中的自定义映像,需确保 ADE 具有访问映像的相应权限。 创建 ACR 实例时,默认情况下它是安全的,并且仅允许经过身份验证的用户访问。

可以使用 Pulumi 创建 Azure 容器注册表并将映像发布到该注册表。 有关在 Azure 帐户中创建所有所需资源的自包含 Pulumi 项目,请参阅预配/自定义映像示例。

请选择相应的选项卡来了解有关每种方法的详细信息。

使用具有安全访问权限的专用注册表

默认情况下,只有已经过身份验证的用户才拥有从 Azure 容器注册表拉取或推送内容的访问权限。 可以通过限制来自某些网络的访问并分配特定角色来进一步保护对 ACR 的访问。

若要通过 Azure CLI、Azure 门户、PowerShell 命令等创建 ACR 的实例,请遵循相应的快速入门

限制网络访问

为了保护对 ACR 的网络访问,可以限制对你自己的网络的访问,或者完全禁用公用网络访问。 如果限制网络访问,则必须启用防火墙例外“允许受信任的 Microsoft 服务访问此容器注册表”

若要禁用从公用网络进行的访问,请执行以下操作:

  1. 创建 ACR 实例或使用现有实例。

  2. 在 Azure 门户中,转到要配置的 ACR。

  3. 在左侧菜单上的“设置”下,选择“网络”。

  4. 在“网络”页的“公共访问”选项卡的“公用网络访问”下选择“禁用”。

    Azure 门户的屏幕截图,显示了 ACR 网络设置,其中突出显示了“公共访问”和“禁用”。

  5. 在“防火墙例外”下,检查是否已选中“允许受信任的 Microsoft 服务访问此容器注册表”,然后选择“保存”

    ACR 网络设置的屏幕截图,其中突出显示了“允许受信任的 Microsoft 服务访问此容器注册表”和“保存”。

分配 AcrPull 角色

使用容器映像创建环境的操作使用 ADE 基础结构,其中包括项目和环境类型。 每个项目都有一个或多个项目环境类型,这些项目环境类型需要对容器映像(用于定义要部署的环境)的读取访问权限。 为了安全地访问 ACR 中的映像,请将 AcrPull 角色分配给每个项目环境类型。

若要将 AcrPull 角色分配给项目环境类型,请执行以下操作:

  1. 在 Azure 门户中,转到要配置的 ACR。

  2. 在左侧菜单中,选择“访问控制 (IAM)”。

  3. 选择“添加”>“添加角色分配”。

  4. 分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

    设置
    角色 选择“AcrPull”
    将访问权限分配到 选择“用户、组或服务主体”。
    成员 输入需要访问容器中映像的项目环境类型的名称。

    项目环境类型如下例所示:

    “选择成员”窗格的屏幕截图,显示了项目环境类型列表,突出显示了名称的一部分。

在此配置中,ADE 使用 PET 的托管标识,无论该标识是系统分配的还是用户分配的。

提示

必须针对每种项目环境类型进行此角色分配。 它可以通过 Azure CLI 自动完成。

准备好将映像推送到注册表后,请运行以下命令:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

使用脚本生成容器映像

你可以使用脚本生成自定义映像并将其推送到指定的容器注册表,而不是自己生成并将其推送到容器注册表。

Microsoft 提供了一个快速入门脚本,可帮助你生成自定义映像并将其推送到注册表。 该脚本生成映像并将其推送到存储库 ade 下的指定 Azure 容器注册表 (ACR) 和标记 latest

若要使用该脚本,必须:

  1. 创建 Dockerfile 和脚本文件夹以支持 ADE 扩展性模型。
  2. 为自定义映像提供注册表名称和目录。
  3. 安装 Azure CLI 和 Docker Desktop,并在 PATH 变量中进行安装。
  4. 使 Docker Desktop 保持运行。
  5. 有权推送到指定的注册表。

可以在此处查看脚本。

可以在 PowerShell 中使用以下命令调用脚本:

.\quickstart-image-build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}'

此外,如果要推送到特定的存储库和标记名称,可以运行:

.\quickstart-image.build.ps1 -Registry '{YOUR_REGISTRY}' -Directory '{DIRECTORY_TO_YOUR_IMAGE}' -Repository '{YOUR_REPOSITORY}' -Tag '{YOUR_TAG}'

将映像连接到环境定义

创作环境定义以在其部署中使用自定义映像时,请编辑清单文件(environment.yaml 或 manifest.yaml)上的 runner 属性。

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

若要详细了解如何创建使用 ADE 容器映像部署 Azure 资源的环境定义,请参阅添加和配置环境定义