mirror of
https://github.com/traefik/mesh.git
synced 2026-05-02 18:32:32 +00:00
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
package cleanup
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/traefik/mesh/cmd"
|
|
"github.com/traefik/mesh/pkg/cleanup"
|
|
"github.com/traefik/mesh/pkg/k8s"
|
|
"github.com/traefik/paerser/cli"
|
|
)
|
|
|
|
// NewCmd builds a new Cleanup command.
|
|
func NewCmd(cConfig *cmd.CleanupConfiguration, loaders []cli.ResourceLoader) *cli.Command {
|
|
return &cli.Command{
|
|
Name: "cleanup",
|
|
Description: `Removes Traefik Mesh shadow services from a Kubernetes cluster.`,
|
|
Configuration: cConfig,
|
|
Run: func(_ []string) error {
|
|
return cleanupCommand(cConfig)
|
|
},
|
|
Resources: loaders,
|
|
}
|
|
}
|
|
|
|
func cleanupCommand(cConfig *cmd.CleanupConfiguration) error {
|
|
ctx := cmd.ContextWithSignal(context.Background())
|
|
|
|
logger, err := cmd.NewLogger(cConfig.LogFormat, cConfig.LogLevel, false)
|
|
if err != nil {
|
|
return fmt.Errorf("could not create logger: %w", err)
|
|
}
|
|
|
|
logger.Debug("Starting cleanup...")
|
|
logger.Debugf("Using masterURL: %q", cConfig.MasterURL)
|
|
logger.Debugf("Using kubeconfig: %q", cConfig.KubeConfig)
|
|
|
|
clients, err := k8s.NewClient(logger, cConfig.MasterURL, cConfig.KubeConfig)
|
|
if err != nil {
|
|
return fmt.Errorf("error building clients: %w", err)
|
|
}
|
|
|
|
c := cleanup.NewCleanup(logger, clients.KubernetesClient(), cConfig.Namespace)
|
|
|
|
if err := c.CleanShadowServices(ctx); err != nil {
|
|
return fmt.Errorf("error encountered during cluster cleanup: %w", err)
|
|
}
|
|
|
|
if err := c.RestoreDNSConfig(ctx); err != nil {
|
|
return fmt.Errorf("error encountered during DNS restore: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|