Skip to content

Commit 98a6553

Browse files
authored
Merge pull request #29 from kubero-dev/227-configure-registry-with-kubero-cli
add registry configuration
2 parents 05f5a00 + 5873eb3 commit 98a6553

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed

cmd/kuberoCli/install.go

+72
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"math/rand"
99
"os"
1010
"os/exec"
11+
"strconv"
1112
"time"
1213

1314
"encoding/json"
@@ -17,6 +18,7 @@ import (
1718
"github.com/leaanthony/spinner"
1819
"github.com/spf13/cobra"
1920
"github.com/spf13/viper"
21+
"golang.org/x/crypto/bcrypt"
2022
"gopkg.in/yaml.v3"
2123
"k8s.io/client-go/tools/clientcmd"
2224
)
@@ -586,6 +588,39 @@ func installKuberoUi() {
586588
}
587589
}
588590

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+
589624
if clusterType == "" {
590625
clusterType = selectFromList("Which cluster type have you insalled?", clusterTypeList, "")
591626
}
@@ -832,3 +867,40 @@ func generateRandomString(length int, chars string) string {
832867
}
833868
return string(b)
834869
}
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+
}

cmd/kuberoCli/install.types.go

+13
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,19 @@ type KuberoUIConfig struct {
152152
} `yaml:"podAnnotations"`
153153
PodSecurityContext struct {
154154
} `yaml:"podSecurityContext"`
155+
Registry struct {
156+
Enabled bool `yaml:"enabled"`
157+
Create bool `yaml:"create"`
158+
Host string `yaml:"host"`
159+
Account struct {
160+
Username string `yaml:"username"`
161+
Password string `yaml:"password"`
162+
Hash string `yaml:"hash"`
163+
} `yaml:"account"`
164+
Port int `yaml:"port"`
165+
Storage string `yaml:"storage"`
166+
StorageClassName interface{} `yaml:"storageClassName"`
167+
} `yaml:"registry"`
155168
ReplicaCount int `yaml:"replicaCount"`
156169
Resources struct {
157170
} `yaml:"resources"`

0 commit comments

Comments
 (0)