kube-fetcher/cmd/fetcher/main.go

46 lines
1.2 KiB
Go

package main
import (
goflags "flag"
"github.com/spf13/cobra"
"k8s.io/klog/v2"
"os"
)
func main() {
klogFlags := goflags.NewFlagSet("", goflags.PanicOnError)
klog.InitFlags(klogFlags)
var kubernetesNamespace string
var socketPath string
var containerdNamespace string
cmd := &cobra.Command{
Use: "kube-fetcher",
Short: "Fetch images on a kubernetes node",
Long: `
Queries k8s for all running pods and makes sure that all
images referenced in pods are made available on the local k8s node and pinned
so they don't get garbage collected'`,
RunE: func(cmd *cobra.Command, args []string) error {
err := pullAndPin(kubernetesNamespace, socketPath, containerdNamespace)
return err
},
}
cmd.PersistentFlags().StringVar(&kubernetesNamespace, "kubernetes-namespace",
"", "Kubernetes containerdNamespace to inspect (default is all namespaces)")
cmd.PersistentFlags().StringVar(&socketPath, "socket",
"/run/containerd/containerd.sock", "Containerd socket")
cmd.PersistentFlags().StringVar(&containerdNamespace, "containerd-namespace",
"k8s.io", "Containerd namespace to use")
cmd.Flags().AddGoFlagSet(klogFlags)
err := cmd.Execute()
if err != nil {
klog.Errorf("Error: %v", err)
os.Exit(1)
}
}