mirror of
https://github.com/rancher/rke.git
synced 2025-09-01 15:06:23 +00:00
refactor etcd restoration process
This commit is contained in:
committed by
Alena Prokharchyk
parent
d5a5fd5879
commit
ff4c93e179
@@ -4,6 +4,8 @@ import (
|
||||
"context"
|
||||
|
||||
"github.com/rancher/rke/hosts"
|
||||
"github.com/rancher/rke/k8s"
|
||||
"github.com/rancher/rke/log"
|
||||
"github.com/rancher/rke/pki"
|
||||
"github.com/rancher/rke/services"
|
||||
"github.com/rancher/rke/util"
|
||||
@@ -12,33 +14,10 @@ import (
|
||||
)
|
||||
|
||||
func (c *Cluster) ClusterRemove(ctx context.Context) error {
|
||||
externalEtcd := false
|
||||
if len(c.Services.Etcd.ExternalURLs) > 0 {
|
||||
externalEtcd = true
|
||||
}
|
||||
// Remove Worker Plane
|
||||
if err := services.RemoveWorkerPlane(ctx, c.WorkerHosts, true); err != nil {
|
||||
if err := c.CleanupNodes(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
// Remove Contol Plane
|
||||
if err := services.RemoveControlPlane(ctx, c.ControlPlaneHosts, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Remove Etcd Plane
|
||||
if !externalEtcd {
|
||||
if err := services.RemoveEtcdPlane(ctx, c.EtcdHosts, true); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Clean up all hosts
|
||||
if err := cleanUpHosts(ctx, c.ControlPlaneHosts, c.WorkerHosts, c.EtcdHosts, c.SystemImages.Alpine, c.PrivateRegistriesMap, externalEtcd); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pki.RemoveAdminConfig(ctx, c.LocalKubeConfigPath)
|
||||
removeStateFile(ctx, c.StateFilePath)
|
||||
c.CleanupFiles(ctx)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -63,3 +42,56 @@ func cleanUpHosts(ctx context.Context, cpHosts, workerHosts, etcdHosts []*hosts.
|
||||
|
||||
return errgrp.Wait()
|
||||
}
|
||||
|
||||
func (c *Cluster) CleanupNodes(ctx context.Context) error {
|
||||
externalEtcd := false
|
||||
if len(c.Services.Etcd.ExternalURLs) > 0 {
|
||||
externalEtcd = true
|
||||
}
|
||||
// Remove Worker Plane
|
||||
if err := services.RemoveWorkerPlane(ctx, c.WorkerHosts, true); err != nil {
|
||||
return err
|
||||
}
|
||||
// Remove Contol Plane
|
||||
if err := services.RemoveControlPlane(ctx, c.ControlPlaneHosts, true); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Remove Etcd Plane
|
||||
if !externalEtcd {
|
||||
if err := services.RemoveEtcdPlane(ctx, c.EtcdHosts, true); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Clean up all hosts
|
||||
return cleanUpHosts(ctx, c.ControlPlaneHosts, c.WorkerHosts, c.EtcdHosts, c.SystemImages.Alpine, c.PrivateRegistriesMap, externalEtcd)
|
||||
}
|
||||
|
||||
func (c *Cluster) CleanupFiles(ctx context.Context) error {
|
||||
pki.RemoveAdminConfig(ctx, c.LocalKubeConfigPath)
|
||||
removeStateFile(ctx, c.StateFilePath)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Cluster) RemoveOldNodes(ctx context.Context) error {
|
||||
kubeClient, err := k8s.NewClient(c.LocalKubeConfigPath, c.K8sWrapTransport)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
nodeList, err := k8s.GetNodeList(kubeClient)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
uniqueHosts := hosts.GetUniqueHostList(c.EtcdHosts, c.ControlPlaneHosts, c.WorkerHosts)
|
||||
for _, node := range nodeList.Items {
|
||||
host := &hosts.Host{}
|
||||
host.HostnameOverride = node.Name
|
||||
if !hosts.IsNodeInList(host, uniqueHosts) {
|
||||
if err := k8s.DeleteNode(kubeClient, node.Name, c.CloudProvider.Name); err != nil {
|
||||
log.Warnf(ctx, "Failed to delete old node [%s] from kubernetes")
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user