2017-11-06 20:50:41 +00:00
|
|
|
package cluster
|
|
|
|
|
|
|
|
import (
|
2017-11-21 23:49:30 +00:00
|
|
|
"fmt"
|
|
|
|
|
2017-11-18 12:51:28 +00:00
|
|
|
"github.com/rancher/rke/network"
|
2017-11-21 23:49:30 +00:00
|
|
|
"github.com/rancher/rke/pki"
|
|
|
|
"github.com/rancher/rke/services"
|
2017-11-13 21:28:38 +00:00
|
|
|
"github.com/sirupsen/logrus"
|
2017-11-06 20:50:41 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
const (
|
2017-11-18 12:51:28 +00:00
|
|
|
NetworkPluginResourceName = "rke-netwok-plugin"
|
2017-11-06 20:50:41 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func (c *Cluster) DeployNetworkPlugin() error {
|
2017-11-14 18:11:21 +00:00
|
|
|
logrus.Infof("[network] Setting up network plugin: %s", c.Network.Plugin)
|
2017-11-21 23:49:30 +00:00
|
|
|
switch c.Network.Plugin {
|
|
|
|
case "flannel":
|
|
|
|
return c.doFlannelDeploy()
|
|
|
|
case "calico":
|
|
|
|
return c.doCalicoDeploy()
|
|
|
|
case "canal":
|
|
|
|
return c.doCanalDeploy()
|
|
|
|
default:
|
|
|
|
return fmt.Errorf("[network] Unsupported network plugin: %s", c.Network.Plugin)
|
|
|
|
}
|
|
|
|
}
|
2017-11-08 17:45:51 +00:00
|
|
|
|
2017-11-21 23:49:30 +00:00
|
|
|
func (c *Cluster) doFlannelDeploy() error {
|
2017-11-18 12:51:28 +00:00
|
|
|
pluginYaml := network.GetFlannelManifest(c.ClusterCIDR)
|
2017-11-21 23:49:30 +00:00
|
|
|
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
|
|
|
|
}
|
2017-11-18 12:51:28 +00:00
|
|
|
|
2017-11-21 23:49:30 +00:00
|
|
|
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
|
|
|
|
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
|
2017-11-20 22:23:50 +00:00
|
|
|
pluginYaml := network.GetCanalManifest(canalConfig)
|
2017-11-21 23:49:30 +00:00
|
|
|
return c.doAddonDeploy(pluginYaml, NetworkPluginResourceName)
|
2017-11-06 20:50:41 +00:00
|
|
|
}
|