Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions e2e/scenario/node_config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,29 @@ func TestKubeletConfigFileExplicitOptOut(t *testing.T) {
}
}

func TestLocalDNSKubeletSettingsPreserveConfigFileParity(t *testing.T) {
for _, registered := range List() {
if !strings.HasPrefix(registered.Name, "LocalDNS/") &&
!strings.HasPrefix(registered.Name, "LocalDNSNoHostsPlugin/") {
continue
}
t.Run(registered.Name, func(t *testing.T) {
nbc, err := baseTemplateLinux("eastus", "1.34.0", "amd64")
require.NoError(t, err)
registered.BootstrapConfigMutator(nil, nbc)
cfg, err := nbcToAKSNodeConfigV1(nbc)
require.NoError(t, err)
require.True(t, cfg.KubeletConfig.EnableKubeletConfigFile)
require.NotContains(t, cfg.KubeletConfig.KubeletFlags, "--cluster-dns")
registered.AKSNodeConfigMutator(nil, cfg)
require.NotContains(t, cfg.KubeletConfig.KubeletFlags, "--cluster-dns",
"LocalDNS must not reintroduce a flag translated into the config file")
require.Equal(t, []string{localDNSClusterListenerIP},
cfg.KubeletConfig.KubeletConfigFileConfig.ClusterDns)
})
}
}

func TestLocalDNSForwardsToClusterDNSServiceIP(t *testing.T) {
assertCoreDNSForwarding := func(t *testing.T, corefile string) {
t.Helper()
Expand Down
9 changes: 5 additions & 4 deletions e2e/scenario/scenario_localdns_fallback.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@ func init() {
},
AKSNodeConfigMutator: func(_ *Cluster, config *aksnodeconfigv1.Configuration) {
config.LocalDnsProfile.EnableLocalDns = true
config.KubeletConfig.KubeletFlags["--cluster-dns"] = localDNSClusterListenerIP
// See the note in scenario_localdns_hosts.go: the flag alone is not
// parity with the CSE path, and the env parity validator fails on it.
config.KubeletConfig.KubeletConfigFileConfig.ClusterDns = []string{localDNSClusterListenerIP}
if config.KubeletConfig.EnableKubeletConfigFile {
config.KubeletConfig.KubeletConfigFileConfig.ClusterDns = []string{localDNSClusterListenerIP}
} else {
config.KubeletConfig.KubeletFlags["--cluster-dns"] = localDNSClusterListenerIP
}
},
Validator: func(ctx context.Context, s *Scenario) error {
return validateLocalDNSCorefileStartupFailure(ctx, s)
Expand Down
14 changes: 5 additions & 9 deletions e2e/scenario/scenario_localdns_hosts.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,15 +52,11 @@ func init() {
AKSNodeConfigMutator: func(_ *Cluster, config *aksnodeconfigv1.Configuration) {
config.LocalDnsProfile.EnableHostsPlugin = true
config.LocalDnsProfile.EnableLocalDns = true
config.KubeletConfig.KubeletFlags["--cluster-dns"] = localDNSClusterListenerIP
// The flag alone is not parity with the CSE path. '--cluster-dns' is in
// pkg/agent.TranslatedKubeletConfigFlags, so on the CSE path setting the
// flag also rewrites KubeletConfiguration.clusterDNS in the kubelet config
// file. On the ANC path the flag and the config-file field are independent
// proto fields, so the flag alone leaves clusterDNS at the cluster default
// and the two paths emit different KUBELET_CONFIG_FILE_CONTENT -- which the
// provision-config/nbc-cmd env parity validator fails on.
config.KubeletConfig.KubeletConfigFileConfig.ClusterDns = []string{localDNSClusterListenerIP}
if config.KubeletConfig.EnableKubeletConfigFile {
config.KubeletConfig.KubeletConfigFileConfig.ClusterDns = []string{localDNSClusterListenerIP}
} else {
config.KubeletConfig.KubeletFlags["--cluster-dns"] = localDNSClusterListenerIP
}
},
VMConfigMutator: tt.vmConfigMutator,
Validator: func(ctx context.Context, s *Scenario) error {
Expand Down
Loading