8
8
"math/rand"
9
9
"os"
10
10
"os/exec"
11
+ "strconv"
11
12
"time"
12
13
13
14
"encoding/json"
@@ -17,6 +18,7 @@ import (
17
18
"github.com/leaanthony/spinner"
18
19
"github.com/spf13/cobra"
19
20
"github.com/spf13/viper"
21
+ "golang.org/x/crypto/bcrypt"
20
22
"gopkg.in/yaml.v3"
21
23
"k8s.io/client-go/tools/clientcmd"
22
24
)
@@ -586,6 +588,39 @@ func installKuberoUi() {
586
588
}
587
589
}
588
590
591
+ kuberoUIRegistry := promptLine ("Enable Buildpipeline for Kubero (BETA)" , "[y/n]" , "n" )
592
+ if kuberoUIRegistry == "y" {
593
+ kuberoUIConfig .Spec .Registry .Enabled = true
594
+
595
+ kuberoUICreateRegistry := promptLine ("Create a local Registry for Kubero" , "[y/n]" , "n" )
596
+ if kuberoUICreateRegistry == "y" {
597
+ kuberoUIConfig .Spec .Registry .Create = true
598
+ }
599
+
600
+ kuberoUIRegistryPort := promptLine ("Registry port" , "" , "443" )
601
+ kuberoUIConfig .Spec .Registry .Port , _ = strconv .Atoi (kuberoUIRegistryPort )
602
+
603
+ kuberoUIRegistryHost := promptLine ("Registry domain" , "" , "registry." + arg_domain )
604
+ kuberoUIConfig .Spec .Registry .Host = kuberoUIRegistryHost
605
+
606
+ kuberoUIRegistryUsername := promptLine ("Registry username" , "" , "admin" )
607
+ kuberoUIConfig .Spec .Registry .Account .Username = kuberoUIRegistryUsername
608
+
609
+ kuberoUIRegistryPassword := promptLine ("Registry password" , "" , generateRandomString (12 , "" ))
610
+ kuberoUIConfig .Spec .Registry .Account .Password = kuberoUIRegistryPassword
611
+
612
+ kuberoUIRegistryPasswordBytes , _ := bcrypt .GenerateFromPassword ([]byte (kuberoUIRegistryPassword ), 14 )
613
+ kuberoUIConfig .Spec .Registry .Account .Hash = string (kuberoUIRegistryPasswordBytes )
614
+
615
+ kuberoUIRegistryStorage := promptLine ("Registry storage size" , "" , "10Gi" )
616
+ kuberoUIConfig .Spec .Registry .Storage = kuberoUIRegistryStorage
617
+
618
+ storageClassList := getAvailableStorageClasses ()
619
+
620
+ kuberoUIRegistryStorageClassName := selectFromList ("Registry storage class" , storageClassList , "" )
621
+ kuberoUIConfig .Spec .Registry .StorageClassName = kuberoUIRegistryStorageClassName
622
+ }
623
+
589
624
if clusterType == "" {
590
625
clusterType = selectFromList ("Which cluster type have you insalled?" , clusterTypeList , "" )
591
626
}
@@ -832,3 +867,40 @@ func generateRandomString(length int, chars string) string {
832
867
}
833
868
return string (b )
834
869
}
870
+
871
+ func getAvailableStorageClasses () []string {
872
+ var storageClasses []string
873
+ storageClassesRaw , _ := exec .Command ("kubectl" , "get" , "storageclasses" , "-o" , "json" ).Output ()
874
+ var storageClassesList StorageClassesList
875
+ json .Unmarshal (storageClassesRaw , & storageClassesList )
876
+ for _ , storageClass := range storageClassesList .Items {
877
+ storageClasses = append (storageClasses , storageClass .Metadata .Name )
878
+ }
879
+ return storageClasses
880
+ }
881
+
882
+ type StorageClassesList struct {
883
+ APIVersion string `json:"apiVersion"`
884
+ Items []struct {
885
+ APIVersion string `json:"apiVersion"`
886
+ Kind string `json:"kind"`
887
+ Metadata struct {
888
+ Annotations struct {
889
+ KubectlKubernetesIoLastAppliedConfiguration string `json:"kubectl.kubernetes.io/last-applied-configuration"`
890
+ StorageclassKubernetesIoIsDefaultClass string `json:"storageclass.kubernetes.io/is-default-class"`
891
+ } `json:"annotations"`
892
+ CreationTimestamp time.Time `json:"creationTimestamp"`
893
+ Name string `json:"name"`
894
+ ResourceVersion string `json:"resourceVersion"`
895
+ UID string `json:"uid"`
896
+ } `json:"metadata"`
897
+ Provisioner string `json:"provisioner"`
898
+ ReclaimPolicy string `json:"reclaimPolicy"`
899
+ VolumeBindingMode string `json:"volumeBindingMode"`
900
+ } `json:"items"`
901
+ Kind string `json:"kind"`
902
+ Metadata struct {
903
+ ResourceVersion string `json:"resourceVersion"`
904
+ SelfLink string `json:"selfLink"`
905
+ } `json:"metadata"`
906
+ }
0 commit comments