Yoga 系列发布说明

7.0.0

新特性

  • 支持 RESTfulAPI 的多版本。客户端可以使用 ETSI NFV 定义的 VNF LCM API “1.3.0” 和 “2.0.0”。

  • 新增基于 ETSI NFV 规范的 List VNF LCM API 版本和 Show VNF LCM API 版本 RESTful API。它们使客户端能够检索支持的 VNF LCM API 版本。

  • 新增基于 ETSI NFV 规范的以下新的 RESTful API 版本。新增了创建 VNF、删除 VNF、实例化 VNF、终止 VNF、列出 VNF、显示 VNF、列出 VNF LCM 操作发生、显示 VNF LCM 操作发生、创建订阅、列出订阅和显示订阅的版本 “2.0.0” API。

  • VNF LCM API “2.0.0” 提供了一种新的 userdata 脚本类型和实用函数来描述它。它们使用户能够自由操作 HEAT 以满足 VNF 的独特需求。

  • 添加了一个示例 Ansible Driver,作为用户希望使用 ansible 配置 VNFs 的选项。此 Ansible Driver 支持关键 LCM,例如 instantiate_end、scale_start、scale_end、heal_end 和 terminate_start。提供了一个包含 Ansible Driver 示例用法的示例 VNF 包。还提供了用户手册,解释使用 Ansible Driver 的环境准备步骤。

  • 新增基于 ETSI NFV 规范的 Change Current VNF Package API。Tacker 支持使用此 API 进行 VNF 升级。目前,它仅支持 VNF 升级的几种方法中的“RollingUpdate”。

  • 新增基于 ETSI NFV 规范的 Change external VNF connectivity API 的版本 “2.0.0”。

  • 支持基于 ETSI NFV 规范的以下新的 RESTful API 的基于容器的 VNF 操作。新增了 Kubernetes vim 的版本 “2.0.0” API 的实例化 VNF、终止 VNF 和更改当前 VNF 包。除了 Scale VNF 和 Heal VNF 之外的其他 API,例如 Create VNF、Delete VNF、List VNF、Show VNF 等,由于它们使用不依赖于 vim 类型(OpenStack、Kubernetes)的通用处理,因此已经支持 Kubernetes vim。未来将支持带有 Kubernetes vim 的 Scale VNF 和 Heal VNF 的版本 “2.0.0” API。

  • 新增基于 ETSI NFV 规范的 Fail operation API 的版本 “2.0.0”。

  • 新增基于 ETSI NFV 规范的 Heal VNF API 的版本 “2.0.0”。

  • 新增基于 ETSI NFV 规范的 Modify VNF Information API 的版本 “2.0.0”。

  • 新增基于 ETSI NFV 规范的 Retry operation API 的版本 “2.0.0”。

  • 新增基于 ETSI NFV 规范的 Rollback operation API 的版本 “2.0.0”。

  • 新增基于 ETSI NFV 规范的 Scale VNF API 的版本 “2.0.0”。

  • 通过使用 Robot Framework 和 ETSI NFV-TST API 测试代码支持符合 ETSI NFV 标准的自动化测试。此功能使用 Robot Framework,它利用 ETSI NFV-TST API 测试代码以黑盒测试级别测试 tacker 的 ETSI NFV 合规性。这是额外的质量测试措施,以确保添加的 tacker 功能符合 ETSI NFV 标准。

  • 此功能旨在在 scale 和 heal 操作期间通过 lcm_user_data 脚本自定义堆栈参数。用户可以通过 lcm_user_data 脚本提供堆栈参数。

  • 提供在 Kubernetes 集群环境中启用 Docker 私有注册表镜像使用的功能。我们提供 MgmtDriver 的示例,可以在部署 Kubernetes 集群 VNF 之前为 Kubernetes 集群部署 Docker 私有注册表 VNF,并部署可以支持上述创建的 Docker 私有注册表以及在 Tacker 外部创建的任何其他注册表的 Kubernetes 集群 VNF。

    使用 MgmtDriver 的 Kubernetes 集群实例化操作:MgmtDriver 配置与新创建的所有 Master/Worker VM 上的 Docker 私有注册表的连接。

    使用 MgmtDriver 的 Kubernetes 集群 Worker-nodes 扩展操作:MgmtDriver 配置与新创建的 Worker VM 上的 Docker 私有注册表的连接。

    使用 MgmtDriver 的整个 Kubernetes 集群 Heal 操作:MgmtDriver 配置与创建的所有 Master/Worker VM 上的 Docker 私有注册表的连接。

    使用 MgmtDriver 的 Kubernetes 集群中单个节点 Heal 操作:MgmtDriver 配置与创建的 Master/Worker VM 上的 Docker 私有注册表的连接。

  • 添加了用于处理 Helm chart 的 Kubernetes VIM 新接口。它允许用户将 Helm chart 文件作为 MCIOP 包含在他们的 VNF 包中,以便使用它们来实例化和终止 CNF。并更新 MgmtDriver 示例以安装和配置 Helm 包,以便在部署的 Kubernetes 集群 VNF 中使用 Helm cli 命令,并在 master 节点恢复后恢复已注册的 helm 仓库和 chart。

  • MgmtDriver 功能配置 VNF 供应商提供的应用程序。VNF 供应商可以通过 MgmtDriver 自定义应用程序的配置方法。这些自定义由 ETSI NFV-SOL001 v2.6.1 中的“interface”定义指定。我们提供 MgmtDriver 示例和脚本,这些脚本可以部署 Kubernetes 集群。它可以使用 kubespray 作为 Ansible playbook 来安装 Kubernetes 集群 VNF,并安装和配置 HAproxy 负载均衡器以用于 Kubernetes 集群。我们还提供用户指南,帮助用户了解如何使用此功能。

    实例化 kubernetes 集群:可以使用 ETSI NFV-SOL 003 v2.6.1 中的 VNF 生命周期管理接口来实例化 Kubernetes 集群。

    扩展 kubernetes worker node:使用 MgmtDriver 支持对包括 Kubernetes 集群的 VNF 的 Worker-nodes 进行扩展操作。

    Heal kubernetes worker node:使用 MgmtDriver 支持对包括 Kubernetes 集群的 VNF 的 Worker-nodes 进行 Heal 操作。

  • 用户在 InstantiateVnfRequest 中指定目标命名空间,以在 Kubernetes VIM 上部署 CNF。additionalParams 字段为目标命名空间提供了新的参数 namespace。VNF 中的 Kubernetes 资源必须位于同一命名空间中。

  • 支持 VNF 生命周期管理中的多租户策略。此功能根据 ETSI NFV-SOL 的 VNF 管理分离资源,例如虚拟化基础设施管理器 (VIM)、虚拟化网络功能包 (VNF 包) 和虚拟化网络功能生命周期管理接口 (VNF LCM) 与租户相关。仅允许由相同租户的 VIM 实例化 VNF。此功能未解决允许非管理员用户实例化 VNFs 的已知问题,未来版本可能会解决该问题。

  • 支持根据 ETSI NFV SOL013 处理大型查询结果。此功能为目标 API 的查询请求提供分页响应。除此之外,还可以一次性获取所有记录。

  • 支持部署具有 Cinder 卷的存储服务器的 Kubernetes 集群 VNF。此功能使用户能够部署在其上具有 PersistentVolume 的 CNF。为 MgmtDriver 添加了以下更改。

    • 使用 Cinder 卷创建一个存储服务器 VM。

    • 在存储服务器中将 Cinder 卷作为 NFS 共享目录公开。

    • 将 NFS 共享目录注册为 Kubernetes PersistentVolumes。

    • 在所有 LCM 操作中,在新创建的 Master/Worker VM 上安装 NFS 客户端。

  • 通过在 MgmtDriver 中添加 modify_startmodify_end 来支持对 VNF 实例进行配置更改,以用于 Modify VNF 操作。我们提供 MgmtDriver 的示例,该示例更改 Kubernetes 中的 ConfigMap 和 Secret 的配置,并更改 Pod 和 Deployment 清单中的镜像参数。

