diff --git a/lib/resourcemerge/core.go b/lib/resourcemerge/core.go index 99f5a3216..77c7be398 100644 --- a/lib/resourcemerge/core.go +++ b/lib/resourcemerge/core.go @@ -15,6 +15,7 @@ import ( func EnsureConfigMap(modified *bool, existing *corev1.ConfigMap, required corev1.ConfigMap) { EnsureObjectMeta(modified, &existing.ObjectMeta, required.ObjectMeta) + mergeByteSliceMap(modified, &existing.BinaryData, required.BinaryData) mergeMap(modified, &existing.Data, required.Data) } diff --git a/lib/resourcemerge/meta.go b/lib/resourcemerge/meta.go index 5b1771b91..e23f5ab47 100644 --- a/lib/resourcemerge/meta.go +++ b/lib/resourcemerge/meta.go @@ -40,6 +40,21 @@ func mergeMap(modified *bool, existing *map[string]string, required map[string]s } } +func mergeByteSliceMap(modified *bool, existing *map[string][]byte, required map[string][]byte) { + if *existing == nil { + if required == nil { + return + } + *existing = map[string][]byte{} + } + for k, v := range required { + if existingV, ok := (*existing)[k]; !ok || string(v) != string(existingV) { + *modified = true + (*existing)[k] = v + } + } +} + func mergeOwnerRefs(modified *bool, existing *[]metav1.OwnerReference, required []metav1.OwnerReference) { for ridx := range required { found := false