@@ -62,6 +62,8 @@ required binaries:
6262 case "monitoring" :
6363 installMonitoring ()
6464 return
65+ case "buildpacks" :
66+ installKpack ()
6567 case "kubernetes" :
6668 installKubernetes ()
6769 checkCluster ()
@@ -76,6 +78,7 @@ required binaries:
7678 installCertManager ()
7779 installKuberoOperator ()
7880 installMonitoring ()
81+ installKpack ()
7982 installKuberoUi ()
8083 writeCLIconfig ()
8184 printDNSinfo ()
@@ -103,7 +106,7 @@ var ingressControllerVersion = "v1.10.0" // https://github.com/kubernetes/ingres
103106var clusterTypeList = []string {"kind" , "linode" , "scaleway" , "gke" , "digitalocean" }
104107
105108func init () {
106- installCmd .Flags ().StringVarP (& arg_component , "component" , "c" , "" , "install component (kubernetes,olm,ingress,metrics,certmanager,kubero-operator,monitoring,kubero-ui)" )
109+ installCmd .Flags ().StringVarP (& arg_component , "component" , "c" , "" , "install component (kubernetes,olm,ingress,metrics,certmanager,kubero-operator,monitoring,buildpacks, kubero-ui)" )
107110 installCmd .Flags ().StringVarP (& arg_adminUser , "user" , "u" , "" , "Admin username for the kubero UI" )
108111 installCmd .Flags ().StringVarP (& arg_adminPassword , "user-password" , "U" , "" , "Password for the admin user" )
109112 installCmd .Flags ().StringVarP (& arg_apiToken , "apitoken" , "a" , "" , "API token for the admin user" )
@@ -324,14 +327,37 @@ func installOLM() {
324327 olmWaitCatalogSpinner .Success ("OLM Catalog is ready" )
325328}
326329
330+ func installKpack () {
331+
332+ kpackInstalled , _ := exec .Command ("kubectl" , "get" , "crd" , "builds.kpack.io" ).Output ()
333+ if len (kpackInstalled ) > 0 {
334+ cfmt .Println ("{{✓ Kpack is allredy installed}}::lightGreen" )
335+ return
336+ }
337+
338+ kpackInstall := promptLine ("8) Install Kpack for buildpacks.io" , "[y,n]" , "y" )
339+ if kpackInstall != "y" {
340+ return
341+ }
342+
343+ components := "https://github.com/buildpacks-community/kpack/releases/download/v0.13.3/release-0.13.3.yaml"
344+ _ , installErr := exec .Command ("kubectl" , "apply" , "-f" , components ).Output ()
345+
346+ if installErr != nil {
347+ fmt .Println ("failed to install kpack" )
348+ log .Fatal (installErr )
349+ }
350+ cfmt .Println ("{{✓ Kpack Operator installed}}::lightGreen" )
351+ }
352+
327353func installMetrics () {
328354
329355 installed , _ := exec .Command ("kubectl" , "get" , "deployments.apps" , "metrics-server" , "-n" , "kube-system" ).Output ()
330356 if len (installed ) > 0 {
331357 cfmt .Println ("{{✓ Metrics is allredy enabled}}::lightGreen" )
332358 return
333359 }
334- install := promptLine ("4) Install Kubernetes internal metrics service (required for HPA and stats )" , "[y,n]" , "y" )
360+ install := promptLine ("4) Install Kubernetes internal metrics service (required for HPA, Horizontal Pod Autoscaling )" , "[y,n]" , "y" )
335361 if install != "y" {
336362 return
337363 }
@@ -480,7 +506,7 @@ func createNamespace(namespace string) {
480506
481507func installKuberoUi () {
482508
483- ingressInstall := promptLine ("7 ) Install Kubero UI" , "[y,n]" , "y" )
509+ ingressInstall := promptLine ("9 ) Install Kubero UI" , "[y,n]" , "y" )
484510 if ingressInstall != "y" {
485511 return
486512 }
@@ -626,20 +652,23 @@ func installKuberoUi() {
626652 kuberoUIConfig .Spec .Registry .Enabled = true
627653
628654 kuberoUICreateRegistry := promptLine ("Create a local Registry for Kubero" , "[y/n]" , "n" )
629-
630655 if kuberoUICreateRegistry == "y" {
631656 kuberoUIConfig .Spec .Registry .Create = true
632- kuberoUIConfig .Spec .Registry .Host = "registry.local.kubero.net" // registry.local.kubero.net points to localhost 127.0.0.1
633- kuberoUIConfig .Spec .Registry .Port = 80
634- } else {
635657
636- kuberoUIRegistryPort := promptLine ("Registry port" , "" , "443" )
637- kuberoUIConfig .Spec .Registry .Port , _ = strconv .Atoi (kuberoUIRegistryPort )
658+ kuberoUIRegistryStorage := promptLine ("Registry storage size" , "" , "10Gi" )
659+ kuberoUIConfig .Spec .Registry .Storage = kuberoUIRegistryStorage
660+
661+ storageClassList := getAvailableStorageClasses ()
638662
639- kuberoUIRegistryHost := promptLine ("Registry domain " , "" , "registry.yourdomain.com " )
640- kuberoUIConfig .Spec .Registry .Host = kuberoUIRegistryHost
663+ kuberoUIRegistryStorageClassName := selectFromList ("Registry storage class " , storageClassList , "" )
664+ kuberoUIConfig .Spec .Registry .StorageClassName = kuberoUIRegistryStorageClassName
641665 }
642666
667+ kuberoUIRegistryHost := promptLine ("Registry domain" , "" , "" )
668+ kuberoUIConfig .Spec .Registry .Host = kuberoUIRegistryHost
669+ kuberoUIRegistryPort := promptLine ("Registry port" , "" , "443" )
670+ kuberoUIConfig .Spec .Registry .Port , _ = strconv .Atoi (kuberoUIRegistryPort )
671+
643672 kuberoUIRegistryUsername := promptLine ("Registry username" , "" , "admin" )
644673 kuberoUIConfig .Spec .Registry .Account .Username = kuberoUIRegistryUsername
645674
@@ -648,14 +677,6 @@ func installKuberoUi() {
648677
649678 kuberoUIRegistryPasswordBytes , _ := bcrypt .GenerateFromPassword ([]byte (kuberoUIRegistryPassword ), 14 )
650679 kuberoUIConfig .Spec .Registry .Account .Hash = string (kuberoUIRegistryPasswordBytes )
651-
652- kuberoUIRegistryStorage := promptLine ("Registry storage size" , "" , "10Gi" )
653- kuberoUIConfig .Spec .Registry .Storage = kuberoUIRegistryStorage
654-
655- storageClassList := getAvailableStorageClasses ()
656-
657- kuberoUIRegistryStorageClassName := selectFromList ("Registry storage class" , storageClassList , "" )
658- kuberoUIConfig .Spec .Registry .StorageClassName = kuberoUIRegistryStorageClassName
659680 }
660681
661682 kuberoUIAudit := promptLine ("Enable Audit Logging" , "[y/n]" , "n" )
@@ -742,7 +763,7 @@ func installKuberoUi() {
742763
743764func installMonitoring () {
744765
745- if promptLine ("Enable longterm metrics" , "[y/n]" , "y" ) == "y" {
766+ if promptLine ("7) Enable longterm metrics" , "[y/n]" , "y" ) == "y" {
746767 monitoringInstalled = true
747768 } else {
748769 monitoringInstalled = false
@@ -752,7 +773,7 @@ func installMonitoring() {
752773 createNamespace ("kubero" )
753774
754775 spinner := spinner .New ("enable metrics" )
755- if promptLine ("Create local Prometheus instance" , "[y/n]" , "y" ) == "y" {
776+ if promptLine ("7.1) Create local Prometheus instance" , "[y/n]" , "y" ) == "y" {
756777 URL := "https://raw.githubusercontent.com/kubero-dev/kubero-operator/main/config/samples/application_v1alpha1_kuberoprometheus.yaml"
757778 cfmt .Println (" run command : kubectl apply -f " + URL )
758779 spinner .Start ("Installing Prometheus" )
@@ -774,7 +795,7 @@ func installMonitoring() {
774795 spinner .Success ("Prometheus installed sucessfully" )
775796 }
776797
777- if promptLine ("Enable Kubemetrtics" , "[y/n]" , "y" ) == "y" {
798+ if promptLine ("7.2) Enable Kubemetrtics" , "[y/n]" , "y" ) == "y" {
778799 cfmt .Println (" run command : kubectl patch kuberoes kubero -n kubero --type=merge" )
779800 spinner .Start ("Enabling Metrics" )
780801
@@ -919,10 +940,10 @@ func installCertManagerClusterissuer(namespace string) {
919940 var certmanagerClusterIssuer CertmanagerClusterIssuer
920941 yaml .Unmarshal (kf .Body (), & certmanagerClusterIssuer )
921942
922- arg_certmanagerContact := promptLine (
"Letsencrypt ACME contact email" ,
"" ,
"[email protected] " )
943+ arg_certmanagerContact := promptLine (
"5.1) Letsencrypt ACME contact email" ,
"" ,
"[email protected] " )
923944 certmanagerClusterIssuer .Spec .Acme .Email = arg_certmanagerContact
924945
925- clusterissuer := promptLine ("Clusterissuer Name" , "" , "letsencrypt-prod" )
946+ clusterissuer := promptLine ("5.2) Clusterissuer Name" , "" , "letsencrypt-prod" )
926947 certmanagerClusterIssuer .Metadata .Name = clusterissuer
927948
928949 certmanagerClusterIssuerYaml , _ := yaml .Marshal (certmanagerClusterIssuer )
@@ -984,7 +1005,7 @@ func installOLMCertManager() {
9841005
9851006func writeCLIconfig () {
9861007
987- ingressInstall := promptLine ("8 ) Write the Kubero CLI config" , "[y,n]" , "n" )
1008+ ingressInstall := promptLine ("10 ) Write the Kubero CLI config" , "[y,n]" , "n" )
9881009 if ingressInstall != "y" {
9891010 return
9901011 }
@@ -1042,16 +1063,19 @@ func finalMessage() {
10421063 https://docs.kubero.dev
10431064 ` )
10441065
1045- if arg_domain != "" && arg_port != "" && arg_apiToken != "" && arg_adminPassword != "" {
1046- cfmt .Println (`
1066+ protocol := "https"
1067+ if arg_port == "80" {
1068+ protocol = "http"
1069+ }
1070+ cfmt .Println (`
10471071 Your Kubero UI :{{
1048- URL : ` + arg_domain + `:` + arg_port + `
1072+ URL : ` + protocol + "://" + arg_domain + ":" + arg_port + `
10491073 User: ` + arg_adminUser + `
10501074 Pass: ` + arg_adminPassword + `}}::lightBlue
10511075 ` )
1052- } else {
1053- cfmt .Println ("\n \n {{Done - you can now login to your Kubero UI}}::lightGreen\n \n " )
1054- }
1076+
1077+ cfmt .Println ("\n \n {{Done - you can now login to your Kubero UI}}::lightGreen\n \n " )
1078+
10551079}
10561080
10571081func generateRandomString (length int , chars string ) string {
0 commit comments