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

将映像和其他工件推送到 Azure 容器注册表 (ACR) 支持的工件存储或从 Azure 容器注册表 (ACR) 支持的工件存储中拉取映像和其他工件

Azure 运营商服务管理器 (AOSM) 工件存储资源管理部署网络功能 (NF) 所需的工件。 这些项目包括容器化网络功能(CNF)映像、虚拟化网络函数(VNF)映像、Azure 资源管理器(ARM)模板和 Helm 包。 有两种工件存储:

  • Azure 容器注册表 (ACR) - 用于为所有平台上的 CNF 提供存储,以及为 Azure 运营商 Nexus 上的 VNF 提供存储
  • 存储帐户 - 用于为 Azure Core 上的 VNF 提供存储

Azure CLI AOSM 扩展提供了一个命令来推送 Azure 运营商关系上的 CNF 或 VNF 所需的所有工件。 在某些用例中,可能需要单独将工件推送到工件存储或从工件存储中拉取工件。

  • 可能提供了错误的容器映像,需要推送单个替换映像
  • 可能需要推送单个容器的新版本来修复问题
  • 可能需要在调试周期中编辑 NF ARM 模板
  • 可能需要在调试周期中编辑 helm 包或 VM ARM 模板

本 How-To 文章介绍如何使用 AOSM 项目清单资源和 ORAS 命令行工具将项目推送到现有 ACR 支持的项目存储,并从中拉取项目。 请参阅此操作方法,了解存储帐户支持的工件存储的等效文章。

先决条件

  • 在 Azure 订阅上启用 AOSM
  • 安装 Azure CLI
  • 部署 Azure 容器注册表类型的工件存储资源
  • 部署包含要安装的工件条目的工件清单资源。 此示例显示虚构的 Contoso CNF 容器映像的工件清单 Bicep 定义
resource acrArtifactManifest 'Microsoft.Hybridnetwork/publishers/artifactStores/artifactManifests@2023-09-01' = {
  parent: 'contoso-cnf-store'
  name: 'contoso-cnf-manifest'
  ___location: 'eastus'
  properties: {
    artifacts: [
      {
        artifactName: 'contoso-cnf-container'
        artifactType: 'OCIArtifact'
        artifactVersion: '0.1.0'
      }
    ]
  }
}
  • (如果要下载项目)项目已在 AOSM 项目存储资源中可用
  • (如果要上传项目)项目在从中执行本文中的命令的环境中可用
  • 安装 ORAS CLI
  • 你需要包含工件存储的资源组的参与者角色

登录到 ACR 支持的项目存储

  1. 从项目清单资源获取存储库范围的权限

    az rest --method POST --url 'https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.HybridNetwork/publishers/<publisher>/artifactStores/<artifact-store-name>/artifactManifests/<artifact-manifest-name>/listCredential?api-version=2023-09-01'
    

    此命令返回用户名和密码,此用户名和密码将用于登录到支持工件存储的 ACR。 密码位于 token 字段中。

    {
      "acrServerUrl": "https://<acr-name>.azurecr.io",
      "acrToken": "<token>",
      "credentialType": "AzureContainerRegistryScopedToken",
      "expiry": "2024-03-27T10:25:03.9217887+00:00",
      "repositories": [
        "<artifact-name>"
      ],
      "username": "<artifact-manifest-name>"
    }
    

    重要

    工件清单资源会针对推送和拉取操作授予范围界限严格的权限。 必须使用包含要推送或拉取的项目条目的项目清单。 artifactName 必须与存储库中的工件名称相符。 artifactVersion 必须与工件标签匹配

  2. 打开工件存储导航并复制 Backing storage 字段,找到支持工件存储资源的 ACR 的名称

    Azure 门户 Artifact Store 的基础资源字段示意图。

  3. 使用 ORAS CLI 登录到 ACR

oras login <acr-name>.azurecr.io --username <artifact-manifest-name> --password <token>

将工件推送到 ACR 支持的工件存储

  1. 使用 ORAS 将项目上传到 ACR。 <artifact-name> 必须与工件清单中的 artifactName 属性匹配。 <artifact-tag> 必须与工件清单中的 artifactVersion 属性匹配。 <artifact-tag> 必须采用 1.0.0 格式
oras push <acr-name>.azurecr.io/<artifact-name>:<artifact-tag> </path/to/artifact>

从 ACR 支持的工件存储中拉取工件

  1. 使用 ORAS 从 ACR 拉取项目。
oras pull <acr-name>.azurecr.io/<artifact-name>:<artifact-tag>

后续步骤

  • 有关 命令用法的详情,请参阅 oras push
  • 请参阅 ORAS 拉取 以获取更详细的 oras pull 命令用法说明。