kubectl-persistent-logger/main.go

43 lines
1.0 KiB
Go

package main
import (
"context"
"flag"
"log"
"os"
"path/filepath"
"git.netflux.io/rob/kubectl-persistent-logger/logs"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/util/homedir"
)
func main() {
var kubeconfig *string
var deployName *string
if home := homedir.HomeDir(); home != "" {
kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
} else {
kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
}
deployName = flag.String("deployment", "", "name of a deployment to monitor")
flag.Parse()
config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
log.Fatal(err)
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatal(err)
}
ctx := context.Background()
watcher := logs.NewWatcher(*deployName, logs.KubernetesClient{Interface: clientset}, os.Stdout)
if err := watcher.Watch(ctx); err != nil {
log.Fatal(err)
}
}