1
0
mirror of https://github.com/rancher/rke.git synced 2025-09-18 16:36:41 +00:00

Add user-configurable images

Refactor configuration defaults
 Add comments to config
 Add configurable utility images
 Add configurable network plugin images
 Add configurable kubedns images
This commit is contained in:
moelsayed
2017-12-05 03:29:29 +02:00
parent 89ec803428
commit 0ee002b2cf
19 changed files with 276 additions and 133 deletions

View File

@@ -11,9 +11,20 @@ import (
const (
NetworkPluginResourceName = "rke-network-plugin"
FlannelNetworkPlugin = "flannel"
CalicoNetworkPlugin = "calico"
CanalNetworkPlugin = "canal"
FlannelNetworkPlugin = "flannel"
FlannelImage = "flannel_image"
FlannelCNIImage = "flannel_cni_image"
CalicoNetworkPlugin = "calico"
CalicoNodeImage = "calico_node_image"
CalicoCNIImage = "calico_cni_image"
CalicoControllersImages = "calico_controllers_image"
CanalNetworkPlugin = "canal"
CanalNodeImage = "canal_node_image"
CanalCNIImage = "canal_cni_image"
CanalFlannelImage = "canal_flannel_image"
)
func (c *Cluster) DeployNetworkPlugin() error {
@@ -31,30 +42,62 @@ func (c *Cluster) DeployNetworkPlugin() error {
}
func (c *Cluster) doFlannelDeploy() error {
pluginYaml := network.GetFlannelManifest(c.ClusterCIDR)
pluginYaml := network.GetFlannelManifest(c.ClusterCIDR, c.Network.Options[FlannelImage], c.Network.Options[FlannelCNIImage])
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
}
func (c *Cluster) doCalicoDeploy() error {
calicoConfig := make(map[string]string)
calicoConfig["etcdEndpoints"] = services.GetEtcdConnString(c.EtcdHosts)
calicoConfig["apiRoot"] = "https://127.0.0.1:6443"
calicoConfig["clientCrt"] = pki.KubeNodeCertPath
calicoConfig["clientKey"] = pki.KubeNodeKeyPath
calicoConfig["clientCA"] = pki.CACertPath
calicoConfig["kubeCfg"] = pki.KubeNodeConfigPath
calicoConfig["clusterCIDR"] = c.ClusterCIDR
calicoConfig := map[string]string{
network.EtcdEndpoints: services.GetEtcdConnString(c.EtcdHosts),
network.APIRoot: "https://127.0.0.1:6443",
network.ClientCert: pki.KubeNodeCertPath,
network.ClientKey: pki.KubeNodeKeyPath,
network.ClientCA: pki.CACertPath,
network.KubeCfg: pki.KubeNodeConfigPath,
network.ClusterCIDR: c.ClusterCIDR,
network.CNIImage: c.Network.Options[CalicoCNIImage],
network.NodeImage: c.Network.Options[CalicoNodeImage],
network.ControllersImage: c.Network.Options[CalicoControllersImages],
}
pluginYaml := network.GetCalicoManifest(calicoConfig)
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
}
func (c *Cluster) doCanalDeploy() error {
canalConfig := make(map[string]string)
canalConfig["clientCrt"] = pki.KubeNodeCertPath
canalConfig["clientKey"] = pki.KubeNodeKeyPath
canalConfig["clientCA"] = pki.CACertPath
canalConfig["kubeCfg"] = pki.KubeNodeConfigPath
canalConfig["clusterCIDR"] = c.ClusterCIDR
canalConfig := map[string]string{
network.ClientCert: pki.KubeNodeCertPath,
network.ClientKey: pki.KubeNodeKeyPath,
network.ClientCA: pki.CACertPath,
network.KubeCfg: pki.KubeNodeConfigPath,
network.ClusterCIDR: c.ClusterCIDR,
network.NodeImage: c.Network.Options[CanalNodeImage],
network.CNIImage: c.Network.Options[CanalCNIImage],
network.FlannelImage: c.Network.Options[CanalFlannelImage],
}
pluginYaml := network.GetCanalManifest(canalConfig)
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
}
func (c *Cluster) setClusterNetworkDefaults() {
setDefaultIfEmpty(&c.Network.Plugin, DefaultNetworkPlugin)
if c.Network.Options == nil {
// don't break if the user didn't define options
c.Network.Options = make(map[string]string)
}
switch {
case c.Network.Plugin == FlannelNetworkPlugin:
setDefaultIfEmptyMapValue(c.Network.Options, FlannelImage, DefaultFlannelImage)
setDefaultIfEmptyMapValue(c.Network.Options, FlannelCNIImage, DefaultFlannelCNIImage)
case c.Network.Plugin == CalicoNetworkPlugin:
setDefaultIfEmptyMapValue(c.Network.Options, CalicoCNIImage, DefaultCalicoCNIImage)
setDefaultIfEmptyMapValue(c.Network.Options, CalicoNodeImage, DefaultCalicoNodeImage)
setDefaultIfEmptyMapValue(c.Network.Options, CalicoControllersImages, DefaultCalicoControllersImage)
case c.Network.Plugin == CanalNetworkPlugin:
setDefaultIfEmptyMapValue(c.Network.Options, CanalCNIImage, DefaultCanalCNIImage)
setDefaultIfEmptyMapValue(c.Network.Options, CanalNodeImage, DefaultCanalNodeImage)
setDefaultIfEmptyMapValue(c.Network.Options, CanalFlannelImage, DefaultCanalFlannelImage)
}
}