mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 05:57:25 +00:00
AllowExpandedDNSConfig if haveSameExpandedDNSConfig(newPod, oldPod)
This commit is contained in:
parent
6317ce63c6
commit
d9681d7266
@ -390,6 +390,37 @@ func usesIndivisibleHugePagesValues(podSpec *api.PodSpec) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// haveSameExpandedDNSConfig returns true if the oldPodSpec already had
|
||||||
|
// ExpandedDNSConfig and podSpec has the same DNSConfig
|
||||||
|
func haveSameExpandedDNSConfig(podSpec, oldPodSpec *api.PodSpec) bool {
|
||||||
|
if oldPodSpec == nil || oldPodSpec.DNSConfig == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if podSpec == nil || podSpec.DNSConfig == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(oldPodSpec.DNSConfig.Searches) <= apivalidation.MaxDNSSearchPathsLegacy &&
|
||||||
|
len(strings.Join(oldPodSpec.DNSConfig.Searches, " ")) <= apivalidation.MaxDNSSearchListCharsLegacy {
|
||||||
|
// didn't have ExpandedDNSConfig
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(oldPodSpec.DNSConfig.Searches) != len(podSpec.DNSConfig.Searches) {
|
||||||
|
// updates DNSConfig
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, oldSearch := range oldPodSpec.DNSConfig.Searches {
|
||||||
|
if podSpec.DNSConfig.Searches[i] != oldSearch {
|
||||||
|
// updates DNSConfig
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// GetValidationOptionsFromPodSpecAndMeta returns validation options based on pod specs and metadata
|
// GetValidationOptionsFromPodSpecAndMeta returns validation options based on pod specs and metadata
|
||||||
func GetValidationOptionsFromPodSpecAndMeta(podSpec, oldPodSpec *api.PodSpec, podMeta, oldPodMeta *metav1.ObjectMeta) apivalidation.PodValidationOptions {
|
func GetValidationOptionsFromPodSpecAndMeta(podSpec, oldPodSpec *api.PodSpec, podMeta, oldPodMeta *metav1.ObjectMeta) apivalidation.PodValidationOptions {
|
||||||
// default pod validation options based on feature gate
|
// default pod validation options based on feature gate
|
||||||
@ -403,7 +434,7 @@ func GetValidationOptionsFromPodSpecAndMeta(podSpec, oldPodSpec *api.PodSpec, po
|
|||||||
AllowIndivisibleHugePagesValues: false,
|
AllowIndivisibleHugePagesValues: false,
|
||||||
AllowWindowsHostProcessField: utilfeature.DefaultFeatureGate.Enabled(features.WindowsHostProcessContainers),
|
AllowWindowsHostProcessField: utilfeature.DefaultFeatureGate.Enabled(features.WindowsHostProcessContainers),
|
||||||
// Allow pod spec with expanded DNS configuration
|
// Allow pod spec with expanded DNS configuration
|
||||||
AllowExpandedDNSConfig: utilfeature.DefaultFeatureGate.Enabled(features.ExpandedDNSConfig),
|
AllowExpandedDNSConfig: utilfeature.DefaultFeatureGate.Enabled(features.ExpandedDNSConfig) || haveSameExpandedDNSConfig(podSpec, oldPodSpec),
|
||||||
}
|
}
|
||||||
|
|
||||||
if oldPodSpec != nil {
|
if oldPodSpec != nil {
|
||||||
|
@ -1474,6 +1474,365 @@ func TestValidatePodDeletionCostOption(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHaveSameExpandedDNSConfig(t *testing.T) {
|
||||||
|
testCases := []struct {
|
||||||
|
desc string
|
||||||
|
podSpec *api.PodSpec
|
||||||
|
oldPodSpec *api.PodSpec
|
||||||
|
want bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
desc: "nil DNSConfig",
|
||||||
|
podSpec: &api.PodSpec{},
|
||||||
|
oldPodSpec: &api.PodSpec{},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "empty DNSConfig",
|
||||||
|
podSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{},
|
||||||
|
},
|
||||||
|
oldPodSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{},
|
||||||
|
},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "same legacy DNSConfig",
|
||||||
|
podSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
oldPodSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "update legacy DNSConfig",
|
||||||
|
podSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"baz.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
oldPodSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "same expanded DNSConfig",
|
||||||
|
podSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
"7.expanded.com",
|
||||||
|
"8.expanded.com",
|
||||||
|
"9.expanded.com",
|
||||||
|
"10.expanded.com",
|
||||||
|
"11.expanded.com",
|
||||||
|
"12.expanded.com",
|
||||||
|
"13.expanded.com",
|
||||||
|
"14.expanded.com",
|
||||||
|
"15.expanded.com",
|
||||||
|
"16.expanded.com",
|
||||||
|
"17.expanded.com",
|
||||||
|
"18.expanded.com",
|
||||||
|
"19.expanded.com",
|
||||||
|
"20.expanded.com",
|
||||||
|
"21.expanded.com",
|
||||||
|
"22.expanded.com",
|
||||||
|
"23.expanded.com",
|
||||||
|
"24.expanded.com",
|
||||||
|
"25.expanded.com",
|
||||||
|
"26.expanded.com",
|
||||||
|
"27.expanded.com",
|
||||||
|
"28.expanded.com",
|
||||||
|
"29.expanded.com",
|
||||||
|
"30.expanded.com",
|
||||||
|
"31.expanded.com",
|
||||||
|
"32.expanded.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
oldPodSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
"7.expanded.com",
|
||||||
|
"8.expanded.com",
|
||||||
|
"9.expanded.com",
|
||||||
|
"10.expanded.com",
|
||||||
|
"11.expanded.com",
|
||||||
|
"12.expanded.com",
|
||||||
|
"13.expanded.com",
|
||||||
|
"14.expanded.com",
|
||||||
|
"15.expanded.com",
|
||||||
|
"16.expanded.com",
|
||||||
|
"17.expanded.com",
|
||||||
|
"18.expanded.com",
|
||||||
|
"19.expanded.com",
|
||||||
|
"20.expanded.com",
|
||||||
|
"21.expanded.com",
|
||||||
|
"22.expanded.com",
|
||||||
|
"23.expanded.com",
|
||||||
|
"24.expanded.com",
|
||||||
|
"25.expanded.com",
|
||||||
|
"26.expanded.com",
|
||||||
|
"27.expanded.com",
|
||||||
|
"28.expanded.com",
|
||||||
|
"29.expanded.com",
|
||||||
|
"30.expanded.com",
|
||||||
|
"31.expanded.com",
|
||||||
|
"32.expanded.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "update expanded DNSConfig",
|
||||||
|
podSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
"baz.expanded.com",
|
||||||
|
"8.expanded.com",
|
||||||
|
"9.expanded.com",
|
||||||
|
"10.expanded.com",
|
||||||
|
"11.expanded.com",
|
||||||
|
"12.expanded.com",
|
||||||
|
"13.expanded.com",
|
||||||
|
"14.expanded.com",
|
||||||
|
"15.expanded.com",
|
||||||
|
"16.expanded.com",
|
||||||
|
"17.expanded.com",
|
||||||
|
"18.expanded.com",
|
||||||
|
"19.expanded.com",
|
||||||
|
"20.expanded.com",
|
||||||
|
"21.expanded.com",
|
||||||
|
"22.expanded.com",
|
||||||
|
"23.expanded.com",
|
||||||
|
"24.expanded.com",
|
||||||
|
"25.expanded.com",
|
||||||
|
"26.expanded.com",
|
||||||
|
"27.expanded.com",
|
||||||
|
"28.expanded.com",
|
||||||
|
"29.expanded.com",
|
||||||
|
"30.expanded.com",
|
||||||
|
"31.expanded.com",
|
||||||
|
"32.expanded.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
oldPodSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
"7.expanded.com",
|
||||||
|
"8.expanded.com",
|
||||||
|
"9.expanded.com",
|
||||||
|
"10.expanded.com",
|
||||||
|
"11.expanded.com",
|
||||||
|
"12.expanded.com",
|
||||||
|
"13.expanded.com",
|
||||||
|
"14.expanded.com",
|
||||||
|
"15.expanded.com",
|
||||||
|
"16.expanded.com",
|
||||||
|
"17.expanded.com",
|
||||||
|
"18.expanded.com",
|
||||||
|
"19.expanded.com",
|
||||||
|
"20.expanded.com",
|
||||||
|
"21.expanded.com",
|
||||||
|
"22.expanded.com",
|
||||||
|
"23.expanded.com",
|
||||||
|
"24.expanded.com",
|
||||||
|
"25.expanded.com",
|
||||||
|
"26.expanded.com",
|
||||||
|
"27.expanded.com",
|
||||||
|
"28.expanded.com",
|
||||||
|
"29.expanded.com",
|
||||||
|
"30.expanded.com",
|
||||||
|
"31.expanded.com",
|
||||||
|
"32.expanded.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "update to legacy DNSConfig",
|
||||||
|
podSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"baz.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
oldPodSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
"7.expanded.com",
|
||||||
|
"8.expanded.com",
|
||||||
|
"9.expanded.com",
|
||||||
|
"10.expanded.com",
|
||||||
|
"11.expanded.com",
|
||||||
|
"12.expanded.com",
|
||||||
|
"13.expanded.com",
|
||||||
|
"14.expanded.com",
|
||||||
|
"15.expanded.com",
|
||||||
|
"16.expanded.com",
|
||||||
|
"17.expanded.com",
|
||||||
|
"18.expanded.com",
|
||||||
|
"19.expanded.com",
|
||||||
|
"20.expanded.com",
|
||||||
|
"21.expanded.com",
|
||||||
|
"22.expanded.com",
|
||||||
|
"23.expanded.com",
|
||||||
|
"24.expanded.com",
|
||||||
|
"25.expanded.com",
|
||||||
|
"26.expanded.com",
|
||||||
|
"27.expanded.com",
|
||||||
|
"28.expanded.com",
|
||||||
|
"29.expanded.com",
|
||||||
|
"30.expanded.com",
|
||||||
|
"31.expanded.com",
|
||||||
|
"32.expanded.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
desc: "update to expanded DNSConfig",
|
||||||
|
podSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
"baz.expanded.com",
|
||||||
|
"8.expanded.com",
|
||||||
|
"9.expanded.com",
|
||||||
|
"10.expanded.com",
|
||||||
|
"11.expanded.com",
|
||||||
|
"12.expanded.com",
|
||||||
|
"13.expanded.com",
|
||||||
|
"14.expanded.com",
|
||||||
|
"15.expanded.com",
|
||||||
|
"16.expanded.com",
|
||||||
|
"17.expanded.com",
|
||||||
|
"18.expanded.com",
|
||||||
|
"19.expanded.com",
|
||||||
|
"20.expanded.com",
|
||||||
|
"21.expanded.com",
|
||||||
|
"22.expanded.com",
|
||||||
|
"23.expanded.com",
|
||||||
|
"24.expanded.com",
|
||||||
|
"25.expanded.com",
|
||||||
|
"26.expanded.com",
|
||||||
|
"27.expanded.com",
|
||||||
|
"28.expanded.com",
|
||||||
|
"29.expanded.com",
|
||||||
|
"30.expanded.com",
|
||||||
|
"31.expanded.com",
|
||||||
|
"32.expanded.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
oldPodSpec: &api.PodSpec{
|
||||||
|
DNSConfig: &api.PodDNSConfig{
|
||||||
|
Searches: []string{
|
||||||
|
"foo.com",
|
||||||
|
"bar.io",
|
||||||
|
"3.com",
|
||||||
|
"4.com",
|
||||||
|
"5.com",
|
||||||
|
"6.com",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tc := range testCases {
|
||||||
|
t.Run(tc.desc, func(t *testing.T) {
|
||||||
|
got := haveSameExpandedDNSConfig(tc.podSpec, tc.oldPodSpec)
|
||||||
|
if tc.want != got {
|
||||||
|
t.Errorf("unexpected diff, want: %v, got: %v", tc.want, got)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestDropDisabledPodAffinityTermFields(t *testing.T) {
|
func TestDropDisabledPodAffinityTermFields(t *testing.T) {
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
|
Loading…
Reference in New Issue
Block a user