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

使用 Azure 操作员服务管理器 (AOSM) CLI 扩展

在此操作指南中,网络函数发布者和服务设计器了解如何使用 Azure CLI 扩展开始使用网络函数定义(NFD)和网络服务设计(NSD)。

az aosm CLI 扩展旨在为发布 Azure 操作员服务管理器设计和定义提供支持。 CLI 扩展有助于发布网络函数定义(NFD)和网络服务设计(NSD)以用于 Azure 操作员服务管理器的过程。

先决条件

请联系 Microsoft 帐户团队,注册 Azure 订阅以访问 Azure 操作员服务管理器(AOSM),或通过合作伙伴注册表单表达你的兴趣

下载并安装 Azure CLI

在 Azure cloud shell 中使用 Bash 环境。 有关详细信息,请参阅 启动 Cloud Shell 以在 Azure Cloud Shell 中使用 Bash 环境。

对于想要在本地运行 CLI 引用命令的用户,请参阅 如何安装 Azure CLI

如果在 Window 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

如果使用本地安装,请使用 az login 命令登录到 Azure CLI,并完成终端中显示的提示以完成身份验证。 有关更多登录选项,请参阅 使用 Azure CLI 登录。

安装 Azure 操作员服务管理器 (AOSM) CLI 扩展

使用以下命令安装 Azure 操作员服务管理器 (AOSM) CLI 扩展:

az extension add --name aosm
  1. 运行 az version 以查看已安装的版本和依赖库。
  2. 运行 az upgrade 以升级到 Azure CLI 的当前版本。

注册并验证所需的资源提供程序

开始使用 Azure 操作员服务管理器之前,请确保注册所需的资源提供程序。 执行以下命令。 此注册过程最多可能需要 5 分钟。

# Register Resource Provider
az provider register --namespace Microsoft.HybridNetwork
az provider register --namespace Microsoft.ContainerRegistry

验证资源提供程序的注册状态。 执行以下命令。

# Query the Resource Provider
az provider show -n Microsoft.HybridNetwork --query "{RegistrationState: registrationState, ProviderName: namespace}"
az provider show -n Microsoft.ContainerRegistry --query "{RegistrationState: registrationState, ProviderName: namespace}"

注意

资源提供程序注册可能需要几分钟才能完成。 注册成功后,可以继续使用 Azure 操作员服务管理器(AOSM)。

容器化网络功能 (CNF) 要求

对于使用容器化网络函数的用户,必须确保在从中执行 CLI 的计算机上安装以下包:

  • 安装 Helm,请参阅 安装 Helm CLI
  • 在某些情况下, 安装 docker,请参阅 安装 Docker 引擎。 仅当源映像位于本地 Docker 存储库中,或者你没有推送图表和映像所需的订阅范围权限时,才需要这些权限。

权限

需要一个具有活动订阅的 Azure 帐户。 如果没有 Azure 订阅,请按照此处 的说明免费 开始创建帐户,然后再开始。

需要此订阅上的参与者角色才能创建资源组,或具有参与者角色的现有资源组。

发布 CNF 的权限

如果从现有 ACR 中采购 CNF 映像,则需要 Reader/AcrPull 具有来自此 ACR 的权限, Contributor 最好是角色 + AcrPush 角色(或允许整个 importImage 订阅的操作) AcrPush的自定义角色,以便能够导入到新的 Artifact 存储。 如果有这些,则不需要在本地安装 docker,映像复制很快。

如果没有订阅范围的权限,则可以使用--no-subscription-permissions标志运行az aosm nfd publish命令,将映像拉取到本地计算机,然后使用限定为存储的清单凭据将其推送到 Artifact Store。 要求在本地安装 docker。

Azure 操作员服务管理器 (AOSM) CLI 扩展概述

网络函数发布者和服务设计器使用 Azure CLI 扩展来帮助发布网络函数定义(NFD)和网络服务设计(NSD)。

如角色和接口中所述,网络函数发布服务器承担各种责任。 CLI 扩展有助于显示粗体的项目:

  • 创建网络函数。
  • 在网络函数设计(NFD)中对其进行编码。
  • 确定要向服务设计器公开的部署参数。
  • 将网络函数设计(NFD)载入 Azure 操作员服务管理器(AOSM)。
  • 上传关联的项目
  • 验证网络函数设计(NFD)。

