VM 元数据中的审计标签

https://blueprints.launchpad.net/watcher/+spec/audit-tag-vm-metadata

问题描述

Watcher 通过实时迁移 VM 来优化工作负载。这可能会造成中断。应该提供一个功能,允许租户选择加入/退出对其部分或全部 VM 的优化。我们提出的解决方案是在 VM 元数据中设置一个“optimize”字段,并且 watcher 策略应该只考虑已启用“optimize”元数据的 VM。策略检查 VM 元数据的功能应该是可选且可配置的。

用例

作为租户,我应该能够选择加入/退出我的 VM 的优化

作为策略开发者,我应该能够过滤出已被批准进行优化的 VM

提议的变更

VM 将拥有一个“optimize”元数据键。计算集群数据模型也应该存储 VM 元数据信息。我们需要一个配置选项“check_optimize_metadata”来启用此功能。

如果启用了“check_optimize_metadata”配置选项,策略基类将只包含具有 optimize 元数据的 VM。这将使用审计范围来根据元数据排除 VM。

示例 -

"scope": [
     {"host_aggregates": [
       {"id": 1},
       {"id": 2},
       {"id": 3}
     ]},
     {"availability_zones": [
       {"name": "AZ1"},
       {"name": "AZ2"}
     ]},
     {"exclude": [
       {"instances": [
         {"uuid": "9766dff1-3c81-4de2-92ae-19e0d9adcec6"},
         {"uuid": "777541bb-ce4f-4bf3-8320-d5792d5cdf6e"}
       ]},
       {"instance_metadata": [
         {"optimize": "False"}
       ]},
       {"compute_nodes": [
         {"name": "compute1"}
       ]}
     ]}
   ]

默认情况下,“check_optimize_metadata”将被禁用,“optimize”元数据将不会对策略产生任何影响 - 意味着策略将考虑所有 VM。

备选方案

数据模型影响

将对集群数据模型进行更改,以包含 VM 元数据。

REST API 影响

安全影响

没有安全影响。

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

hvprash

其他贡献者

v-francoise pradeep-singh-u

工作项

  • 平台所有者或 Watcher 外部的自动化将设置 VM 元数据

# nova meta vm_name set optimize=True
def filter_instances_by_audit_tag(self, instances):
    if not self.config.check_optimize_metadata:
        return instances
    instances_to_migrate = []
    for instance in instances:
        optimize = True
        if instance.metadata:
            try:
                optimize = strutils.bool_from_string(
                    instance.metadata.get('optimize'))
            except ValueError:
                optimize = False
        if optimize:
            instances_to_migrate.append(instance)
    return instances_to_migrate

依赖项

N/A

测试

  • Watcher 审计策略 的单元测试

  • 审计范围的单元测试。 另外,Tempest 场景用于创建一个审计模板,并定义一个带有“instance_metadata”的审计范围

文档影响

更新文档和配置选项的引用。

参考资料

N/A

历史

N/A