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

快速入门:将 Nginx 容器发布为容器化网络功能 (CNF)

本快速入门介绍了如何使用 az aosm Azure CLI 扩展创建和发布基本网络功能定义。 其目的是演示发布服务器 Azure 运营商服务管理器 (AOSM) 资源的工作流。 此处介绍的基本概念旨在帮助用户构建更令人兴奋的服务。

先决条件

创建输入文件

创建用于发布网络功能定义的输入文件。 执行以下命令,以生成网络功能定义 (NFD) 的输入配置文件。

az aosm nfd generate-config --definition-type cnf

执行上述命令将生成 input.json 文件。

注意

编辑 input.json 文件。 将其替换为以下示例中所示的值。 将文件另存为 input-cnf-nfd.json

注意

在本快速入门中,我们将使用 source_local_docker_image。 对于将来可能生成的更多 CNF,可以选择使用对包含 CNF 映像的现有 Azure 容器注册表的引用。 目前,每个 CNF 仅支持一个 ACR 和命名空间。 要从此 ACR 复制的映像将根据 helm 包架构自动填充。 若要在将来使用此选项,请在 input.json 文件中填写 source_registry 和(可选)source_registry_namespace。 必须对此 ACR 拥有读取者/AcrPull 权限。

下面是示例 input-cnf-nfd.json 文件:

{
    "publisher_name": "nginx-publisher",
    "publisher_resource_group_name": "nginx-publisher-rg",
    "nf_name": "nginx",
    "version": "1.0.0",
    "acr_artifact_store_name": "nginx-nsd-acr",
    "location": "uksouth",
    "images": {
        "source_local_docker_image": "nginx:stable"
    },
    "helm_packages": [
        {
            "name": "nginxdemo",
            "path_to_chart": "nginxdemo-0.1.0.tgz",
            "path_to_mappings": "",
            "depends_on": []
        }
    ]
}
  • publisher_name - 要将定义发布到的发布服务器资源的名称。 如果它尚不存在,则已创建。
  • publisher_resource_group_name - 发布服务器资源的资源组。 如果它尚不存在,则已创建。
  • acr_artifact_store_name - ACR 项目存储资源的名称。 如果它尚不存在,则已创建。
  • location - 创建资源时要使用的 Azure 位置。
  • nf_name - NF 定义的名称。
  • version - A.B.C 格式的 NF 定义版本。
  • images
    • source_local_docker_image - 可选。 本地计算机的源 docker 映像的映像名称。 针对 CNF 只需要一个 Docker 映像位于本地 Docker 存储库的有限用例。
  • helm_packages
    • name - Helm 包的名称
    • path_to_chart - Helm 图表在本地磁盘上的文件路径。 接受 .tgz、.tar 或 .tar.gz。 即使在 Windows 上运行,也可以使用 Linux 斜杠 (/) 文件分隔符。 该路径应该是绝对路径或相对于 input.json 文件位置的路径。
    • path_to_mappings - 值映射在本地磁盘上的文件路径(绝对路径或相对于 input.json 的路径),其中所选值替换为 deploymentParameter 占位符。 接受 .yaml 或 .yml。 如果保留为空字符串,则会生成一个值映射文件,其中每个值都映射到部署参数。 在生成命令上使用空白字符串和 --interactive,以交互方式选择要映射的值。
    • depends_on - 此包所依赖的 Helm 包的名称。 如果没有依赖项,请保留为空数组。

生成网络功能定义 (NFD)

若要构造网络功能定义 (NFD),请在交互模式下启动生成过程。 通过此模式,可以选择性地将 values.yaml 的值公开为 deploymentParameters。

az aosm nfd build -f input-cnf-nfd.json --definition-type cnf --interactive

在交互过程中,除了以下两个选项外,可以对其他所有选项回复“n”(否):

  • 若要公开参数 serviceAccount_create,请回复“y”(是)
  • 若要公开参数 service_port,请回复“y”(是)

生成完成后,检查生成的文件,以便更好地了解网络功能定义 (NFD) 结构。 将会创建以下文件:

目录/文件 说明
configMappings 将网络功能定义版本 (NFDV) 的部署参数映射到 helm 图表所需的值。
generatedValuesMappings 创建 configMappings 的交互模式的 yaml 输出。 根据需要编辑并重新运行命令。
架构 定义从该网络功能定义版本 (NFDV) 创建网络功能 (NF) 所需的部署参数。
cnfartifactmanifests.bicep 用于创建项目清单的 bicep 模板。
cnfdefinition.bicep 用于创建网络功能定义版本 (NFDV) 本身的 bicep 模板。

如果在交互式选择过程中出错,可以使用两个选项更正这些错误:

  1. 使用正确的选择重新运行命令。
  2. 手动调整 generatedValuesMappings 文件夹中生成的值映射。 然后编辑 input.json 中的 path_to_mappings_file 以引用修改的文件路径。

发布网络功能定义并上传项目

执行以下命令以发布网络功能定义 (NFD) 并上传关联的项目:

az aosm nfd publish -f input-cnf-nfd.json --definition-type cnf

命令完成后,检查发布服务器资源组中的资源,以查看创建的组件和项目。

后续步骤