Zed 系列发布说明

8.0.0

序言

8.0.0 版本包含许多新功能和错误修复。请务必阅读升级部分,其中描述了从 7.0.0 (Yoga) 升级到 8.0.0 (Zed) 所需的操作。Zed 引入了一些重大更新。

  • 用于 CNF 修复、扩展和回滚操作的 ETSI NFV V2 API。

  • 由 FaultNotification 触发的 VNF 自动修复。

  • 使用 HOT 管理单个 VNFc。

  • Kubernetes VIM 身份验证的 OpenID。

  • 基于 ETSI NFV 的自动化测试的 Robot 框架。

  • Tacker 和 Kubernetes 之间的数据库同步,以便维护者可以从 Tacker 获取 Pod 的状态。

新特性

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

  • 支持使用 FaultNotification 接口在 Tacker 和 VIM 之间进行自动修复。提供示例 Mgmt 驱动程序脚本以注册/注销 FaultNotification 接口。同时,也制作了一个用户指南来帮助用户理解该功能。

  • 添加基于 ETSI NFV 规范的更改当前 VNF 包 API。Tacker 使用此 API 支持 VNF 升级。目前,它仅支持 VNF 升级的几种方法中的“RollingUpdate”。

  • 支持基于 ETSI NFV 规范的容器化 VNF 操作,以及以下新版本的 RESTful API。Kubernetes vim 支持 Instantiate VNF、Terminate VNF 和 Change Current VNF Package 的“2.0.0” API。除了 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。

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

  • 此补丁添加了定期同步 K8s VIM 和 Tacker DB 中资源的能力。K8s 没有接口来通知 Tacker 何时正在运行 Pod 的自动扩展或自动修复以及 Pod 信息已更新。这可能导致 Tacker 数据库中的 Pod 信息与实际 K8s 上运行的 Pod 信息之间存在不一致。此功能定期检查 Tacker 数据库中的 Pod 信息和 K8s 中的 Pod 信息,如果存在任何不一致,则根据 K8s 端更新 Tacker 数据库中的信息。

  • 将 VNF 版本升级功能添加到 tacker-db-manage 命令,使用户能够在不重新实例化的情况下将 VNF 从 v1 升级到 v2。

  • 在当前实现中,当用户调用 ConfigMaps 和 Secrets 的更新操作时,即使它们不使用这些更新的 ConfigMaps 和 Secrets,所有 Pod 都会重新启动。

    通过过滤使用 Configmaps/Secrets 的资源并重新启动这些资源来删除此限制。

  • 当执行“openstack vim register”或“openstack vim set”命令时,如果 config-file 中指定了 extra 参数,则数据将存储在 VIM DB 的 extra 字段中。开发以接受输入参数文件中的 vimConnectionInfo.extra 字段(如果存在),以便通过 helm 部署 CNF。

  • 支持更改外部 CP 的 Change Current VNF Package API。我们为 Openstack 和 UserData 类添加了新功能,以及 ChangeCurrentVnfPkgRequest 中的 extVirtualLinks 参数。

  • 支持使用外部监控工具进行基于容器的 VNF 自动修复和自动扩展操作。添加了故障管理接口和 CLI 以支持自动修复。自动修复支持两种模式:轮询模式和通知模式。添加了性能管理接口和 CLI 以支持自动扩展。故障管理和性能管理接口基于 ETSI NFV-SOL 002 v3.3.1 和 ETSI NFV-SOL 003 v3.3.1,它们是 Tacker 的“2.0.0” API。添加了 Prometheus 插件,该插件具有 tacker 和外部监控工具之间的接口。Prometheus 插件支持从 Prometheus 格式数据到基于 SOL 的 FM/PM 模式以及反之的数据模型转换。同时,也制作了一个用户指南来帮助用户理解该功能。

  • 支持 v2 LCM API 中的 CNF 修复/扩展/回滚操作。此功能基于 ETSI NFV 规范在 v2 LCM API 中提供以下 CNF 操作,并使用 instantiationLevel 参数确定 Pod 的初始数量。 * 扩展 VNF 任务 * 修复 VNF 任务 * 回滚操作任务(实例化和扩展)

  • 支持使用 Helm 图表进行 v2 LCM API 的 LCM 操作。此功能支持使用 Helm 图表的 v2 LCM 操作,instantiationLevel 参数确定 Pod 的初始数量,以及 vimConnectionInfo.extra 字段。

  • 支持使用 OpenStack Heat 进行单个 VNFC 管理。为 v2 VNF 生命周期管理 API 添加了新的示例 BaseHOT、相应的 UserData 脚本和实用程序函数。

  • Ansible 驱动程序只能运行特定的脚本文件。由于 mgmt 驱动程序的多 artifact 支持,它将扩展为指定在每个生命周期中要执行的脚本文件。这将通过实现 TOSCA 定义的主要和依赖项键来实现,主要可以定义主要脚本,依赖项可以定义将由主要脚本引用的辅助脚本。

  • 添加了 Kubernetes VIM 的“openid token”身份验证策略。用户可以在 VIM 注册请求VNF 实例化请求 中指定 openid 身份验证参数,以指示 tacker 使用 openid token 进行身份验证。

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

