github.com/argoproj/argo-cd/v3@v3.2.1/hack/k8s/main.go (about) 1 package main 2 3 import ( 4 "context" 5 "os" 6 "os/exec" 7 "path/filepath" 8 "time" 9 10 "k8s.io/client-go/kubernetes" 11 12 "github.com/argoproj/argo-cd/v3/util/errors" 13 14 "github.com/argoproj/gitops-engine/pkg/utils/kube" 15 "sigs.k8s.io/controller-runtime/pkg/envtest" 16 ) 17 18 func main() { 19 testEnv := envtest.Environment{ 20 CRDDirectoryPaths: []string{filepath.Join("manifests", "crds")}, 21 } 22 println("Starting K8S...") 23 cfg, err := testEnv.Start() 24 25 errors.CheckError(err) 26 kubeConfigPath := "/tmp/kubeconfig" 27 if len(os.Args) > 2 { 28 kubeConfigPath = os.Args[1] 29 } 30 31 println("Kubeconfig is available at " + kubeConfigPath) 32 errors.CheckError(kube.WriteKubeConfig(cfg, "default", kubeConfigPath)) 33 client, err := kubernetes.NewForConfig(cfg) 34 errors.CheckError(err) 35 36 attempts := 5 37 interval := time.Second 38 for i := 0; i < attempts; i++ { 39 _, err = client.ServerVersion() 40 if err == nil { 41 break 42 } 43 time.Sleep(interval) 44 } 45 errors.CheckError(err) 46 47 cmd := exec.Command("kubectl", "apply", "-k", "manifests/base/config") 48 cmd.Env = []string{"KUBECONFIG=" + kubeConfigPath} 49 errors.CheckError(cmd.Run()) 50 <-context.Background().Done() 51 }