package main import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "log" ) func main() { config, err := rest.InClusterConfig() if err != nil { panic(err.Error()) } clientset, err := kubernetes.NewForConfig(config) if err != nil { panic(err.Error()) } namespaces, err := clientset.CoreV1().Namespaces().List(metav1.ListOptions{}) if err != nil { panic(err.Error()) } for _, ns := range namespaces.Items { log.Printf("Checking for LimitRange named extreme-request-defaults in namespace '%v'\n", ns.Name) if limitRange, err := clientset.CoreV1().LimitRanges(ns.Name).List(metav1.ListOptions{FieldSelector: "metadata.name=extreme-request-defaults"}); err == nil && len(limitRange.Items) == 0 { log.Printf("Trying to create LimitaRange\n") limits := []v1.LimitRangeItem{ { DefaultRequest: v1.ResourceList{"memory": *resource.NewQuantity(1024*1024*1024*1024, resource.BinarySI)}, Type: "Container", }, } limitRange := v1.LimitRange{ Spec: v1.LimitRangeSpec{Limits: limits}, ObjectMeta: metav1.ObjectMeta{ Name: "extreme-request-defaults", }, } if _, err := clientset.CoreV1().LimitRanges(ns.Name).Create(&limitRange); err != nil { log.Printf("Unable to create LimitRange in namespace '%v': Error: %v\n", ns.Name, err) } else { log.Printf("LimitRange extreme-request-defaults created in namespace '%v'\n", ns.Name) } } } }