diff --git a/apis/management.cattle.io/v3/k8s_defaults.go b/apis/management.cattle.io/v3/k8s_defaults.go index e3ac44ec..b9b15ad0 100644 --- a/apis/management.cattle.io/v3/k8s_defaults.go +++ b/apis/management.cattle.io/v3/k8s_defaults.go @@ -1,33 +1,179 @@ package v3 -const ( - K8sV18 = "v1.8.10-rancher1-1" - K8sV19 = "v1.9.5-rancher1-1" - K8sV110 = "v1.10.0-rancher1-1" +import "github.com/rancher/types/image" - MajorK8sV110 = "v1.10" +const ( + DefaultK8s = "v1.10.1-rancher1" ) var ( - ToolsImage = "rancher/rke-tools:v0.1.2" + m = image.Mirror + ToolsImage = m("rancher/rke-tools:v0.1.2") // K8sVersionToRKESystemImages - images map for 2.0 K8sVersionToRKESystemImages = map[string]RKESystemImages{ - K8sV18: v18SystemImages, - K8sV19: v19SystemImages, - K8sV110: v110SystemImages, + "v1.8.10-rancher1-1": { + Etcd: m("quay.io/coreos/etcd:v3.0.17"), + Kubernetes: m("gcr.io/google_containers/hyperkube:v1.8.10"), + Alpine: ToolsImage, + NginxProxy: ToolsImage, + CertDownloader: ToolsImage, + KubernetesServicesSidecar: ToolsImage, + KubeDNS: m("gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5"), + DNSmasq: m("gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5"), + KubeDNSSidecar: m("gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5"), + KubeDNSAutoscaler: m("gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0"), + Flannel: m("quay.io/coreos/flannel:v0.9.1"), + FlannelCNI: m("quay.io/coreos/flannel-cni:v0.2.0"), + CalicoNode: m("quay.io/calico/node:v3.0.2"), + CalicoCNI: m("quay.io/calico/cni:v2.0.0"), + CalicoCtl: m("quay.io/calico/ctl:v2.0.0"), + CanalNode: m("quay.io/calico/node:v2.6.2"), + CanalCNI: m("quay.io/calico/cni:v1.11.0"), + CanalFlannel: m("quay.io/coreos/flannel:v0.9.1"), + WeaveNode: m("weaveworks/weave-kube:2.1.2"), + WeaveCNI: m("weaveworks/weave-npc:2.1.2"), + PodInfraContainer: m("gcr.io/google_containers/pause-amd64:3.0"), + Ingress: m("rancher/nginx-ingress-controller:0.10.2-rancher2"), + IngressBackend: m("k8s.gcr.io/defaultbackend:1.4"), + }, + "v1.8.11-rancher1": { + Etcd: m("quay.io/coreos/etcd:v3.0.17"), + Kubernetes: m("gcr.io/google_containers/hyperkube:v1.8.11"), + Alpine: ToolsImage, + NginxProxy: ToolsImage, + CertDownloader: ToolsImage, + KubernetesServicesSidecar: ToolsImage, + KubeDNS: m("gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.5"), + DNSmasq: m("gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.5"), + KubeDNSSidecar: m("gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.5"), + KubeDNSAutoscaler: m("gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0"), + Flannel: m("quay.io/coreos/flannel:v0.9.1"), + FlannelCNI: m("quay.io/coreos/flannel-cni:v0.2.0"), + CalicoNode: m("quay.io/calico/node:v3.0.2"), + CalicoCNI: m("quay.io/calico/cni:v2.0.0"), + CalicoCtl: m("quay.io/calico/ctl:v2.0.0"), + CanalNode: m("quay.io/calico/node:v2.6.2"), + CanalCNI: m("quay.io/calico/cni:v1.11.0"), + CanalFlannel: m("quay.io/coreos/flannel:v0.9.1"), + WeaveNode: m("weaveworks/weave-kube:2.1.2"), + WeaveCNI: m("weaveworks/weave-npc:2.1.2"), + PodInfraContainer: m("gcr.io/google_containers/pause-amd64:3.0"), + Ingress: m("rancher/nginx-ingress-controller:0.10.2-rancher2"), + IngressBackend: m("k8s.gcr.io/defaultbackend:1.4"), + }, + "v1.9.7-rancher1": { + Etcd: m("quay.io/coreos/etcd:v3.1.12"), + Kubernetes: m("gcr.io/google_containers/hyperkube:v1.9.7"), + Alpine: ToolsImage, + NginxProxy: ToolsImage, + CertDownloader: ToolsImage, + KubernetesServicesSidecar: ToolsImage, + KubeDNS: m("gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.7"), + DNSmasq: m("gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.7"), + KubeDNSSidecar: m("gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.7"), + KubeDNSAutoscaler: m("gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0"), + Flannel: m("quay.io/coreos/flannel:v0.9.1"), + FlannelCNI: m("quay.io/coreos/flannel-cni:v0.2.0"), + CalicoNode: m("quay.io/calico/node:v3.0.2"), + CalicoCNI: m("quay.io/calico/cni:v2.0.0"), + CalicoCtl: m("quay.io/calico/ctl:v2.0.0"), + CanalNode: m("quay.io/calico/node:v2.6.2"), + CanalCNI: m("quay.io/calico/cni:v1.11.0"), + CanalFlannel: m("quay.io/coreos/flannel:v0.9.1"), + WeaveNode: m("weaveworks/weave-kube:2.1.2"), + WeaveCNI: m("weaveworks/weave-npc:2.1.2"), + PodInfraContainer: m("gcr.io/google_containers/pause-amd64:3.0"), + Ingress: m("rancher/nginx-ingress-controller:0.10.2-rancher2"), + IngressBackend: m("k8s.gcr.io/defaultbackend:1.4"), + }, + "v1.9.5-rancher1-1": { + Etcd: m("quay.io/coreos/etcd:v3.1.12"), + Kubernetes: m("gcr.io/google_containers/hyperkube:v1.9.5"), + Alpine: ToolsImage, + NginxProxy: ToolsImage, + CertDownloader: ToolsImage, + KubernetesServicesSidecar: ToolsImage, + KubeDNS: m("gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.7"), + DNSmasq: m("gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.7"), + KubeDNSSidecar: m("gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.7"), + KubeDNSAutoscaler: m("gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0"), + Flannel: m("quay.io/coreos/flannel:v0.9.1"), + FlannelCNI: m("quay.io/coreos/flannel-cni:v0.2.0"), + CalicoNode: m("quay.io/calico/node:v3.0.2"), + CalicoCNI: m("quay.io/calico/cni:v2.0.0"), + CalicoCtl: m("quay.io/calico/ctl:v2.0.0"), + CanalNode: m("quay.io/calico/node:v2.6.2"), + CanalCNI: m("quay.io/calico/cni:v1.11.0"), + CanalFlannel: m("quay.io/coreos/flannel:v0.9.1"), + WeaveNode: m("weaveworks/weave-kube:2.1.2"), + WeaveCNI: m("weaveworks/weave-npc:2.1.2"), + PodInfraContainer: m("gcr.io/google_containers/pause-amd64:3.0"), + Ingress: m("rancher/nginx-ingress-controller:0.10.2-rancher2"), + IngressBackend: m("k8s.gcr.io/defaultbackend:1.4"), + }, + "v1.10.0-rancher1-1": { + Etcd: m("quay.io/coreos/etcd:v3.1.12"), + Kubernetes: m("gcr.io/google_containers/hyperkube:v1.10.0"), + Alpine: ToolsImage, + NginxProxy: ToolsImage, + CertDownloader: ToolsImage, + KubernetesServicesSidecar: ToolsImage, + KubeDNS: m("gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.8"), + DNSmasq: m("gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.8"), + KubeDNSSidecar: m("gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.8"), + KubeDNSAutoscaler: m("gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0"), + Flannel: m("quay.io/coreos/flannel:v0.9.1"), + FlannelCNI: m("quay.io/coreos/flannel-cni:v0.2.0"), + CalicoNode: m("quay.io/calico/node:v3.0.2"), + CalicoCNI: m("quay.io/calico/cni:v2.0.0"), + CalicoCtl: m("quay.io/calico/ctl:v2.0.0"), + CanalNode: m("quay.io/calico/node:v2.6.2"), + CanalCNI: m("quay.io/calico/cni:v1.11.0"), + CanalFlannel: m("quay.io/coreos/flannel:v0.9.1"), + WeaveNode: m("weaveworks/weave-kube:2.1.2"), + WeaveCNI: m("weaveworks/weave-npc:2.1.2"), + PodInfraContainer: m("gcr.io/google_containers/pause-amd64:3.1"), + Ingress: m("rancher/nginx-ingress-controller:0.10.2-rancher2"), + IngressBackend: m("k8s.gcr.io/defaultbackend:1.4"), + }, + "v1.10.1-rancher1": { + Etcd: m("quay.io/coreos/etcd:v3.1.12"), + Kubernetes: m("gcr.io/google_containers/hyperkube:v1.10.1"), + Alpine: ToolsImage, + NginxProxy: ToolsImage, + CertDownloader: ToolsImage, + KubernetesServicesSidecar: ToolsImage, + KubeDNS: m("gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.8"), + DNSmasq: m("gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.8"), + KubeDNSSidecar: m("gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.8"), + KubeDNSAutoscaler: m("gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.0.0"), + Flannel: m("quay.io/coreos/flannel:v0.9.1"), + FlannelCNI: m("quay.io/coreos/flannel-cni:v0.2.0"), + CalicoNode: m("quay.io/calico/node:v3.0.2"), + CalicoCNI: m("quay.io/calico/cni:v2.0.0"), + CalicoCtl: m("quay.io/calico/ctl:v2.0.0"), + CanalNode: m("quay.io/calico/node:v2.6.2"), + CanalCNI: m("quay.io/calico/cni:v1.11.0"), + CanalFlannel: m("quay.io/coreos/flannel:v0.9.1"), + WeaveNode: m("weaveworks/weave-kube:2.1.2"), + WeaveCNI: m("weaveworks/weave-npc:2.1.2"), + PodInfraContainer: m("gcr.io/google_containers/pause-amd64:3.1"), + Ingress: m("rancher/nginx-ingress-controller:0.10.2-rancher2"), + IngressBackend: m("k8s.gcr.io/defaultbackend:1.4"), + }, } // K8sVersionServiceOptions - service options per k8s version K8sVersionServiceOptions = map[string]KubernetesServicesOptions{ - MajorK8sV110: v110ServiceOptions, - } - - // K8SVersionToSystemImages16 - images map for 1.6. Keeping it sepate in case we have to diverge - K8SVersionToSystemImages16 = map[string]RKESystemImages{ - K8sV18: v18SystemImages, - K8sV19: v19SystemImages, - K8sV110: v110SystemImages, + "v1.10": { + KubeAPI: map[string]string{ + "tls-cipher-suites": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", + }, + Kubelet: map[string]string{ + "tls-cipher-suites": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", + }, + }, } // ToolsSystemImages default images for alert, pipeline, logging @@ -37,123 +183,22 @@ var ( LoggingSystemImages LoggingSystemImages }{ AlertSystemImages: AlertSystemImages{ - AlertManager: "prom/alertmanager:v0.11.0", - AlertManagerHelper: "rancher/alertmanager-helper:v0.0.2", + AlertManager: m("prom/alertmanager:v0.11.0"), + AlertManagerHelper: m("rancher/alertmanager-helper:v0.0.2"), }, PipelineSystemImages: PipelineSystemImages{ - Jenkins: "jenkins/jenkins:lts", - JenkinsJnlp: "jenkins/jnlp-slave:3.10-1-alpine", - AlpineGit: "alpine/git", - PluginsDocker: "plugins/docker", + Jenkins: m("jenkins/jenkins:lts"), + JenkinsJnlp: m("jenkins/jnlp-slave:3.10-1-alpine"), + AlpineGit: m("alpine/git"), + PluginsDocker: m("plugins/docker"), }, LoggingSystemImages: LoggingSystemImages{ - Fluentd: "rancher/fluentd:v0.1.6", - FluentdHelper: "rancher/fluentd-helper:v0.1.2", - LogAggregatorFlexVolumeDriver: "rancher/log-aggregator:v0.1.2", - Elaticsearch: "rancher/docker-elasticsearch-kubernetes:5.6.2", - Kibana: "kibana:5.6.4", - Busybox: "busybox", - }, - } - - // v18 system images defaults - v18SystemImages = RKESystemImages{ - Etcd: "rancher/coreos-etcd:v3.0.17", - Kubernetes: "rancher/hyperkube:v1.8.10", - Alpine: ToolsImage, - NginxProxy: ToolsImage, - CertDownloader: ToolsImage, - KubernetesServicesSidecar: ToolsImage, - KubeDNS: "rancher/k8s-dns-kube-dns-amd64:1.14.5", - DNSmasq: "rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.5", - KubeDNSSidecar: "rancher/k8s-dns-sidecar-amd64:1.14.5", - KubeDNSAutoscaler: "rancher/cluster-proportional-autoscaler-amd64:1.0.0", - Flannel: "rancher/coreos-flannel:v0.9.1", - FlannelCNI: "rancher/coreos-flannel-cni:v0.2.0", - CalicoNode: "rancher/calico-node:v3.0.2", - CalicoCNI: "rancher/calico-cni:v2.0.0", - CalicoCtl: "rancher/calico-ctl:v2.0.0", - CanalNode: "rancher/calico-node:v2.6.2", - CanalCNI: "rancher/calico-cni:v1.11.0", - CanalFlannel: "rancher/coreos-flannel:v0.9.1", - WeaveNode: "weaveworks/weave-kube:2.1.2", - WeaveCNI: "weaveworks/weave-npc:2.1.2", - PodInfraContainer: "rancher/pause-amd64:3.0", - Ingress: "rancher/nginx-ingress-controller:0.10.2-rancher2", - IngressBackend: "rancher/nginx-ingress-controller-defaultbackend:1.4", - } - - // v19 system images defaults - v19SystemImages = RKESystemImages{ - Etcd: "rancher/coreos-etcd:v3.1.12", - Kubernetes: "rancher/hyperkube:v1.9.5", - Alpine: ToolsImage, - NginxProxy: ToolsImage, - CertDownloader: ToolsImage, - KubernetesServicesSidecar: ToolsImage, - KubeDNS: "rancher/k8s-dns-kube-dns-amd64:1.14.7", - DNSmasq: "rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.7", - KubeDNSSidecar: "rancher/k8s-dns-sidecar-amd64:1.14.7", - KubeDNSAutoscaler: "rancher/cluster-proportional-autoscaler-amd64:1.0.0", - Flannel: "rancher/coreos-flannel:v0.9.1", - FlannelCNI: "rancher/coreos-flannel-cni:v0.2.0", - CalicoNode: "rancher/calico-node:v3.0.2", - CalicoCNI: "rancher/calico-cni:v2.0.0", - CalicoCtl: "rancher/calico-ctl:v2.0.0", - CanalNode: "rancher/calico-node:v2.6.2", - CanalCNI: "rancher/calico-cni:v1.11.0", - CanalFlannel: "rancher/coreos-flannel:v0.9.1", - WeaveNode: "weaveworks/weave-kube:2.1.2", - WeaveCNI: "weaveworks/weave-npc:2.1.2", - PodInfraContainer: "rancher/pause-amd64:3.0", - Ingress: "rancher/nginx-ingress-controller:0.10.2-rancher2", - IngressBackend: "rancher/nginx-ingress-controller-defaultbackend:1.4", - Grafana: "rancher/heapster-grafana-amd64:v4.4.3", - Heapster: "rancher/heapster-amd64:v1.5.0", - Influxdb: "rancher/heapster-influxdb-amd64:v1.3.3", - Tiller: "rancher/tiller:v2.7.2", - Dashboard: "rancher/kubernetes-dashboard-amd64:v1.8.0", - } - - // v110 system images defaults - v110SystemImages = RKESystemImages{ - Etcd: "rancher/coreos-etcd:v3.1.12", - Kubernetes: "rancher/hyperkube:v1.10.1", - Alpine: ToolsImage, - NginxProxy: ToolsImage, - CertDownloader: ToolsImage, - KubernetesServicesSidecar: ToolsImage, - KubeDNS: "rancher/k8s-dns-kube-dns-amd64:1.14.8", - DNSmasq: "rancher/k8s-dns-dnsmasq-nanny-amd64:1.14.8", - KubeDNSSidecar: "rancher/k8s-dns-sidecar-amd64:1.14.8", - KubeDNSAutoscaler: "rancher/cluster-proportional-autoscaler-amd64:1.0.0", - Flannel: "rancher/coreos-flannel:v0.9.1", - FlannelCNI: "rancher/coreos-flannel-cni:v0.2.0", - CalicoNode: "rancher/calico-node:v3.0.2", - CalicoCNI: "rancher/calico-cni:v2.0.0", - CalicoCtl: "rancher/calico-ctl:v2.0.0", - CanalNode: "rancher/calico-node:v2.6.2", - CanalCNI: "rancher/calico-cni:v1.11.0", - CanalFlannel: "rancher/coreos-flannel:v0.9.1", - WeaveNode: "weaveworks/weave-kube:2.1.2", - WeaveCNI: "weaveworks/weave-npc:2.1.2", - PodInfraContainer: "rancher/pause-amd64:3.1", - Ingress: "rancher/nginx-ingress-controller:0.10.2-rancher2", - IngressBackend: "rancher/nginx-ingress-controller-defaultbackend:1.4", - Grafana: "rancher/heapster-grafana-amd64:v4.4.3", - Heapster: "rancher/heapster-amd64:v1.5.0", - Influxdb: "rancher/heapster-influxdb-amd64:v1.3.3", - Tiller: "rancher/tiller:v2.8.2", - Dashboard: "rancher/kubernetes-dashboard-amd64:v1.8.3", - } - - // v110 service options - v110ServiceOptions = KubernetesServicesOptions{ - KubeAPI: map[string]string{ - "tls-cipher-suites": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", - }, - Kubelet: map[string]string{ - "tls-cipher-suites": "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", + Fluentd: m("rancher/fluentd:v0.1.6"), + FluentdHelper: m("rancher/fluentd-helper:v0.1.2"), + LogAggregatorFlexVolumeDriver: m("rancher/log-aggregator:v0.1.2"), + Elaticsearch: m("quay.io/pires/docker-elasticsearch-kubernetes:5.6.2"), + Kibana: m("kibana:5.6.4"), + Busybox: ToolsImage, }, } ) diff --git a/apis/management.cattle.io/v3/rke_types.go b/apis/management.cattle.io/v3/rke_types.go index a358d594..7b556492 100644 --- a/apis/management.cattle.io/v3/rke_types.go +++ b/apis/management.cattle.io/v3/rke_types.go @@ -95,16 +95,6 @@ type RKESystemImages struct { Ingress string `yaml:"ingress" json:"ingress,omitempty"` // Ingress Controller Backend image IngressBackend string `yaml:"ingress_backend" json:"ingressBackend,omitempty"` - // Dashboard image - Dashboard string `yaml:"dashboard" json:"dashboard,omitempty"` - // Heapster addon image - Heapster string `yaml:"heapster" json:"heapster,omitempty"` - // Grafana image for heapster addon - Grafana string `yaml:"grafana" json:"grafana,omitempty"` - // Influxdb image for heapster addon - Influxdb string `yaml:"influxdb" json:"influxdb,omitempty"` - // Tiller addon image - Tiller string `yaml:"tiller" json:"tiller,omitempty"` } type RKEConfigNode struct { diff --git a/image/mirror.go b/image/mirror.go new file mode 100644 index 00000000..77f60cec --- /dev/null +++ b/image/mirror.go @@ -0,0 +1,26 @@ +package image + +import "strings" + +var Mirrors = map[string]string{} + +func Mirror(image string) string { + orig := image + if strings.HasPrefix(image, "weaveworks") { + return image + } + + image = strings.Replace(image, "gcr.io/google_containers", "rancher", 1) + image = strings.Replace(image, "quay.io/coreos/", "rancher/coreos-", 1) + image = strings.Replace(image, "quay.io/calico/", "rancher/calico-", 1) + image = strings.Replace(image, "k8s.gcr.io/", "rancher/nginx-ingress-controller-", 1) + image = strings.Replace(image, "plugins/docker", "rancher/jenkins-plugins-docker", 1) + image = strings.Replace(image, "kibana", "rancher/kibana", 1) + image = strings.Replace(image, "jenkins/", "rancher/jenkins-", 1) + image = strings.Replace(image, "alpine/git", "rancher/alpine-git", 1) + image = strings.Replace(image, "prom/", "rancher/prom-", 1) + image = strings.Replace(image, "quay.io/pires", "rancher", 1) + + Mirrors[image] = orig + return image +}