使用kopf.adopt()进行级联删除

问题描述 投票:0回答:1

最近开始使用kopf。这很棒!!一般来说也是一种新的 k8s...

我有一个非常简单的场景。两个crd,父项和子项...首先创建父项。子对象是稍后创建的,但不是由父对象创建的...有没有办法让子对象使用 kopf.adopt() 方法让父实例“采用/拥有”自己。

它将极大地简化甚至消除我的级联删除代码。

或者有没有办法使用k8s客户端将ownerReference添加到现有的自定义对象元数据?

提前致谢...

kubernetes cascading-deletes
1个回答
0
投票

经过一番黑客攻击后,我想出了一些代码:

merge_patch = {
    "metadata": {
        "ownerReferences": [
            {
                "apiVersion": "siccat.com/v1",
                "blockOwnerDeletion": True,
                "kind": "Parent",
                "name": parent_box.metadata.name,
                "uid": parent_box.metadata.uid
            }
        ]}
}
api.patch_namespaced_custom_object(namespace=namespace, name=name,
                                   group="siccat.com",
                                   version="v1",
                                   plural="children",
                                   body=merge_patch)

本质上是在创建事件处理程序中执行修补程序...

这可以实现级联删除...

想知道是否有更好的方法来完成同样的事情?

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.