package main import ( "context" "fmt" "os" "path" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" applycorev1 "k8s.io/client-go/applyconfigurations/core/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" ) func main() { if len(os.Args) != 3 { panic("Wrong args number") } sprocket := os.Args[1] serviceWorker := os.Args[2] sprocketContent, err := os.ReadFile(sprocket) if err != nil { panic(err) } serviceWorkerContent, err := os.ReadFile(serviceWorker) if err != nil { panic(err) } config, err := rest.InClusterConfig() if err != nil { panic(err.Error()) } clientset, err := kubernetes.NewForConfig(config) if err != nil { panic(err.Error()) } apply := applycorev1.ConfigMap(os.Getenv("ASSETS_CONFIGMAP_NAME"), os.Getenv("KUBERNETES_NAMESPACE")) apply.Data = make(map[string]string) apply.Data[".sprockets-manifest-00000000000000000000000000000000.json"] = string(sprocketContent) apply.Data[path.Base(serviceWorker)] = string(serviceWorkerContent) _, err = clientset.CoreV1().ConfigMaps(os.Getenv("KUBERNETES_NAMESPACE")). Apply(context.Background(), apply, metav1.ApplyOptions{ FieldManager: "refresh-assets-script", Force: true, }) if err != nil { panic(err) } fmt.Printf("ConfigMap %s updated\n", os.Getenv("ASSETS_CONFIGMAP_NAME")) }