diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 23b7bfd41..918b0507e 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -52,8 +52,8 @@ jobs: echo "Saved $(formatByteCount $SAVED)" - name: Checkout code uses: actions/checkout@v5 - - name: Restore binaries from cache - uses: actions/cache/restore@v4 + - name: Prepare binary cache + uses: actions/cache@v4 with: path: ./bin key: binary @@ -103,8 +103,3 @@ jobs: if: success() || failure() with: report_paths: 'report.xml' - - name: Prepare binary cache - uses: actions/cache@v4 - with: - path: ./bin - key: binary diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4473f00ec..a808ad834 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -14,8 +14,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v5 - - name: Restore binaries from cache - uses: actions/cache/restore@v4 + - name: Prepare binary cache + uses: actions/cache@v4 with: path: ./bin key: binary @@ -39,11 +39,6 @@ jobs: gh release upload ${{github.event.release.tag_name}} ./dist/install-no-webhook.yaml#install-no-webhook.yaml --clobber || echo "fix me NOT enough security permissions" gh release upload ${{github.event.release.tag_name}} ./dist/install-with-webhook.yaml#install-with-webhook.yaml --clobber || echo "fix me NOT enough security permissions" gh release upload ${{github.event.release.tag_name}} ./config/crd/overlay/crd.yaml#crd.yaml --clobber || echo "fix me NOT enough security permissions" - - name: Prepare binary cache - uses: actions/cache@v4 - with: - path: ./bin - key: binary - uses: actions/upload-artifact@v5 with: name: olm diff --git a/api/operator/v1/vlagent_types.go b/api/operator/v1/vlagent_types.go index 1c5f35bb2..5e6160440 100644 --- a/api/operator/v1/vlagent_types.go +++ b/api/operator/v1/vlagent_types.go @@ -289,16 +289,13 @@ func (cr *VLAgent) DefaultStatusFields(vs *VLAgentStatus) { vs.Replicas = replicaCount } -// AnnotationsFiltered implements build.builderOpts interface -func (cr *VLAgent) AnnotationsFiltered() map[string]string { - if cr.Spec.ManagedMetadata == nil { - return nil - } - dst := make(map[string]string, len(cr.Spec.ManagedMetadata.Annotations)) - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v +// FinalAnnotations implements build.builderOpts interface +func (cr *VLAgent) FinalAnnotations() map[string]string { + var v map[string]string + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return dst + return v } // SelectorLabels returns selector labels for querying any vlagent related resources @@ -321,14 +318,13 @@ func (cr *VLAgent) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -// AllLabels returns global labels for all vlagent related resources -func (cr *VLAgent) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Spec.ManagedMetadata == nil { - return selectorLabels +// FinalLabels returns global labels for all vlagent related resources +func (cr *VLAgent) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } - return labels.Merge(selectorLabels, cr.Spec.ManagedMetadata.Labels) + return v } // PrefixedName returns name of resource with fixed prefix diff --git a/api/operator/v1/vlcluster_types.go b/api/operator/v1/vlcluster_types.go index 5e4073185..8fb3b8446 100644 --- a/api/operator/v1/vlcluster_types.go +++ b/api/operator/v1/vlcluster_types.go @@ -163,10 +163,11 @@ func (cr *VLCluster) PodAnnotations(kind vmv1beta1.ClusterComponent) map[string] // FinalAnnotations returns global annotations to be applied by objects generate for vlcluster func (cr *VLCluster) FinalAnnotations() map[string]string { - if cr.Spec.ManagedMetadata == nil { - return nil + var v map[string]string + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return cr.Spec.ManagedMetadata.Annotations + return v } // PrefixedName returns prefixed name for the given component kind @@ -181,12 +182,11 @@ func (cr *VLCluster) PrefixedInternalName(kind vmv1beta1.ClusterComponent) strin // FinalLabels adds cluster labels to the base labels and filters by prefix if needed func (cr *VLCluster) FinalLabels(kind vmv1beta1.ClusterComponent) map[string]string { - baseLabels := vmv1beta1.AddClusterLabels(cr.SelectorLabels(kind), "vl") - if cr.Spec.ManagedMetadata == nil { - // fast path - return baseLabels + v := vmv1beta1.AddClusterLabels(cr.SelectorLabels(kind), "vl") + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } - return labels.Merge(cr.Spec.ManagedMetadata.Labels, baseLabels) + return v } // UnmarshalJSON implements json.Unmarshaler interface @@ -737,11 +737,6 @@ func (cr *VLCluster) AvailableStorageNodeIDs(requestsType string) []int32 { return result } -// AnnotationsFiltered implements finalize.crdObject interface -func (cr *VLCluster) AnnotationsFiltered() map[string]string { - return cr.FinalAnnotations() -} - // LastAppliedSpecAsPatch return last applied cluster spec as patch annotation func (cr *VLCluster) LastAppliedSpecAsPatch() (client.Patch, error) { return vmv1beta1.LastAppliedChangesAsPatch(cr.Spec) diff --git a/api/operator/v1/vlsingle_types.go b/api/operator/v1/vlsingle_types.go index 01f79a55d..5471021a2 100644 --- a/api/operator/v1/vlsingle_types.go +++ b/api/operator/v1/vlsingle_types.go @@ -227,15 +227,13 @@ func (cr *VLSingle) ProbeNeedLiveness() bool { return false } -func (cr *VLSingle) AnnotationsFiltered() map[string]string { - if cr.Spec.ManagedMetadata == nil { - return nil - } - dst := make(map[string]string, len(cr.Spec.ManagedMetadata.Annotations)) - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VLSingle) FinalAnnotations() map[string]string { + var v map[string]string + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return dst + return v } // SelectorLabels returns unique labels for object @@ -257,15 +255,13 @@ func (cr *VLSingle) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -// AllLabels returns combination of selector and managed labels -func (cr *VLSingle) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Spec.ManagedMetadata == nil { - return selectorLabels +// FinalLabels returns combination of selector and managed labels +func (cr *VLSingle) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } - - return labels.Merge(selectorLabels, cr.Spec.ManagedMetadata.Labels) + return v } func (cr *VLSingle) PrefixedName() string { diff --git a/api/operator/v1/vmanomaly_types.go b/api/operator/v1/vmanomaly_types.go index 9a3b5be65..b61eeb8fc 100644 --- a/api/operator/v1/vmanomaly_types.go +++ b/api/operator/v1/vmanomaly_types.go @@ -252,16 +252,13 @@ func (cr *VMAnomaly) AsOwner() metav1.OwnerReference { } } -// AnnotationsFiltered returns global annotations to be applied for created objects -func (cr *VMAnomaly) AnnotationsFiltered() map[string]string { - if cr.Spec.ManagedMetadata == nil { - return nil - } - dst := make(map[string]string, len(cr.Spec.ManagedMetadata.Annotations)) - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v +// FinalAnnotations returns global annotations to be applied for created objects +func (cr *VMAnomaly) FinalAnnotations() map[string]string { + var v map[string]string + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return dst + return v } // PodAnnotations returns annotations to be applied to Pod @@ -309,18 +306,13 @@ func (cr *VMAnomaly) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -// AllLabels returns global labels to be applied for created objects -func (cr *VMAnomaly) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Labels == nil && cr.Spec.ManagedMetadata == nil { - return selectorLabels - } - var result map[string]string +// FinalLabels returns global labels to be applied for created objects +func (cr *VMAnomaly) FinalLabels() map[string]string { + v := cr.SelectorLabels() if cr.Spec.ManagedMetadata != nil { - result = labels.Merge(result, cr.Spec.ManagedMetadata.Labels) + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } - return labels.Merge(result, selectorLabels) + return v } // PrefixedName format name of the component with hard-coded prefix diff --git a/api/operator/v1/vtcluster_types.go b/api/operator/v1/vtcluster_types.go index 2e04bacb1..8b9b7c4d5 100644 --- a/api/operator/v1/vtcluster_types.go +++ b/api/operator/v1/vtcluster_types.go @@ -163,10 +163,11 @@ func (cr *VTCluster) PodAnnotations(kind vmv1beta1.ClusterComponent) map[string] // FinalAnnotations returns global annotations to be applied by objects generate for vtcluster func (cr *VTCluster) FinalAnnotations() map[string]string { - if cr.Spec.ManagedMetadata == nil { - return nil + var v map[string]string + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return cr.Spec.ManagedMetadata.Annotations + return v } // PrefixedName returns prefixed name for the given component kind @@ -181,12 +182,11 @@ func (cr *VTCluster) PrefixedInternalName(kind vmv1beta1.ClusterComponent) strin // FinalLabels adds cluster labels to the base labels and filters by prefix if needed func (cr *VTCluster) FinalLabels(kind vmv1beta1.ClusterComponent) map[string]string { - baseLabels := vmv1beta1.AddClusterLabels(cr.SelectorLabels(kind), "vt") - if cr.Spec.ManagedMetadata == nil { - // fast path - return baseLabels + v := vmv1beta1.AddClusterLabels(cr.SelectorLabels(kind), "vt") + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } - return labels.Merge(cr.Spec.ManagedMetadata.Labels, baseLabels) + return v } // UnmarshalJSON implements json.Unmarshaler interface @@ -652,11 +652,6 @@ func (cr *VTCluster) AvailableStorageNodeIDs(requestsType string) []int32 { return result } -// AnnotationsFiltered implements finalize.crdObject interface -func (cr *VTCluster) AnnotationsFiltered() map[string]string { - return cr.FinalAnnotations() -} - // LastAppliedSpecAsPatch return last applied cluster spec as patch annotation func (cr *VTCluster) LastAppliedSpecAsPatch() (client.Patch, error) { return vmv1beta1.LastAppliedChangesAsPatch(cr.Spec) diff --git a/api/operator/v1/vtsingle_types.go b/api/operator/v1/vtsingle_types.go index ceade0bf4..5f49a1b89 100644 --- a/api/operator/v1/vtsingle_types.go +++ b/api/operator/v1/vtsingle_types.go @@ -231,16 +231,13 @@ func (cr *VTSingle) ProbeNeedLiveness() bool { return false } -// AnnotationsFiltered returns global annotations to be applied for created objects -func (cr *VTSingle) AnnotationsFiltered() map[string]string { - if cr.Spec.ManagedMetadata == nil { - return nil - } - dst := make(map[string]string, len(cr.Spec.ManagedMetadata.Annotations)) - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VTSingle) FinalAnnotations() map[string]string { + var v map[string]string + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return dst + return v } // SelectorLabels returns unique labels for object @@ -262,15 +259,13 @@ func (cr *VTSingle) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -// AllLabels returns combination of selector and managed labels -func (cr *VTSingle) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Spec.ManagedMetadata == nil { - return selectorLabels +// FinalLabels returns combination of selector and managed labels +func (cr *VTSingle) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } - - return labels.Merge(selectorLabels, cr.Spec.ManagedMetadata.Labels) + return v } // PrefixedName format name of the component with hard-coded prefix diff --git a/api/operator/v1beta1/vlogs_types.go b/api/operator/v1beta1/vlogs_types.go index 8e23eb847..1c2d8d094 100644 --- a/api/operator/v1beta1/vlogs_types.go +++ b/api/operator/v1beta1/vlogs_types.go @@ -217,20 +217,6 @@ func (cr *VLogs) ProbeNeedLiveness() bool { return false } -func (cr *VLogs) AnnotationsFiltered() map[string]string { - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - dst := filterMapKeysByPrefixes(cr.Annotations, annotationFilterPrefixes) - if cr.Spec.ManagedMetadata != nil { - if dst == nil { - dst = make(map[string]string) - } - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v - } - } - return dst -} - func (cr *VLogs) SelectorLabels() map[string]string { return map[string]string{ "app.kubernetes.io/name": "vlogs", @@ -248,21 +234,22 @@ func (cr *VLogs) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -func (cr *VLogs) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Labels == nil && cr.Spec.ManagedMetadata == nil { - return selectorLabels - } - var result map[string]string - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - if cr.Labels != nil { - result = filterMapKeysByPrefixes(cr.Labels, labelFilterPrefixes) +// FinalLabels returns combination of selector and managed labels +func (cr *VLogs) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } + return v +} + +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VLogs) FinalAnnotations() map[string]string { + var v map[string]string if cr.Spec.ManagedMetadata != nil { - result = labels.Merge(result, cr.Spec.ManagedMetadata.Labels) + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return labels.Merge(result, selectorLabels) + return v } func (cr *VLogs) PrefixedName() string { diff --git a/api/operator/v1beta1/vmagent_types.go b/api/operator/v1beta1/vmagent_types.go index dce376c2e..861a6c838 100644 --- a/api/operator/v1beta1/vmagent_types.go +++ b/api/operator/v1beta1/vmagent_types.go @@ -690,21 +690,6 @@ func (cr *VMAgent) DefaultStatusFields(vs *VMAgentStatus) { vs.Selector = labels.SelectorFromSet(cr.SelectorLabels()).String() } -func (cr *VMAgent) AnnotationsFiltered() map[string]string { - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - dst := filterMapKeysByPrefixes(cr.Annotations, annotationFilterPrefixes) - if cr.Spec.ManagedMetadata != nil { - if dst == nil { - dst = make(map[string]string) - } - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v - } - } - - return dst -} - func (cr *VMAgent) SelectorLabels() map[string]string { return map[string]string{ "app.kubernetes.io/name": "vmagent", @@ -723,21 +708,22 @@ func (cr *VMAgent) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -func (cr *VMAgent) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Labels == nil && cr.Spec.ManagedMetadata == nil { - return selectorLabels - } - var result map[string]string - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - if cr.Labels != nil { - result = filterMapKeysByPrefixes(cr.Labels, labelFilterPrefixes) +// FinalLabels returns combination of selector and managed labels +func (cr *VMAgent) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } + return v +} + +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VMAgent) FinalAnnotations() map[string]string { + var v map[string]string if cr.Spec.ManagedMetadata != nil { - result = labels.Merge(result, cr.Spec.ManagedMetadata.Labels) + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return labels.Merge(result, selectorLabels) + return v } func (cr *VMAgent) PrefixedName() string { diff --git a/api/operator/v1beta1/vmalert_types.go b/api/operator/v1beta1/vmalert_types.go index ceda7f545..2d0687cb0 100644 --- a/api/operator/v1beta1/vmalert_types.go +++ b/api/operator/v1beta1/vmalert_types.go @@ -350,20 +350,6 @@ func (cr *VMAlert) PodAnnotations() map[string]string { return annotations } -func (cr *VMAlert) AnnotationsFiltered() map[string]string { - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - dst := filterMapKeysByPrefixes(cr.Annotations, annotationFilterPrefixes) - if cr.Spec.ManagedMetadata != nil { - if dst == nil { - dst = make(map[string]string) - } - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v - } - } - return dst -} - // Validate checks VMAlert spec func (cr *VMAlert) Validate() error { if MustSkipCRValidation(cr) { @@ -422,21 +408,22 @@ func (cr *VMAlert) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -func (cr *VMAlert) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Labels == nil && cr.Spec.ManagedMetadata == nil { - return selectorLabels - } - var result map[string]string - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - if cr.Labels != nil { - result = filterMapKeysByPrefixes(cr.Labels, labelFilterPrefixes) +// FinalLabels returns combination of selector and managed labels +func (cr *VMAlert) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } + return v +} + +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VMAlert) FinalAnnotations() map[string]string { + var v map[string]string if cr.Spec.ManagedMetadata != nil { - result = labels.Merge(result, cr.Spec.ManagedMetadata.Labels) + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return labels.Merge(result, selectorLabels) + return v } func (cr *VMAlert) PrefixedName() string { diff --git a/api/operator/v1beta1/vmalertmanager_types.go b/api/operator/v1beta1/vmalertmanager_types.go index 8b07181cf..9badcfd41 100644 --- a/api/operator/v1beta1/vmalertmanager_types.go +++ b/api/operator/v1beta1/vmalertmanager_types.go @@ -291,20 +291,6 @@ func (cr *VMAlertmanager) PodAnnotations() map[string]string { return annotations } -func (cr *VMAlertmanager) AnnotationsFiltered() map[string]string { - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - dst := filterMapKeysByPrefixes(cr.Annotations, annotationFilterPrefixes) - if cr.Spec.ManagedMetadata != nil { - if dst == nil { - dst = make(map[string]string) - } - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v - } - } - return dst -} - func (cr *VMAlertmanager) SelectorLabels() map[string]string { return map[string]string{ "app.kubernetes.io/name": "vmalertmanager", @@ -322,21 +308,22 @@ func (cr *VMAlertmanager) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -func (cr *VMAlertmanager) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Labels == nil && cr.Spec.ManagedMetadata == nil { - return selectorLabels - } - var result map[string]string - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - if cr.Labels != nil { - result = filterMapKeysByPrefixes(cr.Labels, labelFilterPrefixes) +// FinalLabels returns combination of selector and managed labels +func (cr *VMAlertmanager) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } + return v +} + +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VMAlertmanager) FinalAnnotations() map[string]string { + var v map[string]string if cr.Spec.ManagedMetadata != nil { - result = labels.Merge(result, cr.Spec.ManagedMetadata.Labels) + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return labels.Merge(result, selectorLabels) + return v } // ConfigSecretName returns configuration secret name for alertmanager diff --git a/api/operator/v1beta1/vmauth_types.go b/api/operator/v1beta1/vmauth_types.go index 870973d54..d0716e6eb 100644 --- a/api/operator/v1beta1/vmauth_types.go +++ b/api/operator/v1beta1/vmauth_types.go @@ -581,15 +581,6 @@ func (*VMAuth) ProbeNeedLiveness() bool { return true } -// FinalLabels adds cluster labels to the base labels and filters by prefix if needed -func (cr *VMAuth) FinalLabels(selectorLabels map[string]string) map[string]string { - if cr.Spec.ManagedMetadata == nil { - // fast path - return selectorLabels - } - return labels.Merge(cr.Spec.ManagedMetadata.Labels, selectorLabels) -} - // +kubebuilder:object:root=true // VMAuthList contains a list of VMAuth @@ -621,20 +612,6 @@ func (cr *VMAuth) PodAnnotations() map[string]string { return annotations } -func (cr *VMAuth) AnnotationsFiltered() map[string]string { - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - dst := filterMapKeysByPrefixes(cr.Annotations, annotationFilterPrefixes) - if cr.Spec.ManagedMetadata != nil { - if dst == nil { - dst = make(map[string]string) - } - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v - } - } - return dst -} - func (cr *VMAuth) SelectorLabels() map[string]string { return map[string]string{ "app.kubernetes.io/name": "vmauth", @@ -652,21 +629,22 @@ func (cr *VMAuth) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -func (cr *VMAuth) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Labels == nil && cr.Spec.ManagedMetadata == nil { - return selectorLabels - } - var result map[string]string - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - if cr.Labels != nil { - result = filterMapKeysByPrefixes(cr.Labels, labelFilterPrefixes) +// FinalLabels returns combination of selector and managed labels +func (cr *VMAuth) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } + return v +} + +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VMAuth) FinalAnnotations() map[string]string { + var v map[string]string if cr.Spec.ManagedMetadata != nil { - result = labels.Merge(result, cr.Spec.ManagedMetadata.Labels) + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return labels.Merge(result, selectorLabels) + return v } func (cr *VMAuth) PrefixedName() string { diff --git a/api/operator/v1beta1/vmcluster_types.go b/api/operator/v1beta1/vmcluster_types.go index 9eefce0bd..62c6a5ce0 100644 --- a/api/operator/v1beta1/vmcluster_types.go +++ b/api/operator/v1beta1/vmcluster_types.go @@ -165,14 +165,6 @@ func (cr *VMCluster) PodAnnotations(kind ClusterComponent) map[string]string { return podMetadata.Annotations } -// FinalAnnotations returns global annotations to be applied by objects generate for vmcluster -func (cr *VMCluster) FinalAnnotations() map[string]string { - if cr.Spec.ManagedMetadata == nil { - return nil - } - return cr.Spec.ManagedMetadata.Annotations -} - // PrefixedName returns prefixed name for the given component kind func (cr *VMCluster) PrefixedName(kind ClusterComponent) string { return ClusterPrefixedName(kind, cr.Name, "vm", false) @@ -245,9 +237,7 @@ func (cr *VMCluster) GetStatus() *VMClusterStatus { } // DefaultStatusFields implements reconcile.ObjectWithDeepCopyAndStatus interface -func (cr *VMCluster) DefaultStatusFields(vs *VMClusterStatus) { - vs.LegacyStatus = vs.UpdateStatus -} +func (cr *VMCluster) DefaultStatusFields(vs *VMClusterStatus) {} // AsOwner returns owner references with current object as owner func (cr *VMCluster) AsOwner() metav1.OwnerReference { @@ -264,8 +254,6 @@ func (cr *VMCluster) AsOwner() metav1.OwnerReference { // VMClusterStatus defines the observed state of VMCluster type VMClusterStatus struct { StatusMetadata `json:",inline"` - // LegacyStatus is deprecated and will be removed at v0.52.0 version - LegacyStatus UpdateStatus `json:"clusterStatus,omitempty"` } // GetStatusMetadata returns metadata for object status @@ -724,36 +712,20 @@ func (cr *VMCluster) AvailableStorageNodeIDs(requestsType string) []int32 { // FinalLabels adds cluster labels to the base labels and filters by prefix if needed func (cr *VMCluster) FinalLabels(kind ClusterComponent) map[string]string { - baseLabels := AddClusterLabels(cr.SelectorLabels(kind), "vm") - if cr.Labels == nil && cr.Spec.ManagedMetadata == nil { - // fast path - return baseLabels - } - var result map[string]string - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - if cr.Labels != nil { - result = filterMapKeysByPrefixes(cr.Labels, labelFilterPrefixes) - } + v := AddClusterLabels(cr.SelectorLabels(kind), "vm") if cr.Spec.ManagedMetadata != nil { - result = labels.Merge(result, cr.Spec.ManagedMetadata.Labels) + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } - return labels.Merge(result, baseLabels) + return v } -// AnnotationsFiltered returns global annotations to be applied by objects generate for vmcluster -func (cr *VMCluster) AnnotationsFiltered() map[string]string { - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - dst := filterMapKeysByPrefixes(cr.Annotations, annotationFilterPrefixes) +// FinalAnnotations returns global annotations to be applied by objects generate for vmcluster +func (cr *VMCluster) FinalAnnotations() map[string]string { + var v map[string]string if cr.Spec.ManagedMetadata != nil { - if dst == nil { - dst = make(map[string]string) - } - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v - } + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return dst - + return v } // LastAppliedSpecAsPatch return last applied cluster spec as patch annotation diff --git a/api/operator/v1beta1/vmextra_types.go b/api/operator/v1beta1/vmextra_types.go index 3683d6c60..56c199349 100644 --- a/api/operator/v1beta1/vmextra_types.go +++ b/api/operator/v1beta1/vmextra_types.go @@ -85,37 +85,6 @@ const ( // SchemeGroupVersion is group version used to register these objects var SchemeGroupVersion = schema.GroupVersion{Group: "operator.victoriametrics.com", Version: "v1beta1"} -var ( - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - labelFilterPrefixes []string - // default ignored annotations - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - annotationFilterPrefixes = []string{"kubectl.kubernetes.io/", "operator.victoriametrics.com/", "operator.victoriametrics/"} -) - -// SetLabelAndAnnotationPrefixes configures global filtering for child labels and annotations -// cannot be used concurrently and should be called only once at lib init -// TODO: @f41gh7 deprecated at will be removed at v0.52.0 release -func SetLabelAndAnnotationPrefixes(labelPrefixes, annotationPrefixes []string) { - labelFilterPrefixes = labelPrefixes - annotationFilterPrefixes = append(annotationFilterPrefixes, annotationPrefixes...) -} - -// TODO: @f41gh7 deprecated at will be removed at v0.52.0 release -func filterMapKeysByPrefixes(src map[string]string, prefixes []string) map[string]string { - dst := make(map[string]string, len(src)) -OUTER: - for key, value := range src { - for _, matchPrefix := range prefixes { - if strings.HasPrefix(key, matchPrefix) { - continue OUTER - } - } - dst[key] = value - } - return dst -} - // skip validation, if object has annotation. func MustSkipCRValidation(cr client.Object) bool { return cr.GetAnnotations()[SkipValidationAnnotation] == SkipValidationValue diff --git a/api/operator/v1beta1/vmsingle_types.go b/api/operator/v1beta1/vmsingle_types.go index e1b7fee31..caa634dc4 100644 --- a/api/operator/v1beta1/vmsingle_types.go +++ b/api/operator/v1beta1/vmsingle_types.go @@ -125,8 +125,6 @@ func (cr *VMSingleSpec) UnmarshalJSON(src []byte) error { // +k8s:openapi-gen=true type VMSingleStatus struct { StatusMetadata `json:",inline"` - // LegacyStatus is deprecated and will be removed at v0.52.0 version - LegacyStatus UpdateStatus `json:"singleStatus,omitempty"` } // VMSingle is fast, cost-effective and scalable time-series database. @@ -159,9 +157,7 @@ func (cr *VMSingle) GetStatus() *VMSingleStatus { } // DefaultStatusFields implements reconcile.ObjectWithDeepCopyAndStatus interface -func (cr *VMSingle) DefaultStatusFields(vs *VMSingleStatus) { - vs.LegacyStatus = vs.UpdateStatus -} +func (cr *VMSingle) DefaultStatusFields(_ *VMSingleStatus) {} func (cr *VMSingle) Probe() *EmbeddedProbes { return cr.Spec.EmbeddedProbes @@ -213,21 +209,6 @@ func (cr *VMSingle) PodAnnotations() map[string]string { return annotations } -func (cr *VMSingle) AnnotationsFiltered() map[string]string { - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - dst := filterMapKeysByPrefixes(cr.Annotations, annotationFilterPrefixes) - if cr.Spec.ManagedMetadata != nil { - if dst == nil { - dst = make(map[string]string) - } - for k, v := range cr.Spec.ManagedMetadata.Annotations { - dst[k] = v - } - } - return dst - -} - func (cr *VMSingle) SelectorLabels() map[string]string { return map[string]string{ "app.kubernetes.io/name": "vmsingle", @@ -245,21 +226,22 @@ func (cr *VMSingle) PodLabels() map[string]string { return labels.Merge(cr.Spec.PodMetadata.Labels, lbls) } -func (cr *VMSingle) AllLabels() map[string]string { - selectorLabels := cr.SelectorLabels() - // fast path - if cr.Labels == nil && cr.Spec.ManagedMetadata == nil { - return selectorLabels - } - var result map[string]string - // TODO: @f41gh7 deprecated at will be removed at v0.52.0 release - if cr.Labels != nil { - result = filterMapKeysByPrefixes(cr.Labels, labelFilterPrefixes) +// FinalLabels returns combination of selector and managed labels +func (cr *VMSingle) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } + return v +} + +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VMSingle) FinalAnnotations() map[string]string { + var v map[string]string if cr.Spec.ManagedMetadata != nil { - result = labels.Merge(result, cr.Spec.ManagedMetadata.Labels) + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return labels.Merge(result, selectorLabels) + return v } func (cr *VMSingle) PrefixedName() string { diff --git a/api/operator/v1beta1/vmuser_types.go b/api/operator/v1beta1/vmuser_types.go index 944438a7f..4f31d5df3 100644 --- a/api/operator/v1beta1/vmuser_types.go +++ b/api/operator/v1beta1/vmuser_types.go @@ -2,10 +2,10 @@ package v1beta1 import ( "fmt" - "strings" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" ) @@ -46,6 +46,10 @@ type VMUserSpec struct { // DisableSecretCreation skips related secret creation for vmuser DisableSecretCreation bool `json:"disable_secret_creation,omitempty"` + + // ManagedMetadata defines metadata that will be added to the all objects + // created by operator for the given CustomResource + ManagedMetadata *ManagedObjectsMetadata `json:"managedMetadata,omitempty"` } // TargetRef describes target for user traffic forwarding. @@ -185,14 +189,13 @@ func (cr *VMUser) AsOwner() metav1.OwnerReference { } } -func (cr *VMUser) AnnotationsFiltered() map[string]string { - annotations := make(map[string]string) - for annotation, value := range cr.Annotations { - if !strings.HasPrefix(annotation, "kubectl.kubernetes.io/") { - annotations[annotation] = value - } +// FinalAnnotations returns annotations to be applied for created objects +func (cr *VMUser) FinalAnnotations() map[string]string { + var v map[string]string + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Annotations, v) } - return annotations + return v } func (cr *VMUser) SelectorLabels() map[string]string { @@ -204,19 +207,13 @@ func (cr *VMUser) SelectorLabels() map[string]string { } } -// AllLabels returns combined labels for VMUser -func (cr *VMUser) AllLabels() map[string]string { - labels := cr.SelectorLabels() - if cr.Labels != nil { - for label, value := range cr.Labels { - if _, ok := labels[label]; ok { - // forbid changes for selector labels - continue - } - labels[label] = value - } +// FinalLabels returns combination of selector and managed labels +func (cr *VMUser) FinalLabels() map[string]string { + v := cr.SelectorLabels() + if cr.Spec.ManagedMetadata != nil { + v = labels.Merge(cr.Spec.ManagedMetadata.Labels, v) } - return labels + return v } // GetStatusMetadata implements reconcile.objectWithStatus interface diff --git a/api/operator/v1beta1/zz_generated.deepcopy.go b/api/operator/v1beta1/zz_generated.deepcopy.go index e7f70d824..69a3411dd 100644 --- a/api/operator/v1beta1/zz_generated.deepcopy.go +++ b/api/operator/v1beta1/zz_generated.deepcopy.go @@ -6963,6 +6963,11 @@ func (in *VMUserSpec) DeepCopyInto(out *VMUserSpec) { (*out)[key] = val } } + if in.ManagedMetadata != nil { + in, out := &in.ManagedMetadata, &out.ManagedMetadata + *out = new(ManagedObjectsMetadata) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VMUserSpec. diff --git a/config/crd/overlay/crd.specless.yaml b/config/crd/overlay/crd.specless.yaml index 3eec95bef..536a74a42 100644 --- a/config/crd/overlay/crd.specless.yaml +++ b/config/crd/overlay/crd.specless.yaml @@ -1521,10 +1521,6 @@ spec: status: description: VMClusterStatus defines the observed state of VMCluster properties: - clusterStatus: - description: LegacyStatus is deprecated and will be removed at v0.52.0 - version - type: string conditions: description: 'Known .status.conditions.type are: "Available", "Progressing", and "Degraded"' @@ -2577,10 +2573,6 @@ spec: reason: description: Reason defines human readable error reason type: string - singleStatus: - description: LegacyStatus is deprecated and will be removed at v0.52.0 - version - type: string updateStatus: description: UpdateStatus defines a status for update rollout type: string diff --git a/config/crd/overlay/crd.yaml b/config/crd/overlay/crd.yaml index 79aa8ab08..bcdf83ec6 100644 --- a/config/crd/overlay/crd.yaml +++ b/config/crd/overlay/crd.yaml @@ -30004,10 +30004,6 @@ spec: status: description: VMClusterStatus defines the observed state of VMCluster properties: - clusterStatus: - description: LegacyStatus is deprecated and will be removed at v0.52.0 - version - type: string conditions: description: 'Known .status.conditions.type are: "Available", "Progressing", and "Degraded"' @@ -39639,10 +39635,6 @@ spec: reason: description: Reason defines human readable error reason type: string - singleStatus: - description: LegacyStatus is deprecated and will be removed at v0.52.0 - version - type: string updateStatus: description: UpdateStatus defines a status for update rollout type: string @@ -40681,6 +40673,29 @@ spec: - least_loaded - first_available type: string + managedMetadata: + description: |- + ManagedMetadata defines metadata that will be added to the all objects + created by operator for the given CustomResource + properties: + annotations: + additionalProperties: + type: string + description: |- + Annotations is an unstructured key value map stored with a resource that may be + set by external tools to store and retrieve arbitrary metadata. They are not + queryable and should be preserved when modifying objects. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations + type: object + labels: + additionalProperties: + type: string + description: |- + Labels Map of string keys and values that can be used to organize and categorize + (scope and select) objects. + More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels + type: object + type: object max_concurrent_requests: description: |- MaxConcurrentRequests defines max concurrent requests per user diff --git a/config/olm/kind.yaml b/config/olm/kind.yaml index 57bc356d2..c2d62fc48 100644 --- a/config/olm/kind.yaml +++ b/config/olm/kind.yaml @@ -1,5 +1,11 @@ apiVersion: kind.x-k8s.io/v1alpha4 kind: Cluster +kubeadmConfigPatches: +- | + kind: ClusterConfiguration + scheduler: + extraArgs: + bind-address: "0.0.0.0" containerdConfigPatches: - |- [plugins."io.containerd.grpc.v1.cri".registry] diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index d9398500c..941024b2d 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -13,6 +13,10 @@ aliases: ## tip +**Update note 1: `labels` and `annotations` inheritance is removed. It was deprecated in v0.51.0. Consider moving all needed labels and annotations to the `spec.managedMetadata` fields.** + +**Update node 2: removed VMCluster's `status.clusterStatus` and VMSingle's `status.singleStatus`, that were deprecated in v0.51.0.** + * Dependency: [vmoperator](https://docs.victoriametrics.com/operator/): Updated default versions for VM apps to [v1.130.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.130.0) version * FEATURE: [vmoperator](https://docs.victoriametrics.com/operator/): add `VM_ENABLETCP6` variable that runs all operator CRs in IPv6 mode. See [#1581](https://github.com/VictoriaMetrics/operator/issues/1581). @@ -21,7 +25,7 @@ aliases: * FEATURE: [vmauth](https://docs.victoriametrics.com/operator/resources/vmauth/): Add httproute support for vmauth. See[#1625](https://github.com/VictoriaMetrics/operator/issues/1625) * FEATURE: [vmauth](https://docs.victoriametrics.com/operator/resources/vmauth/): allow overriding default path for embedded ingress. See [#1617](https://github.com/VictoriaMetrics/operator/issues/1617). * FEATURE: [vmalertmanagerconfig](https://docs.victoriametrics.com/operator/resources/vmalertmanagerconfig/): support incident.io receiver. See [#1637](https://github.com/VictoriaMetrics/operator/issues/1637). - +* FEATURE: [vmuser](https://docs.victoriametrics.com/operator/resources/vmuser/): introduce `spec.managedMetadata` for custom labels and annotations that should be attached to a Secret. * BUGFIX: [vmalertmanager](https://docs.victoriametrics.com/operator/resources/vmalertmanager/): check `mute_time_intervals` in subroutes: See [#1618](https://github.com/VictoriaMetrics/operator/issues/1618). * BUGFIX: [vmoperator](https://docs.victoriametrics.com/operator/): remove incorrect key argument in structured log for when the actual PVC storage size is larger than the currently configured size and properly indicate which is the new and which is the existing size: See PR [#1636](https://github.com/VictoriaMetrics/operator/pull/1636) for details. @@ -459,7 +463,7 @@ If you still want to upgrade, you can override the vmagent image version by sett ![AppVersion: v1.3.2](https://img.shields.io/badge/v1.3.2-success?label=Default%20VL%20version&logo=VictoriaMetrics&labelColor=gray&link=https%3A%2F%2Fdocs.victoriametrics.com%2Fvictorialogs%2Fchangelog%2F%23v132) **Update note 1: `labels` and `annotations` inheritance is deprecated and will be remove at upcoming `v0.52.0` release. It's recommend to move all needed labels and annotations to the `spec.managedMetadata` fields. -Operator will preserve `annotations`, but any changes to it will be ignored. `labels` inherited from `CRD.metata.labels` will be removed after upgrade to `v0.52.0`.** +Operator will preserve `annotations`, but any changes to it will be ignored. `labels` inherited from `CRD.metadata.labels` will be removed after upgrade to `v0.52.0`.** **Update note 2: `VMAuth.spec.unauthorizedAccessConfig` is deprecated in favour of `VMAuth.spec.unauthorizedUserAccessSpec`. Operator still serves deprecated fields until `v1.0` release.** diff --git a/docs/api.md b/docs/api.md index b9a2ce763..d0cfd7b5a 100644 --- a/docs/api.md +++ b/docs/api.md @@ -2249,7 +2249,7 @@ Appears in: [Receiver](#receiver) ManagedObjectsMetadata contains Labels and Annotations -Appears in: [VLAgentSpec](#vlagentspec), [VLClusterSpec](#vlclusterspec), [VLSingleSpec](#vlsinglespec), [VLogsSpec](#vlogsspec), [VMAgentSpec](#vmagentspec), [VMAlertSpec](#vmalertspec), [VMAlertmanagerSpec](#vmalertmanagerspec), [VMAnomalySpec](#vmanomalyspec), [VMAuthSpec](#vmauthspec), [VMClusterSpec](#vmclusterspec), [VMSingleSpec](#vmsinglespec), [VTClusterSpec](#vtclusterspec), [VTSingleSpec](#vtsinglespec) +Appears in: [VLAgentSpec](#vlagentspec), [VLClusterSpec](#vlclusterspec), [VLSingleSpec](#vlsinglespec), [VLogsSpec](#vlogsspec), [VMAgentSpec](#vmagentspec), [VMAlertSpec](#vmalertspec), [VMAlertmanagerSpec](#vmalertmanagerspec), [VMAnomalySpec](#vmanomalyspec), [VMAuthSpec](#vmauthspec), [VMClusterSpec](#vmclusterspec), [VMSingleSpec](#vmsinglespec), [VMUserSpec](#vmuserspec), [VTClusterSpec](#vtclusterspec), [VTSingleSpec](#vtsinglespec) | Field | Description | | --- | --- | @@ -4901,6 +4901,7 @@ Appears in: [VMUser](#vmuser) | headers#
_string array_ | _(Optional)_
Headers represent additional http headers, that vmauth uses
in form of ["header_key: header_value"]
multiple values for header key:
["header_key: value1,value2"]
it's available since 1.68.0 version of vmauth | | ip_filters#
_[VMUserIPFilters](#vmuseripfilters)_ | _(Optional)_
IPFilters defines per target src ip filters
supported only with enterprise version of [vmauth](https://docs.victoriametrics.com/victoriametrics/vmauth/#ip-filters) | | load_balancing_policy#
_string_ | _(Optional)_
LoadBalancingPolicy defines load balancing policy to use for backend urls.
Supported policies: least_loaded, first_available.
See [here](https://docs.victoriametrics.com/victoriametrics/vmauth/#load-balancing) for more details (default "least_loaded") | +| managedMetadata#
_[ManagedObjectsMetadata](#managedobjectsmetadata)_ | _(Required)_
ManagedMetadata defines metadata that will be added to the all objects
created by operator for the given CustomResource | | max_concurrent_requests#
_integer_ | _(Optional)_
MaxConcurrentRequests defines max concurrent requests per user
300 is default value for vmauth | | metric_labels#
_object (keys:string, values:string)_ | _(Optional)_
MetricLabels - additional labels for metrics exported by vmauth for given user. | | name#
_string_ | _(Optional)_
Name of the VMUser object. | diff --git a/docs/env.md b/docs/env.md index fd0f0c09e..11243b1a8 100644 --- a/docs/env.md +++ b/docs/env.md @@ -190,8 +190,6 @@ | VM_ENABLEDPROMETHEUSCONVERTER_PROBE: `true` # | | VM_ENABLEDPROMETHEUSCONVERTER_ALERTMANAGERCONFIG: `true` # | | VM_ENABLEDPROMETHEUSCONVERTER_SCRAPECONFIG: `true` # | -| VM_FILTERCHILDLABELPREFIXES: `-` # | -| VM_FILTERCHILDANNOTATIONPREFIXES: `-` # | | VM_PROMETHEUSCONVERTERADDARGOCDIGNOREANNOTATIONS: `false` #
adds compare-options and sync-options for prometheus objects converted by operator. It helps to properly use converter with ArgoCD | | VM_ENABLEDPROMETHEUSCONVERTEROWNERREFERENCES: `false` # | | VM_FILTERPROMETHEUSCONVERTERLABELPREFIXES: `-` #
allows filtering for converted labels, labels with matched prefix will be ignored | diff --git a/internal/config/config.go b/internal/config/config.go index 987955fac..68dba3012 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -523,8 +523,6 @@ type BaseOperatorConf struct { AlertmanagerConfig bool `default:"true" env:"ALERTMANAGERCONFIG"` ScrapeConfig bool `default:"true" env:"SCRAPECONFIG"` } `prefix:"ENABLEDPROMETHEUSCONVERTER_"` - FilterChildLabelPrefixes []string `default:"" env:"FILTERCHILDLABELPREFIXES"` - FilterChildAnnotationPrefixes []string `default:"" env:"FILTERCHILDANNOTATIONPREFIXES"` // adds compare-options and sync-options for prometheus objects converted by operator. // It helps to properly use converter with ArgoCD PrometheusConverterAddArgoCDIgnoreAnnotations bool `default:"false" env:"PROMETHEUSCONVERTERADDARGOCDIGNOREANNOTATIONS"` diff --git a/internal/controller/operator/factory/build/build.go b/internal/controller/operator/factory/build/build.go index e16bdd650..3f716ef75 100644 --- a/internal/controller/operator/factory/build/build.go +++ b/internal/controller/operator/factory/build/build.go @@ -25,8 +25,8 @@ func SetSkipRuntimeValidation(mustSkip bool) { type builderOpts interface { client.Object PrefixedName() string - AnnotationsFiltered() map[string]string - AllLabels() map[string]string + FinalAnnotations() map[string]string + FinalLabels() map[string]string SelectorLabels() map[string]string AsOwner() metav1.OwnerReference GetNamespace() string diff --git a/internal/controller/operator/factory/build/cache.go b/internal/controller/operator/factory/build/cache.go index 1141f3065..e90199b95 100644 --- a/internal/controller/operator/factory/build/cache.go +++ b/internal/controller/operator/factory/build/cache.go @@ -62,8 +62,8 @@ func ResourceMeta(kind ResourceKind, cr builderOpts) metav1.ObjectMeta { return metav1.ObjectMeta{ Name: ResourceName(kind, cr), Namespace: cr.GetNamespace(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, } diff --git a/internal/controller/operator/factory/build/cluster.go b/internal/controller/operator/factory/build/cluster.go index 4820c4e4b..76e917979 100644 --- a/internal/controller/operator/factory/build/cluster.go +++ b/internal/controller/operator/factory/build/cluster.go @@ -32,16 +32,11 @@ func (b *ChildBuilder) PrefixedName() string { return b.ParentOpts.PrefixedName(b.kind) } -// AllLabels implements build.svcBuilderArgs interface -func (b *ChildBuilder) AllLabels() map[string]string { +// FinalLabels implements build.svcBuilderArgs interface +func (b *ChildBuilder) FinalLabels() map[string]string { return b.finalLabels } -// AnnotationsFiltered implements build.svcBuilderArgs interface -func (b *ChildBuilder) AnnotationsFiltered() map[string]string { - return b.FinalAnnotations() -} - // SelectorLabels implements build.svcBuilderArgs interface func (b *ChildBuilder) SelectorLabels() map[string]string { return b.selectorLabels diff --git a/internal/controller/operator/factory/build/hpa.go b/internal/controller/operator/factory/build/hpa.go index bb2f9ac83..be2d2b7b8 100644 --- a/internal/controller/operator/factory/build/hpa.go +++ b/internal/controller/operator/factory/build/hpa.go @@ -13,8 +13,8 @@ func HPA(opts builderOpts, targetRef autoscalingv2.CrossVersionObjectReference, ObjectMeta: metav1.ObjectMeta{ Name: targetRef.Name, Namespace: opts.GetNamespace(), - Annotations: opts.AnnotationsFiltered(), - Labels: opts.AllLabels(), + Annotations: opts.FinalAnnotations(), + Labels: opts.FinalLabels(), OwnerReferences: []metav1.OwnerReference{opts.AsOwner()}, }, Spec: autoscalingv2.HorizontalPodAutoscalerSpec{ diff --git a/internal/controller/operator/factory/build/pdb.go b/internal/controller/operator/factory/build/pdb.go index 22f91c0a8..8886b8366 100644 --- a/internal/controller/operator/factory/build/pdb.go +++ b/internal/controller/operator/factory/build/pdb.go @@ -12,8 +12,8 @@ func PodDisruptionBudget(cr builderOpts, spec *vmv1beta1.EmbeddedPodDisruptionBu pdb := policyv1.PodDisruptionBudget{ ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), - Annotations: cr.AnnotationsFiltered(), - Labels: cr.AllLabels(), + Annotations: cr.FinalAnnotations(), + Labels: cr.FinalLabels(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Namespace: cr.GetNamespace(), }, diff --git a/internal/controller/operator/factory/build/service.go b/internal/controller/operator/factory/build/service.go index 27813d874..57ffa7c51 100644 --- a/internal/controller/operator/factory/build/service.go +++ b/internal/controller/operator/factory/build/service.go @@ -47,8 +47,8 @@ func Service(cr builderOpts, defaultPort string, setOptions func(svc *corev1.Ser ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.GetNamespace(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/build/service_account.go b/internal/controller/operator/factory/build/service_account.go index 0562bb04a..569b76f06 100644 --- a/internal/controller/operator/factory/build/service_account.go +++ b/internal/controller/operator/factory/build/service_account.go @@ -9,8 +9,8 @@ import ( ) type objectForServiceAccountBuilder interface { - AllLabels() map[string]string - AnnotationsFiltered() map[string]string + FinalLabels() map[string]string + FinalAnnotations() map[string]string AsOwner() metav1.OwnerReference GetNamespace() string GetServiceAccountName() string @@ -24,8 +24,8 @@ func ServiceAccount(cr objectForServiceAccountBuilder) *corev1.ServiceAccount { ObjectMeta: metav1.ObjectMeta{ Name: cr.GetServiceAccountName(), Namespace: cr.GetNamespace(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/finalize/common.go b/internal/controller/operator/factory/finalize/common.go index 2b7f35a17..0267d4448 100644 --- a/internal/controller/operator/factory/finalize/common.go +++ b/internal/controller/operator/factory/finalize/common.go @@ -17,7 +17,7 @@ import ( ) type crObject interface { - AnnotationsFiltered() map[string]string + FinalAnnotations() map[string]string GetLabels() map[string]string PrefixedName() string GetServiceAccountName() string diff --git a/internal/controller/operator/factory/vlagent/vlagent.go b/internal/controller/operator/factory/vlagent/vlagent.go index c11b850ab..cc331fa7a 100644 --- a/internal/controller/operator/factory/vlagent/vlagent.go +++ b/internal/controller/operator/factory/vlagent/vlagent.go @@ -150,8 +150,8 @@ func newDeploy(cr *vmv1.VLAgent) (*appsv1.StatefulSet, error) { ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/vlcluster/vmauth_lb.go b/internal/controller/operator/factory/vlcluster/vmauth_lb.go index c7a55e1b9..057bf77d3 100644 --- a/internal/controller/operator/factory/vlcluster/vmauth_lb.go +++ b/internal/controller/operator/factory/vlcluster/vmauth_lb.go @@ -230,7 +230,7 @@ func buildVMauthLBDeployment(cr *vmv1.VLCluster) (*appsv1.Deployment, error) { func createOrUpdateVMAuthLBService(ctx context.Context, rclient client.Client, cr, prevCR *vmv1.VLCluster) error { builder := func(r *vmv1.VLCluster) *build.ChildBuilder { b := build.NewChildBuilder(r, vmv1beta1.ClusterComponentBalancer) - b.SetFinalLabels(labels.Merge(b.AllLabels(), map[string]string{ + b.SetFinalLabels(labels.Merge(b.FinalLabels(), map[string]string{ vmv1beta1.VMAuthLBServiceProxyTargetLabel: "vmauth", })) return b @@ -270,7 +270,7 @@ func createOrUpdatePodDisruptionBudgetForVMAuthLB(ctx context.Context, rclient c func createOrUpdateLBProxyService(ctx context.Context, rclient client.Client, cr, prevCR *vmv1.VLCluster, kind vmv1beta1.ClusterComponent, port, prevPort string) error { builder := func(r *vmv1.VLCluster) *build.ChildBuilder { b := build.NewChildBuilder(r, kind) - b.SetFinalLabels(labels.Merge(b.AllLabels(), map[string]string{ + b.SetFinalLabels(labels.Merge(b.FinalLabels(), map[string]string{ vmv1beta1.VMAuthLBServiceProxyTargetLabel: string(kind), })) b.SetSelectorLabels(cr.SelectorLabels(vmv1beta1.ClusterComponentBalancer)) diff --git a/internal/controller/operator/factory/vlsingle/vlogs.go b/internal/controller/operator/factory/vlsingle/vlogs.go index 1aa2abb87..da5c887b5 100644 --- a/internal/controller/operator/factory/vlsingle/vlogs.go +++ b/internal/controller/operator/factory/vlsingle/vlogs.go @@ -120,8 +120,8 @@ func newVLogsDeployment(r *vmv1beta1.VLogs) (*appsv1.Deployment, error) { ObjectMeta: metav1.ObjectMeta{ Name: r.PrefixedName(), Namespace: r.Namespace, - Labels: r.AllLabels(), - Annotations: r.AnnotationsFiltered(), + Labels: r.FinalLabels(), + Annotations: r.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{r.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/vlsingle/vlsingle.go b/internal/controller/operator/factory/vlsingle/vlsingle.go index 2747d2a78..13d1c0a0e 100644 --- a/internal/controller/operator/factory/vlsingle/vlsingle.go +++ b/internal/controller/operator/factory/vlsingle/vlsingle.go @@ -124,8 +124,8 @@ func newDeployment(r *vmv1.VLSingle) (*appsv1.Deployment, error) { ObjectMeta: metav1.ObjectMeta{ Name: r.PrefixedName(), Namespace: r.Namespace, - Labels: r.AllLabels(), - Annotations: r.AnnotationsFiltered(), + Labels: r.FinalLabels(), + Annotations: r.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{r.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/vmagent/rbac.go b/internal/controller/operator/factory/vmagent/rbac.go index 3bc059615..9ac6d85bc 100644 --- a/internal/controller/operator/factory/vmagent/rbac.go +++ b/internal/controller/operator/factory/vmagent/rbac.go @@ -197,8 +197,8 @@ func buildClusterRoleBinding(cr *vmv1beta1.VMAgent) *rbacv1.ClusterRoleBinding { ObjectMeta: metav1.ObjectMeta{ Name: cr.GetClusterRoleName(), Namespace: cr.GetNamespace(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Finalizers: []string{vmv1beta1.FinalizerName}, // Kubernetes does not allow namespace-scoped resources to own cluster-scoped resources, // use crd instead @@ -224,8 +224,8 @@ func buildClusterRole(cr *vmv1beta1.VMAgent) *rbacv1.ClusterRole { ObjectMeta: metav1.ObjectMeta{ Name: cr.GetClusterRoleName(), Namespace: cr.GetNamespace(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Finalizers: []string{vmv1beta1.FinalizerName}, // Kubernetes does not allow namespace-scoped resources to own cluster-scoped resources, // use crd instead @@ -258,8 +258,8 @@ func buildNamespacedRole(cr *vmv1beta1.VMAgent) *rbacv1.Role { ObjectMeta: metav1.ObjectMeta{ Name: cr.GetClusterRoleName(), Namespace: cr.GetNamespace(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Finalizers: []string{vmv1beta1.FinalizerName}, OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, }, @@ -272,8 +272,8 @@ func buildNamespacedRoleBinding(cr *vmv1beta1.VMAgent) *rbacv1.RoleBinding { ObjectMeta: metav1.ObjectMeta{ Name: cr.GetClusterRoleName(), Namespace: cr.GetNamespace(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Finalizers: []string{vmv1beta1.FinalizerName}, OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, }, diff --git a/internal/controller/operator/factory/vmagent/vmagent.go b/internal/controller/operator/factory/vmagent/vmagent.go index 819e7cc29..12f721644 100644 --- a/internal/controller/operator/factory/vmagent/vmagent.go +++ b/internal/controller/operator/factory/vmagent/vmagent.go @@ -362,8 +362,8 @@ func newK8sApp(cr *vmv1beta1.VMAgent, ac *build.AssetsCache) (client.Object, err ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, @@ -392,8 +392,8 @@ func newK8sApp(cr *vmv1beta1.VMAgent, ac *build.AssetsCache) (client.Object, err ObjectMeta: metav1.ObjectMeta{ Name: build.ShardName(cr), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, @@ -433,8 +433,8 @@ func newK8sApp(cr *vmv1beta1.VMAgent, ac *build.AssetsCache) (client.Object, err ObjectMeta: metav1.ObjectMeta{ Name: build.ShardName(cr), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, @@ -761,8 +761,8 @@ func buildRelabelingsAssetsMeta(cr *vmv1beta1.VMAgent) metav1.ObjectMeta { return metav1.ObjectMeta{ Namespace: cr.Namespace, Name: cr.RelabelingAssetName(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, } } diff --git a/internal/controller/operator/factory/vmalert/vmalert.go b/internal/controller/operator/factory/vmalert/vmalert.go index b52b17631..571303c25 100644 --- a/internal/controller/operator/factory/vmalert/vmalert.go +++ b/internal/controller/operator/factory/vmalert/vmalert.go @@ -163,8 +163,8 @@ func newDeploy(cr *vmv1beta1.VMAlert, ruleConfigMapNames []string, ac *build.Ass ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/vmalertmanager/alertmanager_test.go b/internal/controller/operator/factory/vmalertmanager/alertmanager_test.go index d4505bdd2..57bfbccb9 100644 --- a/internal/controller/operator/factory/vmalertmanager/alertmanager_test.go +++ b/internal/controller/operator/factory/vmalertmanager/alertmanager_test.go @@ -40,12 +40,14 @@ func TestCreateOrUpdateAlertManager(t *testing.T) { ctx: context.TODO(), cr: &vmv1beta1.VMAlertmanager{ ObjectMeta: metav1.ObjectMeta{ - Name: "test-am", - Namespace: "monitoring", - Annotations: map[string]string{"not": "touch"}, - Labels: map[string]string{"main": "system"}, + Name: "test-am", + Namespace: "monitoring", }, Spec: vmv1beta1.VMAlertmanagerSpec{ + ManagedMetadata: &vmv1beta1.ManagedObjectsMetadata{ + Annotations: map[string]string{"not": "touch"}, + Labels: map[string]string{"main": "system"}, + }, CommonApplicationDeploymentParams: vmv1beta1.CommonApplicationDeploymentParams{ ReplicaCount: ptr.To(int32(1)), }, diff --git a/internal/controller/operator/factory/vmalertmanager/rbac.go b/internal/controller/operator/factory/vmalertmanager/rbac.go index 227ebc6de..a378dba49 100644 --- a/internal/controller/operator/factory/vmalertmanager/rbac.go +++ b/internal/controller/operator/factory/vmalertmanager/rbac.go @@ -44,8 +44,8 @@ func buildRole(cr *vmv1beta1.VMAlertmanager) *rbacv1.Role { ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Finalizers: []string{vmv1beta1.FinalizerName}, OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, }, @@ -64,8 +64,8 @@ func buildRoleBinding(cr *vmv1beta1.VMAlertmanager) *rbacv1.RoleBinding { ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Finalizers: []string{vmv1beta1.FinalizerName}, OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, }, diff --git a/internal/controller/operator/factory/vmalertmanager/statefulset.go b/internal/controller/operator/factory/vmalertmanager/statefulset.go index cccc9e54a..e2cb8fcf1 100644 --- a/internal/controller/operator/factory/vmalertmanager/statefulset.go +++ b/internal/controller/operator/factory/vmalertmanager/statefulset.go @@ -61,8 +61,8 @@ func newStsForAlertManager(cr *vmv1beta1.VMAlertmanager) (*appsv1.StatefulSet, e statefulset := &appsv1.StatefulSet{ ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Namespace: cr.Namespace, OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, @@ -594,8 +594,8 @@ func buildConfigSecretMeta(cr *vmv1beta1.VMAlertmanager) *metav1.ObjectMeta { return &metav1.ObjectMeta{ Name: cr.ConfigSecretName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, } diff --git a/internal/controller/operator/factory/vmanomaly/statefulset.go b/internal/controller/operator/factory/vmanomaly/statefulset.go index 8c64b5a44..5a94a4931 100644 --- a/internal/controller/operator/factory/vmanomaly/statefulset.go +++ b/internal/controller/operator/factory/vmanomaly/statefulset.go @@ -127,8 +127,8 @@ func newK8sApp(cr *vmv1.VMAnomaly, configHash string, ac *build.AssetsCache) (*a ObjectMeta: metav1.ObjectMeta{ Name: build.ShardName(cr), Namespace: cr.GetNamespace(), - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/vmauth/rbac.go b/internal/controller/operator/factory/vmauth/rbac.go index 2d847774a..e6d23c458 100644 --- a/internal/controller/operator/factory/vmauth/rbac.go +++ b/internal/controller/operator/factory/vmauth/rbac.go @@ -44,8 +44,8 @@ func buildRole(cr *vmv1beta1.VMAuth) *rbacv1.Role { ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Finalizers: []string{vmv1beta1.FinalizerName}, OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, }, @@ -64,8 +64,8 @@ func buildRoleBinding(cr *vmv1beta1.VMAuth) *rbacv1.RoleBinding { ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), Finalizers: []string{vmv1beta1.FinalizerName}, OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, }, diff --git a/internal/controller/operator/factory/vmauth/vmauth.go b/internal/controller/operator/factory/vmauth/vmauth.go index e01e00111..2f0318ffc 100644 --- a/internal/controller/operator/factory/vmauth/vmauth.go +++ b/internal/controller/operator/factory/vmauth/vmauth.go @@ -162,8 +162,8 @@ func newDeployForVMAuth(cr *vmv1beta1.VMAuth) (*appsv1.Deployment, error) { ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, }, Spec: appsv1.DeploymentSpec{ @@ -470,7 +470,7 @@ func CreateOrUpdateConfig(ctx context.Context, rclient client.Client, cr *vmv1be func buildConfigSecretMeta(cr *vmv1beta1.VMAuth) metav1.ObjectMeta { return metav1.ObjectMeta{ Name: cr.ConfigSecretName(), - Labels: cr.AllLabels(), + Labels: cr.FinalLabels(), Annotations: map[string]string{ "generated": "true", }, diff --git a/internal/controller/operator/factory/vmauth/vmusers_config.go b/internal/controller/operator/factory/vmauth/vmusers_config.go index 18a229ef3..8bcbe64d2 100644 --- a/internal/controller/operator/factory/vmauth/vmusers_config.go +++ b/internal/controller/operator/factory/vmauth/vmusers_config.go @@ -962,8 +962,8 @@ func buildVMUserSecret(src *vmv1beta1.VMUser) (*corev1.Secret, error) { ObjectMeta: metav1.ObjectMeta{ Name: src.SecretName(), Namespace: src.Namespace, - Labels: src.AllLabels(), - Annotations: src.AnnotationsFiltered(), + Labels: src.FinalLabels(), + Annotations: src.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{src.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/vmcluster/vmcluster.go b/internal/controller/operator/factory/vmcluster/vmcluster.go index 4b35970c9..7756c6c2e 100644 --- a/internal/controller/operator/factory/vmcluster/vmcluster.go +++ b/internal/controller/operator/factory/vmcluster/vmcluster.go @@ -247,7 +247,7 @@ func createOrUpdateVMSelectService(ctx context.Context, rclient client.Client, c func createOrUpdateLBProxyService(ctx context.Context, rclient client.Client, cr, prevCR *vmv1beta1.VMCluster, kind vmv1beta1.ClusterComponent, port, prevPort string) error { builder := func(r *vmv1beta1.VMCluster) *build.ChildBuilder { b := build.NewChildBuilder(r, kind) - b.SetFinalLabels(labels.Merge(b.AllLabels(), map[string]string{ + b.SetFinalLabels(labels.Merge(b.FinalLabels(), map[string]string{ vmv1beta1.VMAuthLBServiceProxyTargetLabel: string(kind), })) b.SetSelectorLabels(cr.SelectorLabels(vmv1beta1.ClusterComponentBalancer)) @@ -446,7 +446,7 @@ func genVMSelectSpec(cr *vmv1beta1.VMCluster) (*appsv1.StatefulSet, error) { Name: commonName, Namespace: cr.Namespace, Labels: cr.FinalLabels(vmv1beta1.ClusterComponentSelect), - Annotations: cr.AnnotationsFiltered(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, @@ -679,7 +679,7 @@ func genVMInsertSpec(cr *vmv1beta1.VMCluster) (*appsv1.Deployment, error) { Name: commonName, Namespace: cr.Namespace, Labels: cr.FinalLabels(vmv1beta1.ClusterComponentInsert), - Annotations: cr.AnnotationsFiltered(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, @@ -879,7 +879,7 @@ func buildVMStorageSpec(ctx context.Context, cr *vmv1beta1.VMCluster) (*appsv1.S Name: commonName, Namespace: cr.Namespace, Labels: cr.FinalLabels(vmv1beta1.ClusterComponentStorage), - Annotations: cr.AnnotationsFiltered(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, @@ -1259,7 +1259,7 @@ func buildLBConfigSecretMeta(cr *vmv1beta1.VMCluster) metav1.ObjectMeta { Namespace: cr.Namespace, Name: cr.PrefixedName(vmv1beta1.ClusterComponentBalancer), Labels: cr.FinalLabels(vmv1beta1.ClusterComponentBalancer), - Annotations: cr.AnnotationsFiltered(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, } } @@ -1381,7 +1381,7 @@ func buildVMAuthLBDeployment(cr *vmv1beta1.VMCluster) (*appsv1.Deployment, error Namespace: cr.Namespace, Name: cr.PrefixedName(vmv1beta1.ClusterComponentBalancer), Labels: cr.FinalLabels(vmv1beta1.ClusterComponentBalancer), - Annotations: cr.AnnotationsFiltered(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, }, Spec: appsv1.DeploymentSpec{ @@ -1414,7 +1414,7 @@ func buildVMAuthLBDeployment(cr *vmv1beta1.VMCluster) (*appsv1.Deployment, error func createOrUpdateVMAuthLBService(ctx context.Context, rclient client.Client, cr, prevCR *vmv1beta1.VMCluster) error { builder := func(r *vmv1beta1.VMCluster) *build.ChildBuilder { b := build.NewChildBuilder(r, vmv1beta1.ClusterComponentBalancer) - b.SetFinalLabels(labels.Merge(b.AllLabels(), map[string]string{ + b.SetFinalLabels(labels.Merge(b.FinalLabels(), map[string]string{ vmv1beta1.VMAuthLBServiceProxyTargetLabel: "vmauth", })) return b diff --git a/internal/controller/operator/factory/vmsingle/vmsingle.go b/internal/controller/operator/factory/vmsingle/vmsingle.go index 8b945a197..79d5e473c 100644 --- a/internal/controller/operator/factory/vmsingle/vmsingle.go +++ b/internal/controller/operator/factory/vmsingle/vmsingle.go @@ -126,8 +126,8 @@ func newDeploy(ctx context.Context, cr *vmv1beta1.VMSingle) (*appsv1.Deployment, ObjectMeta: metav1.ObjectMeta{ Name: cr.PrefixedName(), Namespace: cr.Namespace, - Labels: cr.AllLabels(), - Annotations: cr.AnnotationsFiltered(), + Labels: cr.FinalLabels(), + Annotations: cr.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{cr.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/controller/operator/factory/vtcluster/vmauth_lb.go b/internal/controller/operator/factory/vtcluster/vmauth_lb.go index 83a883c9f..eea4ac862 100644 --- a/internal/controller/operator/factory/vtcluster/vmauth_lb.go +++ b/internal/controller/operator/factory/vtcluster/vmauth_lb.go @@ -229,7 +229,7 @@ func buildVMauthLBDeployment(cr *vmv1.VTCluster) (*appsv1.Deployment, error) { func createOrUpdateVMAuthLBService(ctx context.Context, rclient client.Client, cr, prevCR *vmv1.VTCluster) error { builder := func(r *vmv1.VTCluster) *build.ChildBuilder { b := build.NewChildBuilder(r, vmv1beta1.ClusterComponentBalancer) - b.SetFinalLabels(labels.Merge(b.AllLabels(), map[string]string{ + b.SetFinalLabels(labels.Merge(b.FinalLabels(), map[string]string{ vmv1beta1.VMAuthLBServiceProxyTargetLabel: "vmauth", })) return b @@ -268,7 +268,7 @@ func createOrUpdatePodDisruptionBudgetForVMAuthLB(ctx context.Context, rclient c func createOrUpdateLBProxyService(ctx context.Context, rclient client.Client, cr, prevCR *vmv1.VTCluster, kind vmv1beta1.ClusterComponent, port, prevPort string) error { builder := func(r *vmv1.VTCluster) *build.ChildBuilder { b := build.NewChildBuilder(r, kind) - b.SetFinalLabels(labels.Merge(b.AllLabels(), map[string]string{ + b.SetFinalLabels(labels.Merge(b.FinalLabels(), map[string]string{ vmv1beta1.VMAuthLBServiceProxyTargetLabel: string(kind), })) b.SetSelectorLabels(cr.SelectorLabels(vmv1beta1.ClusterComponentBalancer)) diff --git a/internal/controller/operator/factory/vtsingle/vtsingle.go b/internal/controller/operator/factory/vtsingle/vtsingle.go index cce5071ec..58ded5470 100644 --- a/internal/controller/operator/factory/vtsingle/vtsingle.go +++ b/internal/controller/operator/factory/vtsingle/vtsingle.go @@ -124,8 +124,8 @@ func newDeployment(r *vmv1.VTSingle) (*appsv1.Deployment, error) { ObjectMeta: metav1.ObjectMeta{ Name: r.PrefixedName(), Namespace: r.Namespace, - Labels: r.AllLabels(), - Annotations: r.AnnotationsFiltered(), + Labels: r.FinalLabels(), + Annotations: r.FinalAnnotations(), OwnerReferences: []metav1.OwnerReference{r.AsOwner()}, Finalizers: []string{vmv1beta1.FinalizerName}, }, diff --git a/internal/manager/manager.go b/internal/manager/manager.go index 753054d41..c46cb360a 100644 --- a/internal/manager/manager.go +++ b/internal/manager/manager.go @@ -308,8 +308,6 @@ func RunManager(ctx context.Context) error { build.SetSkipRuntimeValidation(true) } - vmv1beta1.SetLabelAndAnnotationPrefixes(baseConfig.FilterChildLabelPrefixes, baseConfig.FilterChildAnnotationPrefixes) - if err := initControllers(mgr, ctrl.Log, baseConfig); err != nil { return err }