Merge pull request #4946 from a7i/remove-deploy-revision

fix: prune deployment revision annotation
This commit is contained in:
karmada-bot 2024-05-21 09:26:23 +08:00 committed by GitHub
commit e2b70282cf
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 43 additions and 0 deletions

View File

@ -24,6 +24,7 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
storagevolume "k8s.io/component-helpers/storage/volume"
utildeployment "k8s.io/kubectl/pkg/util/deployment"
"github.com/karmada-io/karmada/pkg/util"
"github.com/karmada-io/karmada/pkg/util/helper"
@ -33,6 +34,7 @@ import (
type irrelevantFieldPruneFunc func(*unstructured.Unstructured) error
var kindIrrelevantFieldPruners = map[string]irrelevantFieldPruneFunc{
util.DeploymentKind: removeDeploymentIrrelevantField,
util.JobKind: removeJobIrrelevantField,
util.SecretKind: removeSecretIrrelevantField,
util.ServiceAccountKind: removeServiceAccountIrrelevantField,
@ -129,6 +131,14 @@ func removeGenerateSelectorOfJob(workload *unstructured.Unstructured) error {
return nil
}
func removeDeploymentIrrelevantField(workload *unstructured.Unstructured) error {
for _, annotation := range []string{utildeployment.RevisionAnnotation, utildeployment.RevisionHistoryAnnotation} {
unstructured.RemoveNestedField(workload.Object, "metadata", "annotations", annotation)
}
return nil
}
// RemoveJobTTLSeconds removes the '.spec.ttlSecondsAfterFinished' from a Job.
// The reason for removing it is that the Job propagated by Karmada probably be automatically deleted
// from member clusters(by 'ttl-after-finished' controller in member clusters). That will cause a conflict if

View File

@ -24,6 +24,7 @@ import (
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
storagevolume "k8s.io/component-helpers/storage/volume"
utildeployment "k8s.io/kubectl/pkg/util/deployment"
"github.com/karmada-io/karmada/pkg/util"
)
@ -239,6 +240,38 @@ func TestRemoveIrrelevantField(t *testing.T) {
{"metadata", "annotations", storagevolume.AnnSelectedNode},
},
},
{
name: "removes deployment revision annotation",
workload: &unstructured.Unstructured{
Object: map[string]interface{}{
"kind": util.DeploymentKind,
"metadata": map[string]interface{}{
"annotations": map[string]interface{}{
utildeployment.RevisionAnnotation: 1,
},
},
},
},
unexpectedFields: []field{
{"metadata", "annotations", utildeployment.RevisionAnnotation},
},
},
{
name: "removes deployment revision history annotation",
workload: &unstructured.Unstructured{
Object: map[string]interface{}{
"kind": util.DeploymentKind,
"metadata": map[string]interface{}{
"annotations": map[string]interface{}{
utildeployment.RevisionHistoryAnnotation: "1,2",
},
},
},
},
unexpectedFields: []field{
{"metadata", "annotations", utildeployment.RevisionHistoryAnnotation},
},
},
}
for _, tt := range tests {