Skip to content

Commit bf94f27

Browse files
authored
Merge pull request kubernetes#92716 from rajansandeep/removefederation
[kubeadm]: Remove kube-dns translation for federation
2 parents 7de3f93 + 4dc635d commit bf94f27

File tree

4 files changed

+29
-125
lines changed

4 files changed

+29
-125
lines changed

cmd/kubeadm/app/phases/addons/dns/dns.go

Lines changed: 1 addition & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ const (
5151
KubeDNSServiceAccountName = "kube-dns"
5252
kubeDNSStubDomain = "stubDomains"
5353
kubeDNSUpstreamNameservers = "upstreamNameservers"
54-
kubeDNSFederation = "federations"
5554
unableToDecodeCoreDNS = "unable to decode CoreDNS"
5655
coreDNSReplicas = 2
5756
kubeDNSReplicas = 1
@@ -226,16 +225,11 @@ func coreDNSAddon(cfg *kubeadmapi.ClusterConfiguration, client clientset.Interfa
226225
return err
227226
}
228227
coreDNSDomain := cfg.Networking.DNSDomain
229-
federations, err := translateFederationsofKubeDNSToCoreDNS(kubeDNSFederation, coreDNSDomain, kubeDNSConfigMap)
230-
if err != nil {
231-
return err
232-
}
233228

234229
// Get the config file for CoreDNS
235-
coreDNSConfigMapBytes, err := kubeadmutil.ParseTemplate(CoreDNSConfigMap, struct{ DNSDomain, UpstreamNameserver, Federation, StubDomain string }{
230+
coreDNSConfigMapBytes, err := kubeadmutil.ParseTemplate(CoreDNSConfigMap, struct{ DNSDomain, UpstreamNameserver, StubDomain string }{
236231
DNSDomain: coreDNSDomain,
237232
UpstreamNameserver: upstreamNameserver,
238-
Federation: federations,
239233
StubDomain: stubDomain,
240234
})
241235
if err != nil {
@@ -580,47 +574,6 @@ func translateUpstreamNameServerOfKubeDNSToUpstreamForwardCoreDNS(dataField stri
580574
return "/etc/resolv.conf", nil
581575
}
582576

583-
// translateFederationsofKubeDNSToCoreDNS translates Federations Data in kube-dns ConfigMap
584-
// to Federation for CoreDNS Corefile.
585-
func translateFederationsofKubeDNSToCoreDNS(dataField, coreDNSDomain string, kubeDNSConfigMap *v1.ConfigMap) (string, error) {
586-
if kubeDNSConfigMap == nil {
587-
return "", nil
588-
}
589-
590-
if federation, ok := kubeDNSConfigMap.Data[dataField]; ok {
591-
var (
592-
federationStanza []interface{}
593-
body [][]string
594-
)
595-
federationData := make(map[string]string)
596-
597-
err := json.Unmarshal([]byte(federation), &federationData)
598-
if err != nil {
599-
return "", errors.Wrap(err, "failed to parse JSON from kube-dns ConfigMap")
600-
}
601-
fStanza := map[string]interface{}{}
602-
603-
for name, domain := range federationData {
604-
body = append(body, []string{name, domain})
605-
}
606-
federationStanza = append(federationStanza, fStanza)
607-
fStanza["keys"] = []string{"federation " + coreDNSDomain}
608-
fStanza["body"] = body
609-
stanzasBytes, err := json.Marshal(federationStanza)
610-
if err != nil {
611-
return "", err
612-
}
613-
614-
corefileStanza, err := caddyfile.FromJSON(stanzasBytes)
615-
if err != nil {
616-
return "", err
617-
}
618-
619-
return prepCorefileFormat(string(corefileStanza), 8), nil
620-
}
621-
return "", nil
622-
}
623-
624577
// prepCorefileFormat indents the output of the Corefile caddytext and replaces tabs with spaces
625578
// to neatly format the configmap, making it readable.
626579
func prepCorefileFormat(s string, indentation int) string {

cmd/kubeadm/app/phases/addons/dns/dns_test.go

Lines changed: 1 addition & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,8 @@ func TestCompileManifests(t *testing.T) {
139139
{
140140
name: "CoreDNSConfigMap manifest",
141141
manifest: CoreDNSConfigMap,
142-
data: struct{ DNSDomain, Federation, UpstreamNameserver, StubDomain string }{
142+
data: struct{ DNSDomain, UpstreamNameserver, StubDomain string }{
143143
DNSDomain: "foo",
144-
Federation: "foo",
145144
UpstreamNameserver: "foo",
146145
StubDomain: "foo",
147146
},
@@ -496,80 +495,6 @@ func TestTranslateUpstreamKubeDNSToCoreDNS(t *testing.T) {
496495
}
497496
}
498497

499-
func TestTranslateFederationKubeDNSToCoreDNS(t *testing.T) {
500-
testCases := []struct {
501-
name string
502-
configMap *v1.ConfigMap
503-
expectOne string
504-
expectTwo string
505-
}{
506-
{
507-
name: "valid call",
508-
configMap: &v1.ConfigMap{
509-
ObjectMeta: metav1.ObjectMeta{
510-
Name: "kube-dns",
511-
Namespace: "kube-system",
512-
},
513-
Data: map[string]string{
514-
"federations": `{"foo" : "foo.feddomain.com", "bar" : "bar.feddomain.com"}`,
515-
"stubDomains": `{"foo.com" : ["1.2.3.4:5300","3.3.3.3"], "my.cluster.local" : ["2.3.4.5"]}`,
516-
"upstreamNameservers": `["8.8.8.8", "8.8.4.4"]`,
517-
},
518-
},
519-
520-
expectOne: `
521-
federation cluster.local {
522-
foo foo.feddomain.com
523-
bar bar.feddomain.com
524-
}`,
525-
expectTwo: `
526-
federation cluster.local {
527-
bar bar.feddomain.com
528-
foo foo.feddomain.com
529-
}`,
530-
},
531-
{
532-
name: "empty data",
533-
configMap: &v1.ConfigMap{
534-
ObjectMeta: metav1.ObjectMeta{
535-
Name: "kubedns",
536-
Namespace: "kube-system",
537-
},
538-
},
539-
540-
expectOne: "",
541-
expectTwo: "",
542-
},
543-
{
544-
name: "missing federations data",
545-
configMap: &v1.ConfigMap{
546-
ObjectMeta: metav1.ObjectMeta{
547-
Name: "kube-dns",
548-
Namespace: "kube-system",
549-
},
550-
Data: map[string]string{
551-
"stubDomains": `{"foo.com" : ["1.2.3.4:5300"], "my.cluster.local" : ["2.3.4.5"]}`,
552-
"upstreamNameservers": `["8.8.8.8", "8.8.4.4"]`,
553-
},
554-
},
555-
556-
expectOne: "",
557-
expectTwo: "",
558-
},
559-
}
560-
for _, testCase := range testCases {
561-
t.Run(testCase.name, func(t *testing.T) {
562-
out, err := translateFederationsofKubeDNSToCoreDNS(kubeDNSFederation, "cluster.local", testCase.configMap)
563-
if err != nil {
564-
t.Errorf("unexpected error: %v", err)
565-
}
566-
if !strings.EqualFold(out, testCase.expectOne) && !strings.EqualFold(out, testCase.expectTwo) {
567-
t.Errorf("expected to find %q or %q in output: %q", testCase.expectOne, testCase.expectTwo, out)
568-
}
569-
})
570-
}
571-
}
572-
573498
func TestDeploymentsHaveSystemClusterCriticalPriorityClassName(t *testing.T) {
574499
replicas := int32(coreDNSReplicas)
575500
testCases := []struct {

cmd/kubeadm/app/phases/addons/dns/manifests.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ data:
318318
pods insecure
319319
fallthrough in-addr.arpa ip6.arpa
320320
ttl 30
321-
}{{ .Federation }}
321+
}
322322
prometheus :9153
323323
forward . {{ .UpstreamNameserver }}
324324
cache 30

cmd/kubeadm/app/phases/upgrade/preflight.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,15 @@ limitations under the License.
1717
package upgrade
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"os"
2223

2324
"github.com/coredns/corefile-migration/migration"
2425
"github.com/pkg/errors"
2526

27+
apierrors "k8s.io/apimachinery/pkg/api/errors"
28+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2629
"k8s.io/apimachinery/pkg/util/sets"
2730
clientset "k8s.io/client-go/kubernetes"
2831
"k8s.io/klog/v2"
@@ -68,6 +71,11 @@ func RunCoreDNSMigrationCheck(client clientset.Interface, ignorePreflightErrors
6871
client: client,
6972
f: checkMigration,
7073
},
74+
&CoreDNSCheck{
75+
name: "kubeDNSTranslation",
76+
client: client,
77+
f: checkKubeDNSConfigMap,
78+
},
7179
}
7280

7381
return preflight.RunChecks(migrationChecks, os.Stderr, ignorePreflightErrors)
@@ -114,3 +122,21 @@ func checkMigration(client clientset.Interface) error {
114122
}
115123
return nil
116124
}
125+
126+
// checkKubeDNSConfigMap checks if the translation of kube-dns to CoreDNS ConfigMap is supported
127+
func checkKubeDNSConfigMap(client clientset.Interface) error {
128+
kubeDNSConfigMap, err := client.CoreV1().ConfigMaps(metav1.NamespaceSystem).Get(context.TODO(), kubeadmconstants.KubeDNSConfigMap, metav1.GetOptions{})
129+
if err != nil && !apierrors.IsNotFound(err) {
130+
return err
131+
}
132+
if kubeDNSConfigMap == nil {
133+
return nil
134+
}
135+
136+
if _, ok := kubeDNSConfigMap.Data["federations"]; ok {
137+
klog.V(1).Infoln("CoreDNS no longer supports Federation and " +
138+
"hence will not translate the federation data from kube-dns to CoreDNS ConfigMap")
139+
return errors.Wrap(err, "kube-dns Federation data will not be translated")
140+
}
141+
return nil
142+
}

0 commit comments

Comments
 (0)