Skip to content

Commit

Permalink
add version labels to deployments managed by controllers (#13176)
Browse files Browse the repository at this point in the history
* add version labels to deployments managed by controllers

Signed-off-by: Simon Bein <simontheleg@gmail.com>

* review comments

Signed-off-by: Simon Bein <simontheleg@gmail.com>

---------

Signed-off-by: Simon Bein <simontheleg@gmail.com>
  • Loading branch information
SimonTheLeg committed Mar 13, 2024
1 parent 40165e5 commit db54555
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 0 deletions.
25 changes: 25 additions & 0 deletions pkg/controller/operator/common/util.go
Expand Up @@ -179,6 +179,31 @@ func VolumeRevisionLabelsModifierFactory(ctx context.Context, client ctrlruntime
}
}

// VersionLabelModifierFactory adds the version label for Deployments and their corresponding pods.
func VersionLabelModifierFactory(version string) reconciling.ObjectModifier {
return func(create reconciling.ObjectReconciler) reconciling.ObjectReconciler {
return func(existing ctrlruntimeclient.Object) (ctrlruntimeclient.Object, error) {
obj, err := create(existing)
if err != nil {
return obj, err
}

deployment, ok := obj.(*appsv1.Deployment)
if !ok {
return obj, fmt.Errorf("VersionLabelModifier is only implemented for deployments, not %T", obj)
}

if deployment.ObjectMeta.Labels == nil {
deployment.ObjectMeta.Labels = make(map[string]string)
}
deployment.ObjectMeta.Labels[resources.VersionLabel] = version
deployment.Spec.Template.Labels[resources.VersionLabel] = version

return obj, nil
}
}
}

func createSecretData(s *corev1.Secret, data map[string]string) *corev1.Secret {
if s.Data == nil {
s.Data = make(map[string][]byte)
Expand Down
1 change: 1 addition & 0 deletions pkg/controller/operator/master/reconciler.go
Expand Up @@ -342,6 +342,7 @@ func (r *Reconciler) reconcileDeployments(ctx context.Context, config *kubermati
modifiers := []reconciling.ObjectModifier{
common.OwnershipModifierFactory(config, r.scheme),
common.VolumeRevisionLabelsModifierFactory(ctx, r.Client),
common.VersionLabelModifierFactory(r.versions.Kubermatic),
}
// add the image pull secret wrapper only when an image pull secret is
// provided
Expand Down
1 change: 1 addition & 0 deletions pkg/controller/operator/seed/reconciler.go
Expand Up @@ -569,6 +569,7 @@ func (r *Reconciler) reconcileDeployments(ctx context.Context, cfg *kubermaticv1
modifiers := []reconciling.ObjectModifier{
common.OwnershipModifierFactory(seed, r.scheme),
volumeLabelModifier,
common.VersionLabelModifierFactory(r.versions.Kubermatic),
}
// add the image pull secret wrapper only when an image pull secret is
// provided
Expand Down

0 comments on commit db54555

Please sign in to comment.