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

将 VHD 映像推送到存储帐户支持的工件存储,或者从存储帐户支持的工件存储中拉取 VHD 映像

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

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

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

  • 你可能提供了错误的虚拟机映像,需要推送单个替换映像
  • 您可能需要更新虚拟机的新版本来为问题提供解决方案。

本操作说明文章介绍如何使用 AOSM 工件清单资源将 VHD 映像推送到现有 Blob 存储支持的工件存储,以及从现有 Blob 存储支持的工件存储中拉取 VHD 映像。 请参阅此操作说明,了解有关 ACR 支持的工件存储的等效文章。

先决条件

  • 在 Azure 订阅上启用 AOSM
  • 已安装 Azure CLI
  • 部署 Azure 存储帐户类型的工件存储资源
  • 部署包含要推送的映像条目的工件清单资源。 此示例显示虚构的 Contoso VNF 虚拟机映像的工件清单 Bicep 定义。
resource storageAccountArtifactManifest 'Microsoft.Hybridnetwork/publishers/artifactStores/artifactManifests@2023-09-01' = {
  parent: 'contoso-vnf-store'
  name: 'contoso-vnf-manifest'
  ___location: 'eastus'
  properties: {
    artifacts: [
      {
        artifactName: 'contoso-vnf-vm-vhd'
        artifactType: 'VhdImageFile'
        artifactVersion: '1-0-0'
      }
    ]
  }
}

重要

artifactVersion 必须为 1-0-0 格式,即在 0-9 范围内的数字用连字符分隔。

  • (如果要下载映像)VHD 映像已在 AOSM 工件存储资源中提供
  • (如果要上传图像)VHD 映像在从中执行本文中的命令的环境中可用
  • 你需要包含工件存储的资源组的参与者角色

登录到存储帐户支持的项目存储

  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'

以下命令返回 SAS URI,该 URI 将用于登录到支持项目存储的存储帐户。

{
  "containerCredentials": [
    {
      "containerName": "<container-name>",
      "containerSasUri": "<container-sas-uri>?<container-sas-token>"
    }
  ],
  "credentialType": "AzureStorageAccountToken",
  "expiry": "<expiry-time>",
  "storageAccountId": "/subscriptions/<subscription>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>"
}

将映像推送到存储帐户支持的项目存储

  1. 使用从项目清单返回的凭据将映像推送到存储 Blob。
az storage blob upload \
    --account-name <storage-account-name> \
    --container-name <container-name> \
    --name <image-name> \
    --file </path/to/file> \
    --sas-token <container-sas-token>

从存储帐户支持的项目存储中拉取映像

  1. 使用从工件清单返回的凭据从存储 Blob 拉取映像。
az storage blob download \
    --account-name <storage-account-name> \
    --container-name <container-name> \
    --name <image-name> \
    --file <~/destination/path/for/file> \
    --sas-token <container-sas-token>

后续步骤