服务设计器还具有各种职责,CLI 扩展以粗体形式协助项:

  • 选择服务设计中包含的网络函数定义。
  • 将其编码为网络服务设计
  • 将 Azure 基础结构合并到网络服务设计中。
  • 通过定义一个或多个配置组架构(CGSs)来确定如何参数化服务。
  • 确定服务操作员的输入如何映射到网络函数定义 和 Azure 基础结构所需的参数。
  • 将网络服务设计(NSD)载入 Azure 操作员服务管理器(AOSM)。
  • 上传关联的项目
  • 验证网络服务设计(NSD)。

工作流摘要

使用 CLI 扩展的通用工作流为:

  1. 查找用例所需的先决条件项。

  2. 运行命令 generate-config ,输出后续命令的示例 JSON 配置文件。

  3. 填写配置文件。

  4. 运行命令 build ,为网络函数定义或网络服务设计输出一个或多个 bicep 模板。

  5. 查看生成命令的输出,根据需要编辑输出。

  6. publish运行命令以:

    • 创建所有必备资源,例如资源组、发布者、项目存储、组。
    • 部署这些 bicep 模板。
    • 将项目上传到项目存储。

VNF 起点

对于 VNF,需要一个 ARM 模板,用于为 VNF 创建 Azure 资源,例如虚拟机、磁盘和 NIC。 ARM 模板必须存储在执行 CLI 的计算机上。

对于虚拟化网络函数定义版本(VNF NFDV),networkFunctionApplications 列表必须包含一个 VhdImageFile 和一个 ARM 模板。 包括多个 VhdImageFile 和多个 ARM 模板是不寻常的。 除非有很强的理由不这样做,否则 ARM 模板应部署单个 VM。 如果要部署多个 VM,服务设计器应包含网络函数定义(NFD)和网络服务设计(NSD)的许多副本。 ARM 模板(适用于 AzureCore 和 Nexus)只能从以下资源提供程序部署 ARM 资源:

  • Microsoft.Compute

  • Microsoft.Network

  • Microsoft.NetworkCloud

  • Microsoft.Storage

  • Microsoft.NetworkFabric

  • Microsoft.Authorization

  • Microsoft.ManagedIdentity

还需要用于 VNF 虚拟机的 VHD 映像。 VHD 映像可以存储在执行 CLI 的计算机上,也可以存储在可通过 SAS URI 访问的 Azure Blob 存储中。

CNF 起点

对于容器化网络函数(CNF)的部署,必须在从中执行 CLI 的计算机上存储以下各项:

  • 具有架构 的 Helm 包 - 这些包应存在于本地存储中,并在配置文件中 input.json 引用。 按照本快速入门操作时,请下载所需的 helm 包。

  • 创建示例配置文件 - 生成用于定义 CNF 部署的示例配置文件。 发出此命令以生成 input.json 需要使用特定配置填充的文件。

    az aosm nfd generate-config
    
  • CNF 的图像 - 下面是选项:

    • 对包含 CNF 图像的现有Azure 容器注册表的引用。 目前,每个 CNF 仅支持一个 ACR 和命名空间。 根据 helm 包架构自动填充要从此 ACR 复制的图像。 必须对此 ACR 拥有 Reader/AcrPull 权限。 若要使用此选项,请 source_registry 填写 input.json 文件(可选 source_registry_namespace )。
    • 本地计算机的源 docker 映像的映像名称。 此映像名称适用于有限的用例,其中 CNF 只需要本地 docker 存储库中存在的单个 docker 映像。 若要使用此选项,请 source_local_docker_image 填写 input.json 文件。 要求安装 docker。 本快速入门将指导你下载用于此选项的 nginx docker 映像。
  • 可选:映射文件(path_to_mappings):(可选)可以提供名为path_to_mappings的文件(磁盘上)。 此文件应镜像values.yaml,所选值替换为部署参数。 这样做会将它们作为参数公开给 CNF。 或者,可以将此留空, input.json CLI 会生成该文件。 在这种情况下,默认情况下,每个值 values.yaml 都公开为部署参数。 或者,使用 --interactive CLI 参数以交互方式做出选择。 本快速入门将指导你创建此文件。

配置文件 input.json 时,请确保按应按部署顺序列出 Helm 包。 例如,如果在包“B”之前必须部署包“A”,则应 input.json 类似于以下结构:

"helm_packages": [
    {
        "name": "A",
        "path_to_chart": "Path to package A",
        "path_to_mappings": "Path to package A mappings",
        "depends_on": [
            "Names of the Helm packages this package depends on"
        ]
    },
    {
        "name": "B",
        "path_to_chart": "Path to package B",
        "path_to_mappings": "Path to package B mappings",
        "depends_on": [
            "Names of the Helm packages this package depends on"
        ]
    }
]

