package cmd import ( "os" "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/stakater/Reloader/internal/pkg/controller" "github.com/stakater/Reloader/pkg/kube" "k8s.io/apimachinery/pkg/apis/meta/v1" ) // NewReloaderCommand starts the reloader controller func NewReloaderCommand() *cobra.Command { cmd := &cobra.Command{ Use: "reloader", Short: "A watcher for your Kubernetes cluster", Run: startReloader, } return cmd } func startReloader(cmd *cobra.Command, args []string) { logrus.Info("Starting Reloader") currentNamespace := os.Getenv("KUBERNETES_NAMESPACE") if len(currentNamespace) == 0 { currentNamespace = v1.NamespaceAll logrus.Warnf("KUBERNETES_NAMESPACE is unset, will detect changes in all namespaces.") } // create the clientset clientset, err := kube.GetClient() if err != nil { logrus.Fatal(err) } for k := range kube.ResourceMap { c, err := controller.NewController(clientset, k, currentNamespace) if err != nil { logrus.Fatalf("%s", err) } // Now let's start the controller stop := make(chan struct{}) defer close(stop) go c.Run(1, stop) } // Wait forever select {} }