【问题标题】:Updating Metadata Annotations更新元数据注释
【发布时间】:2020-01-22 11:30:53
【问题描述】:

我正在使用 kubebuilder 创建一个 Kubernetes 算子。当启动我的对象时,我必须解析规范并根据一些计算更新对象。

据我所知,我可以更新对象、元数据或托管字段的状态(我可能错了?)。看来sigs.k8s.io/controller-runtime/pkg/client 库负责如何更新这些字段(我不完全确定)。我无法理解docs

我有以下问题:

  • 是否有关于在状态、元数据(标签或注释)和托管字段之间存储对象配置的最佳实践指南?
  • 如何更新/修补对象的注释,类似于使用r.Status().Update(ctx, &thing); 更新状态?

【问题讨论】:

    标签: kubernetes kubernetes-custom-resources kubebuilder


    【解决方案1】:

    Kubebuilder docs 有点原始,但在使用 Kubebuilder 构建 CRD 和控制器时仍然是一个方便的指南。它会引导您完成一个相当详细的示例,非常适合学习和参考,以了解如何做某些事情。

    您的问题的答案通常是“视情况而定”。你在计算什么值,为什么?为什么需要将它们存储在对象上?该数据的生命周期是否与该对象的生命周期耦合,或者即使该对象被删除,该计算数据是否需要继续存在并被其他控制器使用?一般来说,有什么东西会与这些价值观相互作用吗?和他们有什么关系?

    如果除了 CRD 的协调控制器之外没有其他东西会与您放入的数据进行交互,请考虑将其放入对象的状态中。

    执行r.Status().Update(ctx, &thing) 将避免触发任何副作用,因为它只会保留您对对象的状态子资源所做的更改,而不是其规范或元数据。

    与自定义资源有关的常见事情是设置和删除终结器,它们存在于对象的元数据中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2010-12-29
      • 1970-01-01
      • 2016-02-02
      • 2011-03-09
      • 1970-01-01
      • 2018-02-05
      相关资源
      最近更新 更多