Murano/通用元数据仓库
目录
通用元数据仓库(提案)
简介
Murano应用目录与云应用和服务协同工作。这些应用和服务可能具有不同的内部结构和一些复杂的部署和维护逻辑,Murano需要拥有这些逻辑和结构的完整定义。此外,应用本身通常需要一些外部依赖或二进制文件,这些依赖和文件必须与应用捆绑在一起才能正确安装和运行。在Murano目录中,这些定义和依赖项被分组到集合中,然后归档到单个二进制文件(tar-gzip格式,但具有不同的扩展名),称为Murano仓库包。随着目录的增长,存储和操作这些包变得一项复杂的任务,这与Murano的其余功能基本无关。
因此,有人建议创建一个新的服务——通用元数据仓库——该服务将提供必要的功能来操作这些包,存储、索引和正确编目它们——所有这些都不需要了解它们的内部结构或与Murano目录相关的任何其他细节。
任务通用化
如上所述,元数据仓库不了解Murano仓库包的内部结构。因此,从它的角度来看,这些包只是简单的二进制对象,需要与一些关联的元数据值一起存储,通过这些值进行索引,然后列出和检索,可以选择通过元数据值进行过滤。另一个显而易见的要求是不可变性:一旦对象上传到仓库,就会为其分配一个唯一的标识符,并且不能再修改该对象:如果需要修改对象,则必须将新版本上传到仓库,并将新的ID分配给此更新版本。与此同时,与对象关联的元数据值(或至少其中一些)可以在不更改ID的情况下进行更改。
这种描述非常通用,显然可以应用于其他需要存储具有关联元数据的对象用例。因此,Murano应用目录并不是唯一会使用元数据仓库的服务:Openstack生态系统有很多项目可以从中受益。
不需要将此提案作为独立项目实施,也不应将其作为Murano应用目录的一部分。事实证明(至少在邮件列表主题中达成共识),最适合此功能的项目是Glance程序,因为描述的用例最符合Glance的用例。实际实施可能有所不同:此功能可以在某个时候直接添加到Glance中,或者成为Glance程序下的一个独立项目。本文档的目的不是建议任何实施方式,而是收集各种需求和用例,并拥有一个完整的(或多或少)功能集,可以用作提交蓝图的基础。
Murano需求
本节定义了Murano对通用元数据仓库的通用需求。
通用元数据
特定元数据
上传包
元数据字段
下载包
列出包
获取继承层次结构
其他用例
Glance
已经存在并且被广泛采用的最常见和最知名的实现这种方法的服务是 Openstack镜像服务(“Glance”)。它操作虚拟机镜像及其元数据,提供注册、上传、查询、发现和检索镜像的服务。与上述描述类似,Glance实际上不会处理镜像的内容——它只是将它们存储和操作为简单的二进制文件,而不会查看内部内容。不可变性规则也是Glance的关键要求之一:一旦镜像上传,就会为其分配一个永久ID,并且无法修改。
HeatR
另一个需要相同元数据仓库功能的OpenStack倡议是 Heat模板仓库提案:Heat项目需要一个用于存储、管理和版本控制“已知良好”模板的服务——并且该服务的大多数需求都与上述通用仓库非常吻合。
HOT
Heat项目的另一个倡议—— HOT软件编排也可能需要存储软件配置。HOT规范假定脚本和配方可以通过HOT软件编排资源中指定的URL访问。元数据仓库可以用作HOT软件组件资产的中央存储。HOT的优势如下
- 元数据仓库是OpenStack的一部分,将始终可用于使用
- 元数据仓库将在OpenStack horizon中具有UI部分,因此用户将拥有管理软件组件资产的方式
其他
可能还有其他项目需要类似存储功能。可以扩展此列表以收集来自OpenStack社区的其他程序、项目和倡议的需求和用例。