diff --git a/cmd/kubeadm/app/BUILD b/cmd/kubeadm/app/BUILD index 8f49b8be3a7..ae1a1864c4f 100644 --- a/cmd/kubeadm/app/BUILD +++ b/cmd/kubeadm/app/BUILD @@ -37,6 +37,7 @@ filegroup( "//cmd/kubeadm/app/images:all-srcs", "//cmd/kubeadm/app/master:all-srcs", "//cmd/kubeadm/app/node:all-srcs", + "//cmd/kubeadm/app/phases/addons:all-srcs", "//cmd/kubeadm/app/phases/apiconfig:all-srcs", "//cmd/kubeadm/app/phases/certs:all-srcs", "//cmd/kubeadm/app/phases/kubeconfig:all-srcs", diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go index aad72ee8274..fb69147aef4 100644 --- a/cmd/kubeadm/app/constants/constants.go +++ b/cmd/kubeadm/app/constants/constants.go @@ -16,6 +16,8 @@ limitations under the License. package constants +import "time" + const ( CACertAndKeyBaseName = "ca" CACertName = "ca.crt" @@ -43,4 +45,7 @@ const ( // Constants for what we name our ServiceAccounts with limited access to the cluster in case of RBAC KubeDNSServiceAccountName = "kube-dns" KubeProxyServiceAccountName = "kube-proxy" + + // APICallRetryInterval defines how long kubeadm should wait before retrying a failed API operation + APICallRetryInterval = 500 * time.Millisecond ) diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go index 4b789935160..b337d8ab772 100644 --- a/cmd/kubeadm/app/images/images.go +++ b/cmd/kubeadm/app/images/images.go @@ -24,23 +24,13 @@ import ( ) const ( - KubeEtcdImage = "etcd" - + KubeEtcdImage = "etcd" KubeAPIServerImage = "apiserver" KubeControllerManagerImage = "controller-manager" KubeSchedulerImage = "scheduler" KubeProxyImage = "proxy" - KubeDNSImage = "k8s-dns-kube-dns" - KubeDNSmasqImage = "k8s-dns-dnsmasq" - KubeDNSSidecarImage = "k8s-dns-sidecar" - Pause = "pause" - - gcrPrefix = "gcr.io/google_containers" etcdVersion = "3.0.14-kubeadm" - - kubeDNSVersion = "1.11.0" - pauseVersion = "3.0" ) func GetCoreImage(image string, cfg *kubeadmapi.MasterConfiguration, overrideImage string) string { @@ -56,13 +46,3 @@ func GetCoreImage(image string, cfg *kubeadmapi.MasterConfiguration, overrideIma KubeProxyImage: fmt.Sprintf("%s/%s-%s:%s", repoPrefix, "kube-proxy", runtime.GOARCH, cfg.KubernetesVersion), }[image] } - -func GetAddonImage(image string) string { - repoPrefix := kubeadmapi.GlobalEnvParams.RepositoryPrefix - return map[string]string{ - KubeDNSImage: fmt.Sprintf("%s/%s-%s:%s", repoPrefix, KubeDNSImage, runtime.GOARCH, kubeDNSVersion), - KubeDNSmasqImage: fmt.Sprintf("%s/%s-%s:%s", repoPrefix, KubeDNSmasqImage, runtime.GOARCH, kubeDNSVersion), - KubeDNSSidecarImage: fmt.Sprintf("%s/%s-%s:%s", repoPrefix, KubeDNSSidecarImage, runtime.GOARCH, kubeDNSVersion), - Pause: fmt.Sprintf("%s/%s-%s:%s", repoPrefix, Pause, runtime.GOARCH, pauseVersion), - }[image] -} diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go index 9fa8f8a8337..f01b8903c8d 100644 --- a/cmd/kubeadm/app/images/images_test.go +++ b/cmd/kubeadm/app/images/images_test.go @@ -30,7 +30,10 @@ type getCoreImageTest struct { o string } -const testversion = "1" +const ( + testversion = "1" + gcrPrefix = "gcr.io/google_containers" +) func TestGetCoreImage(t *testing.T) { var imageTest = []struct { @@ -75,38 +78,3 @@ func TestGetCoreImage(t *testing.T) { } } } - -func TestGetAddonImage(t *testing.T) { - var imageTest = []struct { - t string - expected string - }{ - {"matches nothing", ""}, - { - KubeDNSImage, - fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, KubeDNSImage, runtime.GOARCH, kubeDNSVersion), - }, - { - KubeDNSmasqImage, - fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, KubeDNSmasqImage, runtime.GOARCH, kubeDNSVersion), - }, - { - KubeDNSSidecarImage, - fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, KubeDNSSidecarImage, runtime.GOARCH, kubeDNSVersion), - }, - { - Pause, - fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, Pause, runtime.GOARCH, pauseVersion), - }, - } - for _, it := range imageTest { - actual := GetAddonImage(it.t) - if actual != it.expected { - t.Errorf( - "failed GetAddonImage:\n\texpected: %s\n\t actual: %s", - it.expected, - actual, - ) - } - } -} diff --git a/cmd/kubeadm/app/master/BUILD b/cmd/kubeadm/app/master/BUILD index e010f9da6e8..902b610b5d4 100644 --- a/cmd/kubeadm/app/master/BUILD +++ b/cmd/kubeadm/app/master/BUILD @@ -11,29 +11,28 @@ load( go_library( name = "go_default_library", srcs = [ - "addons.go", "apiclient.go", "discovery.go", "manifests.go", "selfhosted.go", + "templates.go", "tokens.go", ], tags = ["automanaged"], deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", - "//cmd/kubeadm/app/apis/kubeadm/v1alpha1:go_default_library", "//cmd/kubeadm/app/constants:go_default_library", "//cmd/kubeadm/app/images:go_default_library", - "//cmd/kubeadm/app/phases/kubeconfig:go_default_library", "//cmd/kubeadm/app/util:go_default_library", + "//pkg/api:go_default_library", "//pkg/api/v1:go_default_library", "//pkg/apis/extensions/v1beta1:go_default_library", "//pkg/client/clientset_generated/clientset:go_default_library", "//pkg/kubectl/cmd/util:go_default_library", - "//pkg/registry/core/service/ipallocator:go_default_library", "//vendor:k8s.io/apimachinery/pkg/api/errors", "//vendor:k8s.io/apimachinery/pkg/api/resource", "//vendor:k8s.io/apimachinery/pkg/apis/meta/v1", + "//vendor:k8s.io/apimachinery/pkg/runtime", "//vendor:k8s.io/apimachinery/pkg/util/intstr", "//vendor:k8s.io/apimachinery/pkg/util/uuid", "//vendor:k8s.io/apimachinery/pkg/util/wait", @@ -44,12 +43,7 @@ go_library( go_test( name = "go_default_test", - srcs = [ - "addons_test.go", - "apiclient_test.go", - "discovery_test.go", - "manifests_test.go", - ], + srcs = ["manifests_test.go"], library = ":go_default_library", tags = ["automanaged"], deps = [ diff --git a/cmd/kubeadm/app/master/selfhosted.go b/cmd/kubeadm/app/master/selfhosted.go index df8c8703b07..26c92d21964 100644 --- a/cmd/kubeadm/app/master/selfhosted.go +++ b/cmd/kubeadm/app/master/selfhosted.go @@ -27,6 +27,7 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/wait" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/kubernetes/cmd/kubeadm/app/images" "k8s.io/kubernetes/pkg/api/v1" ext "k8s.io/kubernetes/pkg/apis/extensions/v1beta1" @@ -79,7 +80,7 @@ func launchSelfHostedAPIServer(cfg *kubeadmapi.MasterConfiguration, client *clie return fmt.Errorf("failed to create self-hosted %q daemon set [%v]", kubeAPIServer, err) } - wait.PollInfinite(apiCallRetryInterval, func() (bool, error) { + wait.PollInfinite(kubeadmconstants.APICallRetryInterval, func() (bool, error) { // TODO: This might be pointless, checking the pods is probably enough. // It does however get us a count of how many there should be which may be useful // with HA. @@ -157,7 +158,7 @@ func launchSelfHostedScheduler(cfg *kubeadmapi.MasterConfiguration, client *clie // waitForPodsWithLabel will lookup pods with the given label and wait until they are all // reporting status as running. func waitForPodsWithLabel(client *clientset.Clientset, appLabel string, mustBeRunning bool) { - wait.PollInfinite(apiCallRetryInterval, func() (bool, error) { + wait.PollInfinite(kubeadmconstants.APICallRetryInterval, func() (bool, error) { // TODO: Do we need a stronger label link than this? listOpts := metav1.ListOptions{LabelSelector: fmt.Sprintf("k8s-app=%s", appLabel)} apiPods, err := client.Pods(metav1.NamespaceSystem).List(listOpts) diff --git a/cmd/kubeadm/app/util/template_test.go b/cmd/kubeadm/app/util/template_test.go index ba65b7421d3..3a00e05e601 100644 --- a/cmd/kubeadm/app/util/template_test.go +++ b/cmd/kubeadm/app/util/template_test.go @@ -74,7 +74,7 @@ func TestParseTemplate(t *testing.T) { outbytes, err := ParseTemplate(tt.template, tt.data) if tt.errExpected != (err != nil) { t.Errorf( - "failed TestParseTemplate:\n\texpected err: %s\n\t actual: %s", + "failed TestParseTemplate:\n\texpected err: %t\n\t actual: %s", tt.errExpected, err, )