已知问题

  • 关于示例 Ansible Driver,由于 Management Driver 的限制,目前部署 flavor 仅共享一个 config.yaml。

  • 关于符合 ETSI NFV 标准的自动化测试,由于错误(1)Tacker Bug 和(2)ETSI NFV-TST API 测试代码中的问题,一些测试失败了。(1) 在此合规性测试中检测到 Tacker Bug,例如 Bug-#1945387,并且相应的测试目前失败。修复错误后测试将通过。(2) ETSI NFV-TST API 测试代码中的问题,例如 schema 和 mock 服务器位置问题,也导致一些测试失败。解决这些问题后测试将通过。由于这些现有的失败项目,此测试目前不具有投票权。

  • 非管理员用户无法实例化 VNFs。

  • 关于根据 ETSI NFV SOL013 处理大型查询结果,“vnfpkgm/v1/vnf_packages” API 尚未具有分页功能,因为与其他 API 相比,实现时间较长。由于实际用例中分页的可能性较小,因此将在下一个版本中完成实现。

升级说明

  • 更改使用 Helm chart 实例化的 CNF 的 scale 操作,以通过指定在实例化时提前为每个 aspect_id 指定副本计数参数来使用 Helm cli 执行。此更改使得从 Tacker 进行 scale 操作后,直接在 Kubernetes VIM 中升级 Helm 值(例如 nodeSelector 或 tolerations)不会更改副本数。