首页 > 解决方案 > 通过 client-go 库使用特定的 secret / configmap 检索对象

问题描述

我正在尝试使用该client-go库开发一个简单的控制器。

每次在我的集群上更新秘密和/或 ConfigMap 时,我都需要使用这些秘密 / ConfigMap 对对象执行特定操作。

我知道如何使用informers来观察特定对象的变化。

我的问题是,通过访问 Secret / ConfigMap 来自动列出使用它们的对象(部署、作业等)是否可行。

标签: kubernetesclient-go

解决方案


我认为没有办法以您描述的方式自动列出对象的所有依赖对象。

但是,您可以有一个控制器来监视您感兴趣的对象(例如部署、作业等),并metadata.ownerReferences使用打算使用它们的对象更新您的机密和配置映射。

虽然这通常是为了 GC 目的而完成的,但是当您kubectl describe对您的密钥或 configmap 执行操作时,这些对象将被“列出”。

metadata.ownerReferences

此对象所依赖的对象列表。如果列表中的所有对象都已被删除,则该对象将被垃圾回收。如果此对象由控制器管理,则此列表中的条目将指向此控制器,控制器字段设置为 true。管理控制器不能超过一个。

OwnerReference 包含足够的信息来让您识别拥有对象。拥有对象必须与依赖对象位于相同的命名空间中,或者是集群范围的,因此没有命名空间字段。

资源


推荐阅读