1
0
mirror of https://github.com/rancher/rke.git synced 2025-04-29 03:53:30 +00:00
rke/cluster/hosts.go

94 lines
2.8 KiB
Go
Raw Normal View History

package cluster
import (
"fmt"
"github.com/rancher/rke/hosts"
"github.com/rancher/rke/pki"
"github.com/rancher/rke/services"
2017-11-13 21:28:38 +00:00
"github.com/sirupsen/logrus"
2017-11-21 20:26:26 +00:00
)
func (c *Cluster) TunnelHosts() error {
for i := range c.EtcdHosts {
2017-12-02 17:07:47 +00:00
if err := c.EtcdHosts[i].TunnelUp(); err != nil {
return fmt.Errorf("Failed to set up SSH tunneling for Etcd host [%s]: %v", c.EtcdHosts[i].Address, err)
}
}
for i := range c.ControlPlaneHosts {
2017-12-02 17:07:47 +00:00
err := c.ControlPlaneHosts[i].TunnelUp()
if err != nil {
return fmt.Errorf("Failed to set up SSH tunneling for Control host [%s]: %v", c.ControlPlaneHosts[i].Address, err)
}
}
for i := range c.WorkerHosts {
2017-12-02 17:07:47 +00:00
if err := c.WorkerHosts[i].TunnelUp(); err != nil {
return fmt.Errorf("Failed to set up SSH tunneling for Worker host [%s]: %v", c.WorkerHosts[i].Address, err)
}
}
return nil
}
func (c *Cluster) InvertIndexHosts() error {
c.EtcdHosts = make([]*hosts.Host, 0)
c.WorkerHosts = make([]*hosts.Host, 0)
c.ControlPlaneHosts = make([]*hosts.Host, 0)
2017-11-28 17:45:24 +00:00
for _, host := range c.Nodes {
newHost := hosts.Host{
RKEConfigNode: host,
}
if err := newHost.RegisterDialer(c.Dialer); err != nil {
return fmt.Errorf("Failed to register new Dialer for host [%s]: %v", host.Address, err)
}
2017-12-15 03:02:44 +00:00
newHost.IgnoreDockerVersion = c.IgnoreDockerVersion
for _, role := range host.Role {
2017-11-28 17:45:24 +00:00
logrus.Debugf("Host: " + host.Address + " has role: " + role)
switch role {
case services.ETCDRole:
c.EtcdHosts = append(c.EtcdHosts, &newHost)
case services.ControlRole:
newHost.IsControl = true
c.ControlPlaneHosts = append(c.ControlPlaneHosts, &newHost)
case services.WorkerRole:
newHost.IsWorker = true
c.WorkerHosts = append(c.WorkerHosts, &newHost)
default:
2017-11-28 17:45:24 +00:00
return fmt.Errorf("Failed to recognize host [%s] role %s", host.Address, role)
}
}
}
return nil
}
2017-11-09 19:50:49 +00:00
func (c *Cluster) SetUpHosts() error {
2017-11-14 18:11:21 +00:00
if c.Authentication.Strategy == X509AuthenticationProvider {
logrus.Infof("[certificates] Deploying kubernetes certificates to Cluster nodes")
err := pki.DeployCertificatesOnMasters(c.ControlPlaneHosts, c.Certificates, c.SystemImages[CertDownloaderImage])
if err != nil {
return err
}
err = pki.DeployCertificatesOnWorkers(c.WorkerHosts, c.Certificates, c.SystemImages[CertDownloaderImage])
if err != nil {
return err
}
err = pki.DeployAdminConfig(c.Certificates[pki.KubeAdminCommonName].Config, c.LocalKubeConfigPath)
if err != nil {
return err
}
logrus.Infof("[certificates] Successfully deployed kubernetes certificates to Cluster nodes")
}
return nil
}
2017-11-17 21:33:07 +00:00
func CheckEtcdHostsChanged(kubeCluster, currentCluster *Cluster) error {
2017-11-26 23:27:39 +00:00
if currentCluster != nil {
etcdChanged := hosts.IsHostListChanged(currentCluster.EtcdHosts, kubeCluster.EtcdHosts)
if etcdChanged {
return fmt.Errorf("Adding or removing Etcd nodes is not supported")
}
}
return nil
}