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 包详细信息。