你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
快速入门:将 Nginx 容器发布为容器化网络功能 (CNF)
本快速入门介绍了如何使用 az aosm
Azure CLI 扩展创建和发布基本网络功能定义。 其目的是演示发布服务器 Azure 运营商服务管理器 (AOSM) 资源的工作流。 此处介绍的基本概念旨在帮助用户构建更令人兴奋的服务。
先决条件
需要一个具有活动订阅的 Azure 帐户。 如果你没有 Azure 订阅,请按照此处的说明免费开始创建帐户,然后再开始。
对此订阅拥有参与者和 AcrPush 角色(用于创建资源组),或对现有资源组拥有参与者角色。
创建输入文件
创建用于发布网络功能定义的输入文件。 执行以下命令,以生成网络功能定义 (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 模板。 |
如果在交互式选择过程中出错,可以使用两个选项更正这些错误:
- 使用正确的选择重新运行命令。
- 手动调整
generatedValuesMappings
文件夹中生成的值映射。 然后编辑input.json
中的path_to_mappings_file
以引用修改的文件路径。
发布网络功能定义并上传项目
执行以下命令以发布网络功能定义 (NFD) 并上传关联的项目:
az aosm nfd publish -f input-cnf-nfd.json --definition-type cnf
命令完成后,检查发布服务器资源组中的资源,以查看创建的组件和项目。