Metadata propagation
Cluster API controllers implement consistent metadata (labels & annotations) propagation across the core API resources. This behaviour tries to be consistent with kubernetes apps/v1 Deployment and ReplicaSet. New providers should behave accordingly fitting within the following pattern:
KubeadmControlPlane
Top-level labels and annotations do not propagate at all.
.labels
=> Not propagated..annotations
=> Not propagated.
MachineTemplate labels and annotations propagate to Machines, InfraMachines and BootstrapConfigs.
.spec.machineTemplate.metadata.labels
=>Machine.labels
,InfraMachine.labels
,BootstrapConfig.labels
.spec.machineTemplate.metadata.annotations
=>Machine.annotations
,InfraMachine.annotations
,BootstrapConfig.annotations
MachineDeployment
Top-level labels do not propagate at all. Top-level annotations propagate to MachineSets top-level annotations.
.labels
=> Not propagated..annotations
=> MachineSet.annotations
Template labels propagate to MachineSets top-level and MachineSets template metadata. Template annotations propagate to MachineSets template metadata.
.spec.template.metadata.labels
=>MachineSet.labels
,MachineSet.spec.template.metadata.labels
.spec.template.metadata.annotations
=>MachineSet.spec.template.metadata.annotations
MachineSet
Top-level labels and annotations do not propagate at all.
.labels
=> Not propagated..annotations
=> Not propagated.
Template labels and annotations propagate to Machines, InfraMachines and BootstrapConfigs.
.spec.template.metadata.labels
=>Machine.labels
,InfraMachine.labels
,BootstrapConfig.labels
.spec.template.metadata.annotations
=>Machine.annotations
,InfraMachine.annotations
,BootstrapConfig.labels