diff --git a/cluster.yml b/cluster.yml index c8e246e4..bada98a3 100644 --- a/cluster.yml +++ b/cluster.yml @@ -74,11 +74,11 @@ system_images: alpine: alpine:latest nginx_proxy: rancher/rke-nginx-proxy:v0.1.1 cert_downloader: rancher/rke-cert-deployer:v0.1.1 - service_sidekick_image: rancher/rke-service-sidekick:v0.1.0 - kubedns_image: gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5 - dnsmasq_image: gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5 - kubedns_sidecar_image: gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5 - kubedns_autoscaler_image: gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0 + kubernetes_services_sidecar: rancher/rke-service-sidekick:v0.1.0 + kubedns: gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5 + dnsmasq: gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5 + kubedns_sidecar: gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5 + kubedns_autoscaler: gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0 # all addon manifests MUST specify a namespace addons: |- diff --git a/cluster/addons.go b/cluster/addons.go index c7d16c3d..cf88c9d9 100644 --- a/cluster/addons.go +++ b/cluster/addons.go @@ -40,10 +40,10 @@ func (c *Cluster) deployKubeDNS(ctx context.Context) error { kubeDNSConfig := map[string]string{ addons.KubeDNSServer: c.ClusterDNSServer, addons.KubeDNSClusterDomain: c.ClusterDomain, - addons.KubeDNSImage: c.SystemImages[KubeDNSImage], - addons.DNSMasqImage: c.SystemImages[DNSMasqImage], - addons.KubeDNSSidecarImage: c.SystemImages[KubeDNSSidecarImage], - addons.KubeDNSAutoScalerImage: c.SystemImages[KubeDNSAutoScalerImage], + addons.KubeDNSImage: c.SystemImages.KubeDNS, + addons.DNSMasqImage: c.SystemImages.DNSmasq, + addons.KubeDNSSidecarImage: c.SystemImages.KubeDNSSidecar, + addons.KubeDNSAutoScalerImage: c.SystemImages.KubeDNSAutoscaler, } kubeDNSYaml, err := addons.GetKubeDNSManifest(kubeDNSConfig) if err != nil { diff --git a/cluster/certificates.go b/cluster/certificates.go index 75b43683..31b5523c 100644 --- a/cluster/certificates.go +++ b/cluster/certificates.go @@ -22,7 +22,7 @@ func SetUpAuthentication(ctx context.Context, kubeCluster, currentCluster *Clust kubeCluster.Certificates = currentCluster.Certificates } else { log.Infof(ctx, "[certificates] Attempting to recover certificates from backup on host [%s]", kubeCluster.EtcdHosts[0].Address) - kubeCluster.Certificates, err = pki.FetchCertificatesFromHost(ctx, kubeCluster.EtcdHosts, kubeCluster.EtcdHosts[0], kubeCluster.SystemImages[AplineImage], kubeCluster.LocalKubeConfigPath) + kubeCluster.Certificates, err = pki.FetchCertificatesFromHost(ctx, kubeCluster.EtcdHosts, kubeCluster.EtcdHosts[0], kubeCluster.SystemImages.Alpine, kubeCluster.LocalKubeConfigPath) if err != nil { return err } @@ -42,7 +42,7 @@ func SetUpAuthentication(ctx context.Context, kubeCluster, currentCluster *Clust return fmt.Errorf("Failed to generate Kubernetes certificates: %v", err) } log.Infof(ctx, "[certificates] Temporarily saving certs to etcd host [%s]", kubeCluster.EtcdHosts[0].Address) - if err := pki.DeployCertificatesOnHost(ctx, kubeCluster.EtcdHosts, kubeCluster.EtcdHosts[0], kubeCluster.Certificates, kubeCluster.SystemImages[CertDownloaderImage], pki.TempCertPath); err != nil { + if err := pki.DeployCertificatesOnHost(ctx, kubeCluster.EtcdHosts, kubeCluster.EtcdHosts[0], kubeCluster.Certificates, kubeCluster.SystemImages.CertDownloader, pki.TempCertPath); err != nil { return err } log.Infof(ctx, "[certificates] Saved certs to etcd host [%s]", kubeCluster.EtcdHosts[0].Address) diff --git a/cluster/cluster.go b/cluster/cluster.go index e92fc6db..ef428e42 100644 --- a/cluster/cluster.go +++ b/cluster/cluster.go @@ -43,14 +43,6 @@ const ( UpdateStateTimeout = 30 GetStateTimeout = 30 KubernetesClientTimeOut = 30 - AplineImage = "alpine" - NginxProxyImage = "nginx_proxy" - CertDownloaderImage = "cert_downloader" - KubeDNSImage = "kubedns_image" - DNSMasqImage = "dnsmasq_image" - KubeDNSSidecarImage = "kubedns_sidecar_image" - KubeDNSAutoScalerImage = "kubedns_autoscaler_image" - ServiceSidekickImage = "service_sidekick_image" NoneAuthorizationMode = "none" LocalNodeAddress = "127.0.0.1" LocalNodeHostname = "localhost" @@ -66,7 +58,7 @@ func (c *Cluster) DeployControlPlane(ctx context.Context) error { if err := services.RunControlPlane(ctx, c.ControlPlaneHosts, c.EtcdHosts, c.Services, - c.SystemImages[ServiceSidekickImage], + c.SystemImages.KubernetesServicesSidecar, c.Authorization.Mode, c.LocalConnDialerFactory); err != nil { return fmt.Errorf("[controlPlane] Failed to bring up Control Plane: %v", err) @@ -84,8 +76,8 @@ func (c *Cluster) DeployWorkerPlane(ctx context.Context) error { c.WorkerHosts, c.EtcdHosts, c.Services, - c.SystemImages[NginxProxyImage], - c.SystemImages[ServiceSidekickImage], + c.SystemImages.NginxProxy, + c.SystemImages.KubernetesServicesSidecar, c.LocalConnDialerFactory); err != nil { return fmt.Errorf("[workerPlane] Failed to bring up Worker Plane: %v", err) } @@ -189,22 +181,19 @@ func (c *Cluster) setClusterServicesDefaults() { } func (c *Cluster) setClusterImageDefaults() { - if c.SystemImages == nil { - // don't break if the user didn't define rke_images - c.SystemImages = make(map[string]string) - } - systemImagesDefaultsMap := map[string]string{ - AplineImage: DefaultAplineImage, - NginxProxyImage: DefaultNginxProxyImage, - CertDownloaderImage: DefaultCertDownloaderImage, - KubeDNSImage: DefaultKubeDNSImage, - DNSMasqImage: DefaultDNSMasqImage, - KubeDNSSidecarImage: DefaultKubeDNSSidecarImage, - KubeDNSAutoScalerImage: DefaultKubeDNSAutoScalerImage, - ServiceSidekickImage: DefaultServiceSidekickImage, + + systemImagesDefaultsMap := map[*string]string{ + &c.SystemImages.Alpine: DefaultAplineImage, + &c.SystemImages.NginxProxy: DefaultNginxProxyImage, + &c.SystemImages.CertDownloader: DefaultCertDownloaderImage, + &c.SystemImages.KubeDNS: DefaultKubeDNSImage, + &c.SystemImages.KubeDNSSidecar: DefaultKubeDNSSidecarImage, + &c.SystemImages.DNSmasq: DefaultDNSmasqImage, + &c.SystemImages.KubeDNSAutoscaler: DefaultKubeDNSAutoScalerImage, + &c.SystemImages.KubernetesServicesSidecar: DefaultKubernetesServicesSidecarImage, } for k, v := range systemImagesDefaultsMap { - setDefaultIfEmptyMapValue(c.SystemImages, k, v) + setDefaultIfEmpty(k, v) } } diff --git a/cluster/defaults.go b/cluster/defaults.go index 4b89e188..4d9d3889 100644 --- a/cluster/defaults.go +++ b/cluster/defaults.go @@ -17,11 +17,11 @@ const ( DefaultNetworkPlugin = "flannel" DefaultNetworkCloudProvider = "none" - DefaultInfraContainerImage = "gcr.io/google_containers/pause-amd64:3.0" - DefaultAplineImage = "alpine:latest" - DefaultNginxProxyImage = "rancher/rke-nginx-proxy:v0.1.1" - DefaultCertDownloaderImage = "rancher/rke-cert-deployer:v0.1.1" - DefaultServiceSidekickImage = "rancher/rke-service-sidekick:v0.1.0" + DefaultInfraContainerImage = "gcr.io/google_containers/pause-amd64:3.0" + DefaultAplineImage = "alpine:latest" + DefaultNginxProxyImage = "rancher/rke-nginx-proxy:v0.1.1" + DefaultCertDownloaderImage = "rancher/rke-cert-deployer:v0.1.1" + DefaultKubernetesServicesSidecarImage = "rancher/rke-service-sidekick:v0.1.0" DefaultEtcdImage = "quay.io/coreos/etcd:latest" DefaultK8sImage = "rancher/k8s:v1.8.5-rancher4" @@ -42,7 +42,7 @@ const ( DefaultCanalFlannelImage = "quay.io/coreos/flannel:v0.9.1" DefaultKubeDNSImage = "gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5" - DefaultDNSMasqImage = "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5" + DefaultDNSmasqImage = "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5" DefaultKubeDNSSidecarImage = "gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5" DefaultKubeDNSAutoScalerImage = "gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0" ) diff --git a/cluster/hosts.go b/cluster/hosts.go index 5a4f7349..1dc51387 100644 --- a/cluster/hosts.go +++ b/cluster/hosts.go @@ -72,14 +72,14 @@ func (c *Cluster) InvertIndexHosts() error { func (c *Cluster) SetUpHosts(ctx context.Context) error { if c.Authentication.Strategy == X509AuthenticationProvider { log.Infof(ctx, "[certificates] Deploying kubernetes certificates to Cluster nodes") - if err := pki.DeployCertificatesOnMasters(ctx, c.ControlPlaneHosts, c.Certificates, c.SystemImages[CertDownloaderImage]); err != nil { + if err := pki.DeployCertificatesOnMasters(ctx, c.ControlPlaneHosts, c.Certificates, c.SystemImages.CertDownloader); err != nil { return err } - if err := pki.DeployCertificatesOnWorkers(ctx, c.WorkerHosts, c.Certificates, c.SystemImages[CertDownloaderImage]); err != nil { + if err := pki.DeployCertificatesOnWorkers(ctx, c.WorkerHosts, c.Certificates, c.SystemImages.CertDownloader); err != nil { return err } // Deploying etcd certificates - if err := pki.DeployCertificatesOnEtcd(ctx, c.EtcdHosts, c.Certificates, c.SystemImages[CertDownloaderImage]); err != nil { + if err := pki.DeployCertificatesOnEtcd(ctx, c.EtcdHosts, c.Certificates, c.SystemImages.CertDownloader); err != nil { return err } diff --git a/cluster/network.go b/cluster/network.go index b75ba35a..7d59fc71 100644 --- a/cluster/network.go +++ b/cluster/network.go @@ -343,7 +343,7 @@ func (c *Cluster) deployListenerOnPlane(ctx context.Context, portList []string, } func (c *Cluster) deployListener(ctx context.Context, host *hosts.Host, portList []string, containerName string) error { imageCfg := &container.Config{ - Image: c.SystemImages[AplineImage], + Image: c.SystemImages.Alpine, Cmd: []string{ "nc", "-kl", @@ -412,7 +412,7 @@ func (c *Cluster) runServicePortChecks(ctx context.Context) error { for _, host := range c.EtcdHosts { runHost := host errgrp.Go(func() error { - return checkPlaneTCPPortsFromHost(ctx, runHost, etcdPortList, c.EtcdHosts, c.SystemImages[AplineImage]) + return checkPlaneTCPPortsFromHost(ctx, runHost, etcdPortList, c.EtcdHosts, c.SystemImages.Alpine) }) } if err := errgrp.Wait(); err != nil { @@ -424,7 +424,7 @@ func (c *Cluster) runServicePortChecks(ctx context.Context) error { for _, host := range c.ControlPlaneHosts { runHost := host errgrp.Go(func() error { - return checkPlaneTCPPortsFromHost(ctx, runHost, etcdPortList, c.EtcdHosts, c.SystemImages[AplineImage]) + return checkPlaneTCPPortsFromHost(ctx, runHost, etcdPortList, c.EtcdHosts, c.SystemImages.Alpine) }) } if err := errgrp.Wait(); err != nil { @@ -434,7 +434,7 @@ func (c *Cluster) runServicePortChecks(ctx context.Context) error { for _, host := range c.WorkerHosts { runHost := host errgrp.Go(func() error { - return checkPlaneTCPPortsFromHost(ctx, runHost, etcdPortList, c.EtcdHosts, c.SystemImages[AplineImage]) + return checkPlaneTCPPortsFromHost(ctx, runHost, etcdPortList, c.EtcdHosts, c.SystemImages.Alpine) }) } if err := errgrp.Wait(); err != nil { @@ -448,7 +448,7 @@ func (c *Cluster) runServicePortChecks(ctx context.Context) error { for _, host := range c.ControlPlaneHosts { runHost := host errgrp.Go(func() error { - return checkPlaneTCPPortsFromHost(ctx, runHost, workerPortList, c.WorkerHosts, c.SystemImages[AplineImage]) + return checkPlaneTCPPortsFromHost(ctx, runHost, workerPortList, c.WorkerHosts, c.SystemImages.Alpine) }) } if err := errgrp.Wait(); err != nil { @@ -462,7 +462,7 @@ func (c *Cluster) runServicePortChecks(ctx context.Context) error { for _, host := range c.WorkerHosts { runHost := host errgrp.Go(func() error { - return checkPlaneTCPPortsFromHost(ctx, runHost, controlPlanePortList, c.ControlPlaneHosts, c.SystemImages[AplineImage]) + return checkPlaneTCPPortsFromHost(ctx, runHost, controlPlanePortList, c.ControlPlaneHosts, c.SystemImages.Alpine) }) } return errgrp.Wait() diff --git a/cluster/reconcile.go b/cluster/reconcile.go index d3c952a8..d6d54d3e 100644 --- a/cluster/reconcile.go +++ b/cluster/reconcile.go @@ -56,7 +56,7 @@ func reconcileWorker(ctx context.Context, currentCluster, kubeCluster *Cluster, return fmt.Errorf("Failed to delete worker node %s from cluster", toDeleteHost.Address) } // attempting to clean services/files on the host - if err := reconcileHost(ctx, toDeleteHost, true, false, currentCluster.SystemImages[AplineImage], currentCluster.DockerDialerFactory); err != nil { + if err := reconcileHost(ctx, toDeleteHost, true, false, currentCluster.SystemImages.Alpine, currentCluster.DockerDialerFactory); err != nil { log.Warnf(ctx, "[reconcile] Couldn't clean up worker node [%s]: %v", toDeleteHost.Address, err) continue } @@ -97,7 +97,7 @@ func reconcileControl(ctx context.Context, currentCluster, kubeCluster *Cluster, return fmt.Errorf("Failed to delete controlplane node %s from cluster", toDeleteHost.Address) } // attempting to clean services/files on the host - if err := reconcileHost(ctx, toDeleteHost, false, false, currentCluster.SystemImages[AplineImage], currentCluster.DockerDialerFactory); err != nil { + if err := reconcileHost(ctx, toDeleteHost, false, false, currentCluster.SystemImages.Alpine, currentCluster.DockerDialerFactory); err != nil { log.Warnf(ctx, "[reconcile] Couldn't clean up controlplane node [%s]: %v", toDeleteHost.Address, err) continue } @@ -110,7 +110,7 @@ func reconcileControl(ctx context.Context, currentCluster, kubeCluster *Cluster, cpChanged := hosts.IsHostListChanged(currentCluster.ControlPlaneHosts, kubeCluster.ControlPlaneHosts) if cpChanged { log.Infof(ctx, "[reconcile] Rolling update nginx hosts with new list of control plane hosts") - err := services.RollingUpdateNginxProxy(ctx, kubeCluster.ControlPlaneHosts, kubeCluster.WorkerHosts, currentCluster.SystemImages[NginxProxyImage]) + err := services.RollingUpdateNginxProxy(ctx, kubeCluster.ControlPlaneHosts, kubeCluster.WorkerHosts, currentCluster.SystemImages.NginxProxy) if err != nil { return fmt.Errorf("Failed to rolling update Nginx hosts with new control plane hosts") } @@ -173,7 +173,7 @@ func reconcileEtcd(ctx context.Context, currentCluster, kubeCluster *Cluster, ku continue } // attempting to clean services/files on the host - if err := reconcileHost(ctx, etcdHost, false, true, currentCluster.SystemImages[AplineImage], currentCluster.DockerDialerFactory); err != nil { + if err := reconcileHost(ctx, etcdHost, false, true, currentCluster.SystemImages.Alpine, currentCluster.DockerDialerFactory); err != nil { log.Warnf(ctx, "[reconcile] Couldn't clean up etcd node [%s]: %v", etcdHost.Address, err) continue } @@ -199,7 +199,7 @@ func reconcileEtcd(ctx context.Context, currentCluster, kubeCluster *Cluster, ku currentCluster.Certificates = crtMap for _, etcdHost := range etcdToAdd { // deploy certificates on new etcd host - if err := pki.DeployCertificatesOnHost(ctx, kubeCluster.EtcdHosts, etcdHost, currentCluster.Certificates, kubeCluster.SystemImages[CertDownloaderImage], pki.CertPathPrefix); err != nil { + if err := pki.DeployCertificatesOnHost(ctx, kubeCluster.EtcdHosts, etcdHost, currentCluster.Certificates, kubeCluster.SystemImages.CertDownloader, pki.CertPathPrefix); err != nil { return err } diff --git a/cluster/remove.go b/cluster/remove.go index 49eaead9..9f40368e 100644 --- a/cluster/remove.go +++ b/cluster/remove.go @@ -25,7 +25,7 @@ func (c *Cluster) ClusterRemove(ctx context.Context) error { } // Clean up all hosts - if err := cleanUpHosts(ctx, c.ControlPlaneHosts, c.WorkerHosts, c.EtcdHosts, c.SystemImages[AplineImage]); err != nil { + if err := cleanUpHosts(ctx, c.ControlPlaneHosts, c.WorkerHosts, c.EtcdHosts, c.SystemImages.Alpine); err != nil { return err }