我想要识别Canary状态的Pod – 临时元数据(Ephemeral Metadata)
背景 – (Background)
我们使用 ArgoRollouts 进行金丝雀发布的功能验证。
在其中,我们考虑使用 Prometheus 的查询来获取金丝雀状态的 Pod(容器)数据(例如:CPU 使用量)的场景。
通过获取的数据值来判断成功或失败,并旨在将金丝雀升级到稳定版本或回滚到前一个版本。
犯难的事情 de
在这里我犯了难,是要找到识别Canary状态的Pod的方法。
如果使用Pod名称或容器名称进行查询,会获取到canary和stable两种数据。我们该如何才能仅识别出canary的Pod呢?这让我很困惑。
解决方案 ‘àn)
在这样的情况下,我找到了一个名为Ephemeral Metadata(临时元数据)的功能。您可以在Rollout资源的清单中指定stableMetadata和canaryMetadata,并设置标签和注释。
只有在金丝雀状态下,才会应用指定的canaryMetadata元数据,一旦变为稳定状态,它们将自动删除。
然后,将设置指定的stableMetadata元数据。
通过使用这个,我们现在可以使用预先定义的标签来获取只有canary状态的Pod的数据。
请参考
短暂元数据
https://argo-rollouts.readthedocs.io/zh_CN/release-1.5/features/ephemeral-metadata/