遵循这些准则可确保使用 Helm 包和关联的配置部署容器化网络函数(CNF)的有序结构化方法。

NSD 起点

对于 NSD,需要知道网络函数定义(NFD)的详细信息才能合并到设计中:

  • NFD 发布服务器资源组
  • NFD 发布服务器名称和范围
  • 网络函数定义组的名称
  • 网络函数定义版本的位置、类型和版本

可以使用 az aosm nfd 命令创建所有这些资源。

Azure 操作员服务管理器 (AOSM) 命令

在开始之前,请使用以下命令:

  1. az login 用于登录到 Azure CLI。

  2. az account set --subscription <subscription> 用于选择要使用的订阅。

NFD 命令

获取有关命令参数的帮助:

  • az aosm -h

  • az aosm nfd -h

  • az aosm nfd build -h

定义类型命令

所有这些命令都采用 --definition-typevnfcnf.

创建用于生成定义的示例配置文件:

  • az aosm nfd generate-config

此命令输出一个名为的文件 input.json,该文件必须填充。 在以下命令中填充配置文件后,即可运行。

在本地生成 NFD 定义:

  • az aosm nfd build --config-file input.json

有关在本地生成 NFD 定义的更多选项:

  • 选择要公开为 NFD deploymentParameters 的 VNF ARM 模板参数中的哪一个,并可以选择交互方式选择每个参数:

    • az aosm nfd build --config-file input.json --definition_type vnf --order_params
    • az aosm nfd build --config-file input.json --definition_type vnf --order_params --interactive

选择要公开为 NFD deploymentParameters 的 CNF Helm 值参数之一:

  • az aosm nfd build --config-file input.json --definition_type cnf --interactive

发布预生成定义:

  • az aosm nfd publish --config-file input.json

删除已发布的定义:

  • az aosm nfd delete --config-file input.json

删除已发布的定义和发布者、项目存储和 NFD 组:

  • az aosm nfd delete --config-file input.json --clean

NSD 命令

获取有关命令参数的帮助:

  • az aosm -h

  • az aosm nsd -h

  • az aosm nsd build -h

创建用于生成定义的示例配置文件:

  • az aosm nsd generate-config

此命令输出一个名为的文件 input.json,该文件必须填充。 在以下命令中填充配置文件后,即可运行。

在本地生成 NSD:

  • az aosm nsd build --config-file input.json

发布预生成设计:

  • az aosm nsd publish --config-file input.json

删除已发布的设计:

  • az aosm nsd delete --config-file input.json

删除已发布的设计和发布者、项目存储和 NSD 组:

  • az aosm nsd delete --config-file input.json --clean

发布前编辑生成输出

az aosm CLI 扩展旨在为发布 Azure 操作员服务管理器设计和定义提供支持。 它提供用于创建复杂自定义设计和定义的构建基块。 可以在运行publish命令之前编辑命令输出build的文件,以添加更复杂的功能或自定义功能。

Azure 操作员服务管理器的完整 API 参考如下: Azure 混合网络 REST API

以下部分介绍了在发布之前可用于编辑生成文件的一些常见方法。

网络函数定义 (NFD)

  • versionStatenetworkfunctiondefinitionversions资源从Preview此更改为 Active。 活动 NFDV 是不可变的,而预览版 NFDV 是可变的,处于草稿状态。
  • 对于 CNF,请releaseNamespacehelmMappingRuleProfile更改图表部署到的 kubernetes 命名空间。

网络服务设计(NSD)

  • 将 Azure 基础结构添加到网络服务设计(NSD)。 将 Azure 基础结构添加到可能涉及:
    • 编写 ARM 模板以部署基础结构。
    • 为这些 ARM 模板添加配置组架构(CGS)。
    • 将类型为 ArmResourceDefinition NSD 的 (RET) 添加到 ResourceElementTemplates NSD。 除字段外type,RET 看起来与 NetworkFunctionDefinition RET 相同。
    • 将基础结构 ARM 模板添加到 artifact_manifest.bicep 文件。
    • 编辑文件以 configMappings 合并基础结构模板中的任何输出作为 ResourceElementTemplates 的输入 NetworkFunctionDefinition 。 例如:"customLocationId": "{outputparameters('infraretname').infraretname.customLocationId.value}"
    • 编辑 dependsOnProfileNetworkFunctionDefinition ResourceElementTemplates (RET)以确保在 NF RET 之前部署基础结构 RET。
  • versionStatenetworkservicedesignversions资源从Preview此更改为 Active。 活动 NSD 是不可变的,而预览版 NSD 是可变的,处于草稿状态。