Kubernetes Operators的Operator-SDK有一个ctrl.SetControllerReference()函数,该函数声称它可以在删除管理自定义资源时自动垃圾收集对象。
有时它似乎不会删除任何东西。我做错什么了?
发布于 2021-04-24 06:15:46
ctrl.SetControllerReference()仅更改本地对象上的metadata.ownerReferences。
它不会自动为您调用reconciler.Update()。因此,这些更改从未持久化,Owner也从未更改。
创建对象的正确方法是在调用reconciler.Create()之前调用ctrl.SetControllerReference(),例如
if err := ctrl.SetControllerReference(mycrd, secret, r.Scheme); err != nil {
log.Error(err, "Failed to set controller reference")
return err
}
log.Info("Creating a new Secret", "Secret.Namespace", secret.Namespace, "Secret.Name", secret.Name)
if err = r.Create(ctx, secret); err != nil {
log.Error(err, "Failed to create new Secret", "Secret.Namespace", secret.Namespace, "Secret.Name", secret.Name)
return err
}https://stackoverflow.com/questions/67237417
复制相似问题