🔔 重要提示:自 v0.10.0 起可用于金丝雀发布。
🔔 重要提示:自 v1.0 起可用于蓝绿发布。
一个用例是,在 Rollout 标记或注释所需/稳定的 Pod 时,用用户定义的标签/注释,仅在它们是所需或稳定的集合期间,并且在 ReplicaSet 切换角色(例如从所需到稳定)时更新/删除标签。此举使 prometheus、wavefront、datadog 等查询和仪表板可以依赖一致的标签,而不是不可预测且从版本到版本不断变化的 rollouts-pod-template-hash
。
使用金丝雀策略的 Rollout 有能力使用 stableMetadata
和 canaryMetadata
字段将短暂元数据附加到稳定或金丝雀 Pod 上。
spec:
strategy:
canary:
stableMetadata:
labels:
role: stable
canaryMetadata:
labels:
role: canary
使用蓝绿策略的 Rollout 有能力使用 activeMetadata
和 previewMetadata
字段将短暂元数据附加到活动或预览 Pod 上。
spec:
strategy:
blueGreen:
activeMetadata:
labels:
role: active
previewMetadata:
labels:
role: preview
在更新期间,Rollout 将创建所需的 ReplicaSet,并将 canaryMetadata
/previewMetadata
中定义的元数据合并到所需的 ReplicaSet 的 spec.template.metadata
中。这将导致 ReplicaSet 的所有 Pod 都使用所需的元数据创建。当 Rollout 完全升级时,所需的 ReplicaSet 变为稳定,更新为使用 stableMetadata
/activeMetadata
下的标签和注释。ReplicaSet 的 Pod 然后将原地更新以使用稳定的元数据(而无需重新创建 Pod)。
🔔 重要提示:为了让工具能够利用这个功能,他们需要识别标签和/或注释在 Pod 启动后发生的变化。并非所有工具都能检测到这一点。