Skip to content

Commit

Permalink
Merge pull request #4943 from a7i/retain-pv-selected-node
Browse files Browse the repository at this point in the history
feat: remove `PersistentVolumeClaim` annotation `volume.kubernetes.io/selected-node`
  • Loading branch information
karmada-bot authored May 16, 2024
2 parents 6cfed59 + 384afd4 commit fbb6411
Show file tree
Hide file tree
Showing 5 changed files with 459 additions and 5 deletions.
20 changes: 15 additions & 5 deletions pkg/resourceinterpreter/default/native/prune/prune.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (
batchv1 "k8s.io/api/batch/v1"
corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
storagevolume "k8s.io/component-helpers/storage/volume"

"github.com/karmada-io/karmada/pkg/util"
"github.com/karmada-io/karmada/pkg/util/helper"
Expand All @@ -32,10 +33,11 @@ import (
type irrelevantFieldPruneFunc func(*unstructured.Unstructured) error

var kindIrrelevantFieldPruners = map[string]irrelevantFieldPruneFunc{
util.JobKind: removeJobIrrelevantField,
util.SecretKind: removeSecretIrrelevantField,
util.ServiceAccountKind: removeServiceAccountIrrelevantField,
util.ServiceKind: removeServiceIrrelevantField,
util.JobKind: removeJobIrrelevantField,
util.SecretKind: removeSecretIrrelevantField,
util.ServiceAccountKind: removeServiceAccountIrrelevantField,
util.ServiceKind: removeServiceIrrelevantField,
util.PersistentVolumeClaimKind: removePersistentVolumeClaimIrrelevantField,
}

// RemoveIrrelevantFields used to remove fields that generated by kube-apiserver and no need(or can't) propagate to
Expand Down Expand Up @@ -184,9 +186,17 @@ func removeServiceIrrelevantField(workload *unstructured.Unstructured) error {

// removeSecretIrrelevantField removes the data and service-account uid annotation from service-account token secrets managed by member-cluster controller-manager
func removeSecretIrrelevantField(workload *unstructured.Unstructured) error {
if secretType, exists, _ := unstructured.NestedString(workload.Object, "type"); exists && secretType == string(corev1.SecretTypeServiceAccountToken) {
if secretType, exist, _ := unstructured.NestedString(workload.Object, "type"); exist && secretType == string(corev1.SecretTypeServiceAccountToken) {
unstructured.RemoveNestedField(workload.Object, "metadata", "annotations", corev1.ServiceAccountUIDKey)
_ = unstructured.SetNestedField(workload.Object, nil, "data")
}
return nil
}

func removePersistentVolumeClaimIrrelevantField(workload *unstructured.Unstructured) error {
selectedNodeAnnotationPath := []string{"metadata", "annotations", storagevolume.AnnSelectedNode}
if selectedNode, exist, _ := unstructured.NestedString(workload.Object, selectedNodeAnnotationPath...); exist && selectedNode != "" {
unstructured.RemoveNestedField(workload.Object, selectedNodeAnnotationPath...)
}
return nil
}
17 changes: 17 additions & 0 deletions pkg/resourceinterpreter/default/native/prune/prune_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import (

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
storagevolume "k8s.io/component-helpers/storage/volume"

"github.com/karmada-io/karmada/pkg/util"
)
Expand Down Expand Up @@ -222,6 +223,22 @@ func TestRemoveIrrelevantField(t *testing.T) {
{"data", corev1.BasicAuthPasswordKey},
},
},
{
name: "remove selected-node pvc annotation",
workload: &unstructured.Unstructured{
Object: map[string]interface{}{
"kind": util.PersistentVolumeClaimKind,
"metadata": map[string]interface{}{
"annotations": map[string]interface{}{
storagevolume.AnnSelectedNode: "node1",
},
},
},
},
unexpectedFields: []field{
{"metadata", "annotations", storagevolume.AnnSelectedNode},
},
},
}

for _, tt := range tests {
Expand Down
84 changes: 84 additions & 0 deletions vendor/k8s.io/component-helpers/storage/volume/helpers.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit fbb6411

Please sign in to comment.