[halo-dev/halo]新增自定义模型资源物理删除功能

2023-12-18 898 views
4

目前 2.0 ExtensionClient delete 方法只是将资源标记 deletionTimestamp 需要提供一个真实删除自定义模型资源的功能

回答

6
垃圾回收器设计

目前 Extension 的删除仅仅是设置 metadata.deletionTimestamp 而已,并不会物理删除 Extension。之所以这样设计,主要是为了提供一个删除“后处理”逻辑。

实现垃圾回收器的前提是 finalizer 机制,有些资源需要等待系统额外处理完一些事情后,才能物理删除对应的数据,例如:删除某资源前,清理一些本地文件。

Finalizer 机制

我们将在 metadata 中添加一个新的成员:finalizers,例如:

apiVersion: v1alpha1
kind: Fake
metadata:
  name: fake
  creationTimestamp: 2021-01-01T00:00:00Z
  deletionTimestamp: 2022-01-01T00:00:00Z
  finalizers:
    - theme.halo.run/theme-protection
    - halo

垃圾回收器处理序列图如下:

image

Finalization 状态图如下:

image