From 97ba90cbfb4841e24a7cf5524d2147d7371f34b5 Mon Sep 17 00:00:00 2001 From: Yuvaraj Kakaraparthi Date: Tue, 1 Jun 2021 11:57:37 -0700 Subject: [PATCH] use subpath for coredns only for default repository --- cmd/kubeadm/app/constants/constants.go | 2 +- cmd/kubeadm/app/images/images.go | 5 +++ cmd/kubeadm/app/images/images_test.go | 50 ++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go index c3aec37b435..4b965bbfd93 100644 --- a/cmd/kubeadm/app/constants/constants.go +++ b/cmd/kubeadm/app/constants/constants.go @@ -326,7 +326,7 @@ const ( CoreDNSDeploymentName = "coredns" // CoreDNSImageName specifies the name of the image for CoreDNS add-on - CoreDNSImageName = "coredns/coredns" + CoreDNSImageName = "coredns" // CoreDNSVersion is the version of CoreDNS to be deployed if it is used CoreDNSVersion = "v1.8.0" diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go index 560c6afc49d..10d8e479cb3 100644 --- a/cmd/kubeadm/app/images/images.go +++ b/cmd/kubeadm/app/images/images.go @@ -21,6 +21,7 @@ import ( "k8s.io/klog/v2" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" ) @@ -46,6 +47,10 @@ func GetDNSImage(cfg *kubeadmapi.ClusterConfiguration) string { if cfg.DNS.ImageRepository != "" { dnsImageRepository = cfg.DNS.ImageRepository } + // Handle the renaming of the official image from "k8s.gcr.io/coredns" to "k8s.gcr.io/coredns/coredns + if dnsImageRepository == kubeadmapiv1beta2.DefaultImageRepository { + dnsImageRepository = fmt.Sprintf("%s/coredns", dnsImageRepository) + } // DNS uses an imageTag that corresponds to the DNS version matching the Kubernetes version dnsImageTag := constants.GetDNSVersion(cfg.DNS.Type) diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go index fb4cfd8aa08..0002f56f6ad 100644 --- a/cmd/kubeadm/app/images/images_test.go +++ b/cmd/kubeadm/app/images/images_test.go @@ -22,6 +22,7 @@ import ( "testing" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" "k8s.io/kubernetes/cmd/kubeadm/app/constants" ) @@ -229,3 +230,52 @@ func TestGetAllImages(t *testing.T) { }) } } + +func TestGetDNSImage(t *testing.T) { + var tests = []struct { + expected string + cfg *kubeadmapi.ClusterConfiguration + }{ + { + expected: "foo.io/coredns:v1.8.0", + cfg: &kubeadmapi.ClusterConfiguration{ + ImageRepository: "foo.io", + DNS: kubeadmapi.DNS{ + Type: kubeadmapi.CoreDNS, + }, + }, + }, + { + expected: kubeadmapiv1beta2.DefaultImageRepository + "/coredns/coredns:v1.8.0", + cfg: &kubeadmapi.ClusterConfiguration{ + ImageRepository: kubeadmapiv1beta2.DefaultImageRepository, + DNS: kubeadmapi.DNS{ + Type: kubeadmapi.CoreDNS, + }, + }, + }, + { + expected: "foo.io/coredns/coredns:v1.8.0", + cfg: &kubeadmapi.ClusterConfiguration{ + ImageRepository: "foo.io", + DNS: kubeadmapi.DNS{ + Type: kubeadmapi.CoreDNS, + ImageMeta: kubeadmapi.ImageMeta{ + ImageRepository: "foo.io/coredns", + }, + }, + }, + }, + } + + for _, test := range tests { + actual := GetDNSImage(test.cfg) + if actual != test.expected { + t.Errorf( + "failed to GetDNSImage:\n\texpected: %s\n\t actual: %s", + test.expected, + actual, + ) + } + } +}