Remove deprecated preserveUnknownFields from CRDs #3490
+0
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
-->
What type of PR is this?
bug
Which issue does this PR fix?:
Fixes ArgoCD sync issues caused by deprecated
preserveUnknownFields: falsefield in ENIConfig CRDs. This field was deprecated and removed in Kubernetes 1.22, causing resources to constantly fall out of sync in ArgoCD.What does this PR do / Why do we need it?:
Removes the deprecated
preserveUnknownFields: falsefield from all ENIConfig Custom Resource Definitions while preserving the modernx-kubernetes-preserve-unknown-fields: trueannotation in schema sections. This fixes ArgoCD compatibility issues where resources would show as out-of-sync due to the deprecated field, while maintaining backward compatibility and all existing functionality.Testing done on this change:
Unit tests: All tests passed
$ make test
PASS
coverage: 85.2% of statements
Metrics unit tests: All tests passed
$ make test-metrics
PASS
coverage: 78.9% of statements
Helm linting: All charts validated successfully
$ make lint-helm
Linting charts/aws-vpc-cni
==> Linting charts/aws-vpc-cni
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
CRD validation: All CRDs are valid Kubernetes v1 resources
$ kubectl apply --dry-run=client -f config/master/aws-k8s-cni.yaml
customresourcedefinition.apiextensions.k8s.io/eniconfigs.crd.k8s.amazonaws.com created (dry run)
customresourcedefinition.apiextensions.k8s.io/policyendpoints.networking.k8s.aws created (dry run)
Will this PR introduce any new dependencies?:
No
Will this break upgrades or downgrades? Has updating a running cluster been tested?:
No breaking changes. This is a removal of deprecated fields only. The modern
x-kubernetes-preserve-unknown-fields: trueannotation remains intact, ensuring backward compatibility. Upgrades will work seamlessly as we're only removing deprecated syntax.Does this change require updates to the CNI daemonset config files to work?:
No. This change only affects CRD definitions and does not require any daemonset configuration changes. A simple
kubectl patchof the image tag will work.Does this PR introduce any user-facing change?:
No user-facing changes. This is an internal fix for ArgoCD compatibility that maintains all existing functionality.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.