我正在尝试使用该client-go
库开发一个简单的控制器。
每次在我的集群上更新秘密和/或 ConfigMap 时,我都需要使用这些秘密 / ConfigMap 对对象执行特定操作。
我知道如何使用informers来观察特定对象的变化。
我的问题是,通过访问 Secret / ConfigMap 来自动列出使用它们的对象(部署、作业等)是否可行。
我正在尝试使用该client-go
库开发一个简单的控制器。
每次在我的集群上更新秘密和/或 ConfigMap 时,我都需要使用这些秘密 / ConfigMap 对对象执行特定操作。
我知道如何使用informers来观察特定对象的变化。
我的问题是,通过访问 Secret / ConfigMap 来自动列出使用它们的对象(部署、作业等)是否可行。
我认为没有办法以您描述的方式自动列出对象的所有依赖对象。
但是,您可以有一个控制器来监视您感兴趣的对象(例如部署、作业等),并metadata.ownerReferences
使用打算使用它们的对象更新您的机密和配置映射。
虽然这通常是为了 GC 目的而完成的,但是当您kubectl describe
对您的密钥或 configmap 执行操作时,这些对象将被“列出”。
metadata.ownerReferences
此对象所依赖的对象列表。如果列表中的所有对象都已被删除,则该对象将被垃圾回收。如果此对象由控制器管理,则此列表中的条目将指向此控制器,控制器字段设置为 true。管理控制器不能超过一个。
OwnerReference 包含足够的信息来让您识别拥有对象。拥有对象必须与依赖对象位于相同的命名空间中,或者是集群范围的,因此没有命名空间字段。
资源