mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
Remove the GitOps Toolkit metadata from generated objects
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
This commit is contained in:
@@ -211,7 +211,7 @@ func (i *IngressRouter) SetRoutes(
|
||||
|
||||
func (i *IngressRouter) makeAnnotations(annotations map[string]string) map[string]string {
|
||||
res := make(map[string]string)
|
||||
for k, v := range makeAnnotations(annotations) {
|
||||
for k, v := range filterMetadata(annotations) {
|
||||
if !strings.Contains(k, i.GetAnnotationWithPrefix("canary")) &&
|
||||
!strings.Contains(k, "kubectl.kubernetes.io/last-applied-configuration") &&
|
||||
!strings.Contains(k, i.GetAnnotationWithPrefix("canary-weight")) &&
|
||||
@@ -232,7 +232,7 @@ func (i *IngressRouter) makeAnnotations(annotations map[string]string) map[strin
|
||||
func (i *IngressRouter) makeHeaderAnnotations(annotations map[string]string,
|
||||
header string, headerValue string, headerRegex string, cookie string) map[string]string {
|
||||
res := make(map[string]string)
|
||||
for k, v := range makeAnnotations(annotations) {
|
||||
for k, v := range filterMetadata(annotations) {
|
||||
if !strings.Contains(v, i.GetAnnotationWithPrefix("canary")) {
|
||||
res[k] = v
|
||||
}
|
||||
|
||||
@@ -48,6 +48,9 @@ func TestIngressRouter_Reconcile(t *testing.T) {
|
||||
inCanary, err := router.kubeClient.NetworkingV1().Ingresses("default").Get(context.TODO(), canaryName, metav1.GetOptions{})
|
||||
require.NoError(t, err)
|
||||
|
||||
annotation := inCanary.Annotations["kustomize.toolkit.fluxcd.io/checksum"]
|
||||
assert.Equal(t, "", annotation)
|
||||
|
||||
// test initialisation
|
||||
assert.Equal(t, "true", inCanary.Annotations[canaryAn])
|
||||
assert.Equal(t, "0", inCanary.Annotations[canaryWeightAn])
|
||||
@@ -181,6 +184,6 @@ func TestIngressRouter_ABTest(t *testing.T) {
|
||||
// test initialisation
|
||||
assert.Equal(t, "true", inCanary.Annotations[canaryAn])
|
||||
assert.Equal(t, "test", inCanary.Annotations[table.annotation])
|
||||
assert.Equal(t, "", inCanary.Annotations["kustomize.toolkit.fluxcd.io/checksum"])
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -260,7 +260,7 @@ func (ir *IstioRouter) reconcileVirtualService(canary *flaggerv1.Canary) error {
|
||||
if vtClone.ObjectMeta.Annotations == nil {
|
||||
vtClone.ObjectMeta.Annotations = make(map[string]string)
|
||||
} else {
|
||||
vtClone.ObjectMeta.Annotations = makeAnnotations(vtClone.ObjectMeta.Annotations)
|
||||
vtClone.ObjectMeta.Annotations = filterMetadata(vtClone.ObjectMeta.Annotations)
|
||||
}
|
||||
|
||||
vtClone.ObjectMeta.Annotations[configAnnotation] = string(b)
|
||||
|
||||
@@ -206,8 +206,8 @@ func (c *KubernetesDefaultRouter) reconcileService(canary *flaggerv1.Canary, nam
|
||||
if svc.ObjectMeta.Annotations == nil {
|
||||
svc.ObjectMeta.Annotations = make(map[string]string)
|
||||
}
|
||||
if diff := cmp.Diff(makeAnnotations(metadata.Annotations), svc.ObjectMeta.Annotations); diff != "" {
|
||||
svcClone.ObjectMeta.Annotations = makeAnnotations(metadata.Annotations)
|
||||
if diff := cmp.Diff(filterMetadata(metadata.Annotations), svc.ObjectMeta.Annotations); diff != "" {
|
||||
svcClone.ObjectMeta.Annotations = filterMetadata(metadata.Annotations)
|
||||
updateService = true
|
||||
}
|
||||
if diff := cmp.Diff(metadata.Labels, svc.ObjectMeta.Labels); diff != "" {
|
||||
|
||||
@@ -406,6 +406,9 @@ func newTestCanaryIngress() *flaggerv1.Canary {
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Namespace: "default",
|
||||
Name: "nginx",
|
||||
Annotations: map[string]string{
|
||||
"kustomize.toolkit.fluxcd.io/checksum": "0a40893bfdc545d62125bd3e74eeb2ebaa7097c2",
|
||||
},
|
||||
},
|
||||
Spec: flaggerv1.CanarySpec{
|
||||
TargetRef: flaggerv1.CrossNamespaceObjectReference{
|
||||
@@ -444,7 +447,8 @@ func newTestIngress() *netv1.Ingress {
|
||||
Namespace: "default",
|
||||
Name: "podinfo",
|
||||
Annotations: map[string]string{
|
||||
"kubernetes.io/ingress.class": "nginx",
|
||||
"kubernetes.io/ingress.class": "nginx",
|
||||
"kustomize.toolkit.fluxcd.io/checksum": "0a40893bfdc545d62125bd3e74eeb2ebaa7097c2",
|
||||
},
|
||||
},
|
||||
Spec: netv1.IngressSpec{
|
||||
|
||||
@@ -129,7 +129,7 @@ func (skp *SkipperRouter) Reconcile(canary *flaggerv1.Canary) error {
|
||||
if cmp.Diff(iClone.Spec, canaryIngress.Spec) != "" {
|
||||
ingressClone := canaryIngress.DeepCopy()
|
||||
ingressClone.Spec = iClone.Spec
|
||||
ingressClone.Annotations = makeAnnotations(iClone.Annotations)
|
||||
ingressClone.Annotations = filterMetadata(iClone.Annotations)
|
||||
|
||||
_, err := skp.kubeClient.NetworkingV1().Ingresses(canary.Namespace).Update(context.TODO(), ingressClone, metav1.UpdateOptions{})
|
||||
if err != nil {
|
||||
|
||||
@@ -72,7 +72,7 @@ func (tr *TraefikRouter) Reconcile(canary *flaggerv1.Canary) error {
|
||||
Name: apexName,
|
||||
Namespace: canary.Namespace,
|
||||
Labels: tsMetadata.Labels,
|
||||
Annotations: makeAnnotations(tsMetadata.Annotations),
|
||||
Annotations: filterMetadata(tsMetadata.Annotations),
|
||||
OwnerReferences: []metav1.OwnerReference{
|
||||
*metav1.NewControllerRef(canary, schema.GroupVersionKind{
|
||||
Group: flaggerv1.SchemeGroupVersion.Group,
|
||||
|
||||
+11
-7
@@ -4,9 +4,14 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
const toolkitMarker = "toolkit.fluxcd.io"
|
||||
|
||||
func includeLabelsByPrefix(labels map[string]string, includeLabelPrefixes []string) map[string]string {
|
||||
filteredLabels := make(map[string]string)
|
||||
for key, value := range labels {
|
||||
if strings.Contains(key, toolkitMarker) {
|
||||
continue
|
||||
}
|
||||
for _, includeLabelPrefix := range includeLabelPrefixes {
|
||||
if includeLabelPrefix == "*" || strings.HasPrefix(key, includeLabelPrefix) {
|
||||
filteredLabels[key] = value
|
||||
@@ -18,14 +23,13 @@ func includeLabelsByPrefix(labels map[string]string, includeLabelPrefixes []stri
|
||||
return filteredLabels
|
||||
}
|
||||
|
||||
func makeAnnotations(in map[string]string) map[string]string {
|
||||
out := make(map[string]string)
|
||||
for key, value := range in {
|
||||
// skip Flux GC markers
|
||||
if strings.Contains(key, "/checksum") {
|
||||
func filterMetadata(meta map[string]string) map[string]string {
|
||||
res := make(map[string]string)
|
||||
for k, v := range meta {
|
||||
if strings.Contains(k, toolkitMarker) {
|
||||
continue
|
||||
}
|
||||
out[key] = value
|
||||
res[k] = v
|
||||
}
|
||||
return out
|
||||
return res
|
||||
}
|
||||
|
||||
@@ -41,9 +41,10 @@ func TestIncludeLabelsByPrefix(t *testing.T) {
|
||||
|
||||
func TestIncludeLabelsByPrefixWithWildcard(t *testing.T) {
|
||||
labels := map[string]string{
|
||||
"foo": "foo-value",
|
||||
"bar": "bar-value",
|
||||
"lorem": "ipsum",
|
||||
"foo": "foo-value",
|
||||
"bar": "bar-value",
|
||||
"lorem": "ipsum",
|
||||
"kustomize.toolkit.fluxcd.io/checksum": "some",
|
||||
}
|
||||
includeLabelPrefix := []string{"*"}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user