已知问题

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

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

升级说明

  • 在 CNF 实例化(V1 API)期间,通过指定 additionalParams 中的 vdu_mapping 参数,可以从单个 VNF 包创建多个 VNF。

    请参阅我们的 文档,了解有关指定 vdu_mapping 参数的详细信息。

  • 通过重构一些代码并更正日志的输出级别来提高 Tacker 的性能。

    同时,删除了 V2 调用 HEAT 的 API 时的重定向,而是直接调用,并改进了 V1 代码中发送通知时的订阅过滤器。

错误修复

  • 修复了 bug 1959885。如果在获取 artifact 时指定了范围结束大于或等于文件大小,则会出现错误 416。

  • 修复了 bug 1960194。扩展的 VDU 的 storageResourceIds 将正确填充。storageResourceIds 将与 virtualStorageResourceInfo id 相同。

  • 修复了 bug 1967049。OpenStack 文档中 change_ext_conn 的名称不正确。正确的值是 change-ext-conn。将名称从 change_ext_conn 更正为 change-ext-conn 在文档中。

  • 修复了 bug 1967053。在实例化 vnf 的文档中缺少 param 文件中的 ipAddresses 字段。此错误修复了实例化 VNF OpenStack 文档中的 ipAddresses 字段。

  • 修复了 bug 1973372。如果 VNFD 不包含虚拟存储,则在通知中应不存在 affectedVirtualStorages。

  • 修复了 bug 1976440,在使用 Mgmt Driver 进行 LCM 操作时发生错误。

  • 修复了 bug 1978071,当 manifest 文件包含特殊字段(例如“exec”、“not”、“except”、“continue”、“from”)时,k8s 资源初始化失败的问题。

  • 修复了 bug 1978563。additionalParams 部分的实例化 json 中将允许数字格式值。

  • 修复了 bug 1979413,如果 VimConnectionInfo.interfaceInfo 中存在“ssl_ca_cert”,则创建临时 ssl 证书文件并将其设置为 k8s 客户端配置。

  • 修复了 bug 1981183。在实例化过程中发生错误时,将生成错误日志。

  • 修复了 bug 1983096。如果在实例化、修复、终止、更改外部连接操作的异常块中发生异常,则未发送通知。修复此错误后,通知将成功发送。

  • 修复了 bug 1983575。在多租户环境中,tacker 不允许删除操作和显示属于不同租户的订阅详细信息。

其他说明

  • 添加了多租户环境的负面功能测试用例,以验证 Tacker 不允许删除操作和共享不同租户的订阅和 VNF 包详细信息。