diff --git a/cmd/kind-linux-amd64 b/cmd/kind-linux-amd64 new file mode 100644 index 0000000..5c9d770 Binary files /dev/null and b/cmd/kind-linux-amd64 differ diff --git a/cmd/main.go b/cmd/main.go index 06b343c..1d457df 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -1,9 +1,11 @@ package main import ( + "flag" "fmt" "oc-k8s/internal" "os" + "slices" ) func main() { @@ -14,31 +16,67 @@ func main() { }() if len(os.Args) < 2 { internal.Help_Func() - fmt.Println("Error: Not enought arguments") + fmt.Println("Error: Not enough arguments") return } if err := action(); err != nil { - internal.Help_Func() - fmt.Println(err) + if len(os.Args) > 2 && slices.Contains([]string{"start", "help", "stop"}, os.Args[1]) { + internal.Help_Func() + } else { + what := "" + if len(os.Args) > 2 { + what = os.Args[2] + } + switch what { + case "helm": + internal.Help_Helm() + case "k3s": + internal.Help_K3S() + case "kind": + internal.Help_Kind() + case "cluster": + internal.Help_Cluster() + case "db": + internal.Help_DB() + case "services": + internal.Help_Service() + case "values": + internal.Help_Values() + default: + internal.Help_Func() + } + flag.CommandLine.Parse(os.Args[3:]) + } + fmt.Println("ERROR", err) } } func action() error { + folder := flag.String("f", ".", "Folder to reach config/datas") + release := flag.String("r", "dev", "Release name in run") + namespace := flag.String("n", "dev", "Namespace in run") + branch := flag.String("b", "main", "Git branch/version of a OC build") + target := flag.String("y", "all", "Makefile build up mode") + dbName := flag.String("d", "opencloud", "DBName in use") + arch := flag.String("a", "linux-amd64", "Arch expected") + version := flag.String("v", "v0.30.0", "version of arch") + confFile := flag.String("c", "", "Configuration files to map") + + if len(os.Args) > 2 && slices.Contains([]string{"start", "help", "stop"}, os.Args[1]) { + flag.CommandLine.Parse(os.Args[2:]) + } else if len(os.Args) > 3 { + flag.CommandLine.Parse(os.Args[3:]) + } else { + flag.Parse() + } + action := os.Args[1] switch action { case "start": - args := []string{} - if len(os.Args) > 2 { - args = os.Args[2:] - } - internal.Start(args...) + internal.Start(*folder, *release, *namespace, *branch, *target) case "stop": - args := []string{} - if len(os.Args) > 2 { - args = os.Args[2:] - } - internal.Stop(args...) + internal.Stop(*folder, *release, *namespace) case "extract": what := os.Args[2] switch what { @@ -46,7 +84,10 @@ func action() error { return internal.ExtractTrees("assets", "./opencloud-chart") } case "help": - what := os.Args[2] + what := "" + if len(os.Args) > 2 { + what = os.Args[2] + } switch what { case "helm": internal.Help_Helm() @@ -66,13 +107,9 @@ func action() error { internal.Help_Func() } case "install": - if len(os.Args) < 3 { - return internal.Install_Func() - } - what := os.Args[2] - args := []string{} - if len(os.Args) > 3 { - args = os.Args[3:] + what := "" + if len(os.Args) > 2 { + what = os.Args[2] } switch what { case "helm": @@ -80,60 +117,53 @@ func action() error { case "k3s": return internal.Install_K3S() case "kind": - return internal.Install_Kind(args...) + return internal.Install_Kind(*arch, *version) default: - if len(os.Args) > 2 { - args = os.Args[2:] - } - internal.Install_Func(args...) + internal.Install_Func(*arch, *version) } case "create": what := os.Args[2] - args := []string{} - if len(os.Args) > 3 { - args = os.Args[3:] - } + switch what { case "helm": - return internal.Create_Helm(args...) + + return internal.Create_Helm(*folder, *release, *namespace) case "cluster": - return internal.Create_Cluster(args...) + return internal.Create_Cluster(*folder, *release) case "db": - return internal.Create_DB(args...) + return internal.Create_DB(folder, *release, *namespace, *dbName) case "services": - return internal.Create_Service(args...) + return internal.Create_Service(*folder, *release, *branch, *target) case "values": - return internal.Create_Values(args...) + return internal.Create_Values(folder, release, confFile) default: internal.Help_Func() } case "delete": - what := os.Args[2] - args := []string{} - if len(os.Args) > 3 { - args = os.Args[3:] + what := "" + if len(os.Args) > 2 { + what = os.Args[2] } switch what { case "helm": - return internal.Delete_Helm(args...) + return internal.Delete_Helm(*release, *namespace) case "cluster": - return internal.Delete_Cluster(args...) + return internal.Delete_Cluster(*folder, *release) case "db": - return internal.Delete_DB(args...) + return internal.Delete_DB(*release, *namespace, *dbName) default: internal.Help_Func() } case "upgrade": - what := os.Args[2] - args := []string{} - if len(os.Args) > 3 { - args = os.Args[3:] + what := "" + if len(os.Args) > 2 { + what = os.Args[2] } switch what { case "helm": - return internal.Upgrade_Helm(args...) + return internal.Upgrade_Helm(*folder, *release, *namespace) case "db": - return internal.Upgrade_DB(args...) + return internal.Upgrade_DB(folder, *release, *namespace, *dbName) default: internal.Help_Func() } diff --git a/cmd/oc-k8s b/cmd/oc-k8s index c827d25..adc8067 100755 Binary files a/cmd/oc-k8s and b/cmd/oc-k8s differ diff --git a/cmd/test-values.yaml b/cmd/test-values.yaml index 5f1ff8c..cbd774f 100755 --- a/cmd/test-values.yaml +++ b/cmd/test-values.yaml @@ -1,8 +1,10 @@ env: test # For storage class provisioning -clusterName: opencloud +clusterName: opencloud2 +hostNetwork: true host: beta.opencloud.com -registryHost: oc # For reverse proxy rule -scheme: https # For reverse proxy rule +registryHost: oc +hostPort: 9000 +scheme: http mongo-express: enabled: true @@ -234,6 +236,13 @@ traefik: enabled: true service: type: NodePort + ports: + web: + port: 80 + nodePort: 30950 + websecure: + port: 443 + nodePort: 30951 ingressRoute: dashboard: enabled: true @@ -241,9 +250,11 @@ traefik: entryPoints: [web] ports: web: - containerPort: 8000 - hostPort: 80 + port: 80 nodePort: 30950 + websecure: + port: 443 + nodePort: 30951 hydra: enabled: true @@ -289,6 +300,7 @@ loki: commonConfig: replication_factor: 1 storage: + storageClassName: standard type: filesystem filesystem: chunks_directory: /var/loki/chunks @@ -609,6 +621,7 @@ docker-registry-ui: claimName: docker-registry-pvc persistence: create: false + storageClassName: standard existingClaim: docker-registry-pvc accessMode: ReadWriteOnce storage: 5Gi diff --git a/deployed_config b/deployed_config deleted file mode 100644 index e2c5f92..0000000 --- a/deployed_config +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: v1 -clusters: -- cluster: - certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJYWhHK01mckdsQlV3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TmpBeE1EY3dPRE13TkROYUZ3MHpOakF4TURVd09ETTFORE5hTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUNuK0ZiOWtuWEhpb1VKZ2tzam1yNmNCVlU4WGdXeFVWdG5RczJCbWJURzNGMnVjTXAzaUovMk5FVlYKVnJyQVNnaldwT0xIeEdoblh6cHhyWFIyVnJFR3EraFpWcHJ6cmVHTjZFS1lkUXozanlXcjVWSTJUdXdYN1FQbgoybC9sby9JVlprRDdaUGY4QmFRVUgwVVQ3VkZ5OExQeVpZUWpVZXM1V3NDcWVKZnF6Y0xJbjhwYnNWQ2U1L2ZPCmlSUTlpcTdQTFcvblhUSGs3bVo0cXY1ZTVJd2NRa2N4bFZvSDNZanNCSzdtYnp3TzdxWTYyZWFITUlLenVYTGsKV0RTUjdaeHlJK0Z3YTZ5bVQzdGdzejBtTFkzRk1INW5HcUF2UTdBbFVzeTlUR3FCS1pSdFZiYUI0MXhnUUhsOQpPUk9BSnFTUzJvdUdFTTJURmtSY2ZuV0NiazZiQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUbXZjRUZkZ2JFWk84SUUyYmsyYUs2SjFGNDN6QVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQTZHTUVyZVFMaQpSVHZJU2V3dmxZTS96dU5QbGVydDIxTm9IaS81SHhHTEgvZDhSVjNjVzREQU5xcm5nSGkwdkUwV3lOYXFtT2ZaCmxpODBEa3dEM2ZYeDdCTHZKUmxuaUJRSDFQdXpCNSs0ZUFRLzhFeVRiUU5vTWV2TGJkQWxHT0VWZTJyK05Bb3kKMURpSHl4YkEzbEZiV2svVHhjV0NMOGQwZ01QbDV0WmJRMGMvdE5nTCs5REFnMGxUbWFVQkZ0dWZVR2llSjVIYQpCcklZS3VsbXNXWUxsK2Ezc0VDb2VqQVN4cnoxZkE0QU5VUzNUN2lDUElJOHFJMXRzUzZ2eEJiakNFM1c2TU1OCmpsRmF0NjVUR3V1Z0NYb3Jac3JKRVpVTzJ2Q1JrWUk0V0ZlTU44RkNRUHBFbmZvTHFrVHhRWVB3U2tuR2xQRXIKN1JjZ1NJVU5ZVU9uCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K - server: https://127.0.0.1:41689 - name: kind-opencloud -contexts: -- context: - cluster: kind-opencloud - user: kind-opencloud - name: kind-opencloud -current-context: kind-opencloud -kind: Config -users: -- name: kind-opencloud - user: - client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJQ3FrbTVTVVNKbGN3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TmpBeE1EY3dPRE13TkROYUZ3MHlOekF4TURjd09ETTFORE5hTUR3eApIekFkQmdOVkJBb1RGbXQxWW1WaFpHMDZZMngxYzNSbGNpMWhaRzFwYm5NeEdUQVhCZ05WQkFNVEVHdDFZbVZ5CmJtVjBaWE10WVdSdGFXNHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDd2xaOGQKVktORVZSSUUxMWVQQzJTVDZtRW1DM254Y0tHcjE0c0dBNHV5K001bTVQcnJ1TnNDd3kxVTRhNi9FY1RYZUEzbgprMS9scVFtU0R4UVkzZ21RcUdvamZFNlh0cFBzcjYxbGF4OE9FRTdtTks2bUQ4MlF6ampMd05VR2VLLzlLTHYwCnJZNWlyRkVPT3pnYjF1NTdqTWpFZWJ0UlRvOWY5V2FDdVREMVZPdS9QdEZUVE52aERMa29YMHhXNXdSN0I1TGkKY3hVdVhRUTV6MmRhZE9oQUQzQUhVUjNCU2oxYURnWjMrT3lYeWJOTFVuVlQwdVhzWWlPNUFYWGU0a0JtZzdWLwovelNsVUhKaVZrdkpQb3cyRnZiQ0I2MU5qVGdudzZaVDRKQitrSTA1eEJ1R200OFdwcC83SjBWQmducFlFTXdzCnlqci9Gb2JDaVNNNmxnd3JBZ01CQUFHalZqQlVNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUsKQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RUFqQUFNQjhHQTFVZEl3UVlNQmFBRk9hOXdRVjJCc1JrN3dnVApadVRab3JvblVYamZNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUNrL3p4MW9ib0RzTDErNXJWaU0xeVdWaDJHCllOaW1IeE02eU54YWJsbGk1QWJUbzNZcHEydEpqQmlYdlFxZWJLNHBwb1dBblFHcGhmTFNkVmsvREU2MUQ4ZFcKVC9oZWRIMzN5aEl5SmpFMGtvQ0VaOW1LdE04Q1daeXNxOXBYekZKYzhwbkVITG44SGJrRjZDdGFpLzRNL01oMQptQ3g5K09OT0ZMRTBRTk13SEFPVzlpNTk3RFdnenhZR1NlQkIwWGVJcWRDUWU0ZFB5Szk2UHNEOXFQOXZUNjYwCmNRbUVuclFtc0d0T0srdlhaclliWlNUY3NSd0RWVldiWldLYW1sbU9RYlUxeWl5SmJEVkp0TnJrRE5aMGdaNFQKTlB3Y0VoQ3Urb1R6aCtMcVpaYlIrSGlLUnZwMW5FR0I3YVgyRkowZy9YUlVjRzRBZDlvUlpMNDF5Q3F0Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K - client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBc0pXZkhWU2pSRlVTQk5kWGp3dGtrK3BoSmd0NThYQ2hxOWVMQmdPTHN2ak9adVQ2CjY3amJBc010Vk9HdXZ4SEUxM2dONTVOZjVha0prZzhVR040SmtLaHFJM3hPbDdhVDdLK3RaV3NmRGhCTzVqU3UKcGcvTmtNNDR5OERWQm5pdi9TaTc5SzJPWXF4UkRqczRHOWJ1ZTR6SXhIbTdVVTZQWC9WbWdya3c5VlRydno3UgpVMHpiNFF5NUtGOU1WdWNFZXdlUzRuTVZMbDBFT2M5blduVG9RQTl3QjFFZHdVbzlXZzRHZC9qc2w4bXpTMUoxClU5TGw3R0lqdVFGMTN1SkFab08xZi84MHBWQnlZbFpMeVQ2TU5oYjJ3Z2V0VFkwNEo4T21VK0NRZnBDTk9jUWIKaHB1UEZxYWYreWRGUVlKNldCRE1MTW82L3hhR3dva2pPcFlNS3dJREFRQUJBb0lCQUJoZ0J1OC9EQ3gyQzc4MApWSWRQM01uWVBDSEt5c0hydUwxbVN2QUJGRXNYc2pJYzRKQWlXOFVGV1NBUzZSTEI2cWlOajJuTWU1dlJtaHNaCnpyM2lCSEw5OUd6Q2ozeTh2SzJhMEhZajg4ejJybFZ6cHpvUUMyRzJQYnZPZWZsak5uUGRLQmpOems1TG1BSzkKWlBEZTJkdWZJdVdRSWkzR2lOOEhtbWRvRmR4L2FmZFpCQnNDc3BSVE5ZTmpHMHZTWklaL0V6ZUxMcjJZS1o0YgpDczdyb3prNVAwREJwUm5QamdvZE84a2FDbmZsUEo5L2lFY25rR1R4K056bml1NEY4TndBdWxobWtpVjFQVnVXClB4aVZYTUcvWkRRaExIMXZtck11ZTI5emRENXEzTTNuREx6NG5kNGd5VTB6UXdhV2hha1ZSK2hxZVFPcklYNUkKT2NvM3UyMENnWUVBNmJPOWU3QXEyMnI2Tmx0L1loaEVyc1h6SEZwK3FBTnNaK1BSMERFM1lJZldmbUJ6c2NFMApJMjdsNU5scEcrWEJuaE9McE81U1YyaVhHMXlLSTJXTkNJTkRPTHllQWRHbjFkb2JIWndEcDJzVTgwS0VZaXNNCm90WmtGQkQ4MDFIN0toTnBybzkva09teXhJaENMVVp1d3VqV3UzVkNXVzRyZDg1ejVmNGtRY1VDZ1lFQXdXN0QKQkJ2NHpBbkFyVkRQMG9Fa3p1SXZPaU9uajNVVmdXNUxWQUtyNEFPWWVyNFdKbFRTTFBIQnRXejgrVU5FTjFNaQorVDFkbDhTZ3pZK2FpMFJEWVMwcUYvWVVEbVJaeXJ2aSs5YkVGbzFsL2lLT2Z3Zlh1VTRkSnUyUE5PUzdOenpUCmZ1UkFyNlFjc1kyNzVqRzcxRTlTZktlc1NlME5teUdZTC9BQ3BTOENnWUVBcTNLWVRQaGx5SWpIdlQ4TXladEMKTC9HNnM0OVVJZEE1SkZKSEozUWp5eVo4WGtSR1BCNmdNR3A0TDVhci9MSm1nNkNWTHM5RUN5b0l5U0x2bUo0MApoQTFBTUl4M1lxQTdmN0M5ZWRCdUFkR1dFZ3czY0lsaWdNZkZyYzcwbTljbDZxMUpONjNBaVVCWlRNTWx3VzlOCmJLSkNmazI4K2p6UG1Ob1Z2cUhlV1gwQ2dZQS9uZUFCai9tSmtZT08vTTc4Mm9CeWtpMGFIL1BSMko0VURXUTAKNHhRSC91YTlKNXM5VEJRN3Q5OFBmaUxORC9SMWhhQXcvSisxZEhPMlo0NWFVejhkeks3VlpwYytESDhEa0R1Ywp2QXVOcHo5dUQ0dHg5L0JZLzNuUy9icGxtUHlCdEQyU3RCc2FLUTFPeitDR1dzRDltSUQyZ21iRmdYTkNIQkJqClk3cGEvUUtCZ1FDc0F3aXdveVcyWm1OaExWMytLL2l4TEFNMm1xOUZmVnVEbmpPbzVHTzEwSExRNHFSbTVkNksKWk9iQlQ3WnFWUFVDNFFieFRDc3ZIUkZ4TEt5YU84REV1VWJJNjl1Ly8zc0plekdZWnFOUXRUYzZCdWgrTnZCegpnZlZNZlJienE3SURwVzBYV2VsWlNMUUd0eGlncnR0N2Q2cTFTd2VsUnZKNlBHbVpHbWZZYkE9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo= - diff --git a/internal/cluster.go b/internal/cluster.go index af4dbf1..2208611 100644 --- a/internal/cluster.go +++ b/internal/cluster.go @@ -10,32 +10,24 @@ import ( func Help_Cluster() { fmt.Println(` -Cluster commands: oc-k8s cluster [env_folder] [release] - create - Create a new kind cluster named 'opencloud' - delete - Delete the kind cluster named 'opencloud' +Cluster commands: oc-k8s cluster [options] + create - Create a new kind cluster + delete - Delete the kind cluster help - Show this help message -Usage: - oc-k8s create cluster [env_folder] [release] - env_folder - Helm config folder (required, default: .) - release - Release values name (required, default: dev) - oc-k8s delete cluster [env_folder] [release] - env_folder - Helm config folder (required, default: .) - release - Release values name (required, default: dev) +Usage: + oc-k8s create cluster -f [env_folder] -r [release] + env_folder - Helm config folder (default: .) + release - Release values name (default: dev) + oc-k8s delete cluster -f [env_folder] -r [release] + env_folder - Helm config folder (default: .) + release - Release values name (default: dev) oc-k8s help cluster `) } -func Delete_Cluster(args ...string) error { - folder := "." - env := "dev" - if len(args) > 0 { - folder = args[0] - } - if len(args) > 1 { - env = args[1] - } +func Delete_Cluster(folder string, release string) error { clusterName := "opencloud" - if b, err := os.ReadFile(folder + "/" + env + "-values.yaml"); err == nil { + if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil { clusterName, _ = utils.Extract(string(b), "clusterName") } utils.Exec("kind delete cluster --name " + clusterName) @@ -43,43 +35,48 @@ func Delete_Cluster(args ...string) error { return utils.Exec("chmod 600 ~/.kube/config") } -func Create_Cluster(args ...string) error { - folder := "." - env := "dev" - if len(args) > 0 { - folder = args[0] - } - if len(args) > 1 { - env = args[1] - } - clusterName := "opencloud" - if b, err := os.ReadFile(folder + "/" + env + "-values.yaml"); err == nil { - clusterName, _ = utils.Extract(string(b), "clusterName") - } - utils.Exec("kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.9.0/deploy/longhorn.yaml ") +func Install_Cluster() error { + utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config") + utils.Exec("chmod 700 /home/mr/.kube") + return utils.Exec("chmod 600 ~/.kube/config") +} - kindConfig := ` -kind: Cluster +func Create_Cluster(folder string, release string) error { + clusterName := "opencloud" + scheme := "http" + port := "80" + if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil { + clusterName, _ = utils.Extract(string(b), "clusterName") + scheme, _ = utils.Extract(string(b), "scheme") + port, _ = utils.Extract(string(b), "hostPort") + } + utils.Exec("sudo fuser -k -TERM " + port + "/tcp") + utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config") + + containerPort := "30950" + if scheme == "https" { + containerPort = "30951" + } + kindConfig := `kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 +name: ` + clusterName + ` nodes: -- role: control-plane - kubeadmConfigPatches: - - | - kind: InitConfiguration - nodeRegistration: - kubeletExtraArgs: - node-labels: "ingress-ready=true" - extraPortMappings: - - containerPort: 30950 - hostPort: 80 - protocol: TCP - - containerPort: 30951 - hostPort: 443 - protocol: TCP + - role: control-plane + kubeadmConfigPatches: + - | + kind: InitConfiguration + nodeRegistration: + kubeletExtraArgs: + node-labels: "ingress-ready=true" + extraPortMappings: + - containerPort: ` + containerPort + ` + hostPort: ` + port + ` + protocol: TCP + containerdConfigPatches: -- |- - [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"] - endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"] + - |- + [plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"] + endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"] ` cmd := exec.Command("kind", "create", "cluster", "--name", clusterName, "--config=-") @@ -88,6 +85,7 @@ containerdConfigPatches: cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { + fmt.Println(err) return err } @@ -105,11 +103,11 @@ containerdConfigPatches: return err } - if err := utils.Exec("kubectl config use-context kind-opencloud"); err != nil { + if err := utils.Exec("kubectl config use-context kind-" + clusterName); err != nil { return err } - if err := utils.Exec("docker start opencloud-control-plane"); err != nil { + if err := utils.Exec("docker start " + clusterName + "-control-plane"); err != nil { return err } return nil diff --git a/internal/db.go b/internal/db.go index b68c57a..2f2571d 100644 --- a/internal/db.go +++ b/internal/db.go @@ -10,41 +10,35 @@ import ( func Help_DB() { fmt.Println(` -Cluster commands: oc-k8s cluster +DB commands: oc-k8s db [options] create - Add datas in db replace - Replace datas in db delete - Delete datas in db help - Show this help message Usage: - oc-k8s create db [file_path] [release] [db_name] [env_folder] - file_path - Datas folder files path (required) - release - Release values name (default: dev) - db_name - db name (default: opencloud) - env_folder - Helm config folder (required, default: .) - oc-k8s upgrade db [file_path] [release] [db_name] [env_folder] - file_path - Datas folder files path (required) - release - Release values name (default: dev) - db_name - db name (default: opencloud) - env_folder - Helm config folder (required, default: .) - oc-k8s delete db [release] [db_name] [env_folder] - release - Release values name (default: dev) - db_name - db name (default: opencloud) - env_folder - Helm config folder (required, default: .) + oc-k8s create db --d [db_name] -r [release] -n [namespace] -f [folder] + folder - Datas folder files path (required) + release - Release values name (default: dev) + namespace - Namespace values name (default: dev) + db_name - db name (default: opencloud) + folder - Helm config folder (required, default: .) + oc-k8s upgrade db -d [db_name] -r [release] -n [namespace] -f [folder] + folder - Datas folder files path (required) + release - Release values name (default: dev) + namespace - Namespace values name (default: dev) + db_name - db name (default: opencloud) + oc-k8s delete db -d [db_name] -r [release] -n [namespace] -f [folder] + release - Release values name (default: dev) + namespace - Namespace values name (default: dev) + db_name - db name (default: opencloud) + folder - Helm config folder (required, default: .) oc-k8s help db `) } -func Delete_DB(args ...string) error { - release := "dev" - db_name := "dev" - if len(args) > 0 { - release = args[0] - } - if len(args) > 1 { - db_name = args[1] - } - podName := "$(kubectl get pods -n " + release + " -o=name | grep " + release + "-mongodb-* | sed 's|pod/||')" - return utils.Exec("kubectl exec " + podName + ": -- mongosh --eval \"db.getSiblingDB('" + db_name + "').dropDatabase()\"") +func Delete_DB(release string, namespace string, dbName string) error { + podName := "$(kubectl get pods -n " + namespace + " -o=name | grep " + release + "-mongodb-* | sed 's|pod/||')" + return utils.Exec("kubectl exec " + podName + ": -- mongosh --eval \"db.getSiblingDB('" + dbName + "').dropDatabase()\"") } func getFileNames(folderPath string) []string { @@ -62,35 +56,25 @@ func getFileNames(folderPath string) []string { return fileNames } -func Create_DB(args ...string) error { - filePath := "" - if len(args) == 0 { +func Create_DB(filePath *string, release string, namespace string, dbName string) error { + if filePath == nil { return errors.New("missing db datas file path") - } else { - filePath = args[0] } - release := "dev" - db_name := "dev" - if len(args) > 1 { - release = args[1] - } - if len(args) > 2 { - db_name = args[2] - } - podName := "$(kubectl get pods -n " + release + " -o=name | grep " + release + "-mongodb-* | sed 's|pod/||')" - for _, fileName := range getFileNames(filePath) { + podName := "$(kubectl get pods -n " + namespace + " -o jsonpath='{.items[0].metadata.name}')" + for _, fileName := range getFileNames(*filePath) { fmt.Println("ADD file " + fileName + " in collection") - if err := utils.Exec("kubectl cp " + fileName + " " + podName + ":/tmp/" + fileName); err != nil { + fmt.Println("POD=" + podName + " && kubectl cp -n " + namespace + " " + *filePath + "/" + fileName + " \"$POD:/tmp/" + fileName + "\"") + if err := utils.Exec("POD=" + podName + " && kubectl cp -n " + namespace + " " + *filePath + "/" + fileName + " \"$POD:/tmp/" + fileName + "\""); err != nil { return err } - if err := utils.Exec("kubectl exec " + podName + ": -- mongoimport --db " + db_name + " --collection " + strings.ReplaceAll(fileName, ".json", "") + " --file /tmp/" + fileName + " --jsonArray"); err != nil { + if err := utils.Exec("POD=" + podName + " && kubectl exec -n " + namespace + " $POD: -- mongoimport --db " + dbName + " --collection " + strings.ReplaceAll(fileName, ".json", "") + " --file /tmp/" + fileName + " --jsonArray"); err != nil { return err } } return nil } -func Upgrade_DB(args ...string) error { - Delete_DB(args[1:]...) - return Create_DB(args...) +func Upgrade_DB(filePath *string, release string, namespace string, dbName string) error { + Delete_DB(release, namespace, dbName) + return Create_DB(filePath, release, namespace, dbName) } diff --git a/internal/func.go b/internal/func.go index 198ed99..e7da0a2 100644 --- a/internal/func.go +++ b/internal/func.go @@ -18,19 +18,19 @@ Main commands: oc-k8s start - Start opencloud k8s stop - Stop opencloud k8s Usage: - oc-k8s install [arch] [version] + oc-k8s install -a [arch] -v [version] arch - Arch of OS (required) kind_version - version of kind (required) - oc-k8s start [env_folder] [release] [namespace] [branch] [target] [hostname] - env_folder - Helm config folder (required, default: .) - release - environnement selected (default: dev) - namespace - namespace selected (default: dev) - branch - Git branch to build (default: main) - target - make target (default: all) - oc-k8s stop [env_folder] [release] [namespace] - env_folder - Helm config folder (required, default: .) - release - environnement selected (default: dev) - namespace - namespace selected (default: dev)`) + oc-k8s start -n [namespace] -r [release] -f [folder] -b [branch] -t [target] -p [port] -P [portTLS] + folder - Helm config folder (required, default: .) + release - environnement selected (default: dev) + namespace - namespace selected (default: dev) + branch - Git branch to build (default: main) + target - make target (default: all) + oc-k8s stop -n [namespace] -r [release] -f [folder] + folder - Helm config folder (required, default: .) + release - environnement selected (default: dev) + namespace - namespace selected (default: dev)`) Help_Cluster() Help_Service() Help_Helm() @@ -40,27 +40,24 @@ Usage: Help_DB() } -func Start(args ...string) error { - utils.Exec("sudo sysctl -w fs.inotify.max_user_instances=256") - utils.Exec("sudo sysctl -w fs.inotify.max_user_watches=65536") - - utils.Exec("sudo /etc/init.d/apache2 stop") - utils.Exec("sudo nginx -s stop") - Create_Cluster(args...) - Create_Service(args...) - Create_Helm(args...) +func Start(folder string, release string, namespace string, branch string, target string) error { + Stop(folder, release, namespace) + Create_K3S() + Create_Cluster(folder, release) + Create_Service(folder, release, branch, target) + Create_Helm(folder, release, namespace) return nil } -func Stop(args ...string) error { - Delete_Helm(args...) - Delete_Cluster(args...) +func Stop(folder string, release string, namespace string) error { + Delete_Helm(release, namespace) + Delete_Cluster(folder, release) return nil } -func Install_Func(args ...string) error { +func Install_Func(arch string, version string) error { Install_K3S() - Install_Kind(args...) + Install_Kind(arch, version) Install_Helm() return nil } diff --git a/internal/helm.go b/internal/helm.go index 7d72acb..609c0f8 100644 --- a/internal/helm.go +++ b/internal/helm.go @@ -16,17 +16,17 @@ Helm commands: oc-k8s helm Usage: oc-k8s install helm - oc-k8s create helm [env_folder] [release] [namespace] - env_folder - Helm config folder (required, default: .) - release - environnement selected (default: dev) + oc-k8s create helm -n [namespace] -r [release] -f [folder] + folder - Helm config folder (required, default: .) + release - environnement selected (default: dev) namespace - namespace selected (default: dev) - oc-k8s upgrade helm [env_folder] [release] [namespace] - env_folder - Helm config folder (required, default: .) - release - environnement selected (default: dev) + oc-k8s upgrade helm -n [namespace] -r [release] -f [folder] + folder - Helm config folder (required, default: .) + release - environnement selected (default: dev) namespace - namespace selected (default: dev) - oc-k8s delete helm [env_folder] [release] [namespace] - env_folder - Helm config folder (required, default: .) - release - environnement selected (default: dev) + oc-k8s delete helm -n [namespace] -r [release] -f [folder] + folder - Helm config folder (required, default: .) + release - environnement selected (default: dev) namespace - namespace selected (default: dev) oc-k8sh help helm`) } @@ -37,21 +37,13 @@ func Install_Helm() error { return nil } -func Delete_Helm(args ...string) error { - env := "dev" - namespace := "dev" - if len(args) > 0 { - env = args[0] - } - if len(args) > 1 { - namespace = args[1] - } - utils.Exec("helm uninstall " + env + " -n " + namespace) +func Delete_Helm(release string, namespace string) error { + utils.Exec("helm uninstall " + release + " -n " + namespace) utils.Exec("kubectl delete namespace " + namespace + " &") return nil } -func Create_Helm(args ...string) error { +func Create_Helm(folder string, release string, namespace string) error { tmp := "./opencloud-chart" utils.Exec("sudo rm -rf " + tmp) if err := os.MkdirAll(tmp, os.ModePerm); err != nil { @@ -60,25 +52,14 @@ func Create_Helm(args ...string) error { } ExtractTrees("assets", tmp) - folder := "." - release := "dev" - namespace := "dev" - if len(args) > 0 { - folder = args[0] - } clusterName := "opencloud" - host := "beta.opencloud.com" + host := "beta.opencloud.com" if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil { clusterName, _ = utils.Extract(string(b), "clusterName") host, _ = utils.Extract(string(b), "host") } - if len(args) > 1 { - release = args[1] - } - if len(args) > 2 { - namespace = args[2] - } + fmt.Println("set up helm") if err := utils.Exec("helm dependency update " + tmp); err != nil { return err @@ -113,14 +94,13 @@ func Create_Helm(args ...string) error { utils.Exec("kind export logs ./kind-logs") utils.Exec("sudo rm -rf " + tmp) - utils.Exec("sudo sed -i.bak \"/[[:space:]]" + host + "$/d\" /etc/hosts") utils.Exec("sudo sed -i.bak \"/[[:space:]]" + host + "$/d\" /etc/hosts") utils.Exec("echo \"$(kubectl get nodes -o jsonpath='{.items[0].status.addresses[?(@.type==\"InternalIP\")].address}') " + host + "\" | sudo tee -a /etc/hosts > /dev/null") return nil } -func Upgrade_Helm(args ...string) error { +func Upgrade_Helm(folder string, release string, namespace string) error { tmp := "./opencloud-chart" if err := os.MkdirAll(tmp, os.ModePerm); err != nil { fmt.Println(err) @@ -129,19 +109,7 @@ func Upgrade_Helm(args ...string) error { defer os.RemoveAll(tmp) ExtractTrees("assets", tmp) - folder := "." - release := "dev" - namespace := "dev" - if len(args) > 0 { - folder = args[0] - } - Delete_Cluster(args[1:]...) + Delete_Cluster(folder, release) - if len(args) > 1 { - release = args[1] - } - if len(args) > 2 { - namespace = args[2] - } return utils.Exec("helm upgrade " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml") } diff --git a/internal/k3s.go b/internal/k3s.go index 9e71eb4..57c10b6 100644 --- a/internal/k3s.go +++ b/internal/k3s.go @@ -9,10 +9,12 @@ func Help_K3S() { fmt.Println(` K3S commands: oc-k8s k3s install - Install k3s + create - Create a new cluster help - Show this help message Usage: oc-k8s install k3s + oc-k8s create k3s oc-k8s help values `) } @@ -22,12 +24,16 @@ func Install_K3S() error { if err := utils.Exec("curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644"); err != nil { return err } - utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config") - utils.Exec("chmod 700 /home/mr/.kube") - utils.Exec("sudo chmod 600 ~/.kube/config") + Create_K3S() if err := utils.Exec("sudo systemctl status k3s"); err != nil { return err } return utils.Exec("chmod 600 ~/.kube/config") } + +func Create_K3S() error { + utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config") + utils.Exec("chmod 700 /home/mr/.kube") + return utils.Exec("chmod 600 ~/.kube/config") +} diff --git a/internal/kind.go b/internal/kind.go index 32cb8cc..8eed02f 100644 --- a/internal/kind.go +++ b/internal/kind.go @@ -12,21 +12,14 @@ Kind commands: oc-k8s kind help - Show this help message Usage: - oc-k8s install kind [arch] [version] - arch - Arch of OS (required) + oc-k8s install kind -a [arch] -v [version] + arch - Arch of OS (required) kind_version - version of kind (required) oc-k8s help values `) } -func Install_Kind(args ...string) error { - arch := "linux-amd64" - version := "v0.30.0" - if len(args) > 0 { - arch = args[0] - } - if len(args) > 1 { - version = args[1] - } +func Install_Kind(arch string, version string) error { utils.Exec("curl -Lo kind-linux-amd64 https://kind.sigs.k8s.io/dl/" + version + "/kind-" + arch) + //utils.Exec("sudo rm -f kind-" + arch) return nil } diff --git a/internal/services.go b/internal/services.go index 7ecde1c..fa36bbb 100644 --- a/internal/services.go +++ b/internal/services.go @@ -27,36 +27,24 @@ Service commands: oc-k8s services help - Show this help message Usage: - oc-k8s create services [env_folder] [branch] [target] + oc-k8s create services -f [env_folder] -r [release] -b [branch] -t [target] env_folder - Helm config folder (required, default: .) - branch - Git branch to build (default: main) - target - make target (default: all) + release - Release values name (required, default: dev) + branch - Git branch to build (default: main) + target - make target (default: all) oc-k8s help services `) } -func Create_Service(args ...string) error { - folder := "." - release := "dev" - branch := "main" - target := "all" - - if len(args) > 0 { - folder = args[0] - } - if len(args) > 1 { - release = args[1] - } - if len(args) > 3 { - branch = args[3] - } - if len(args) > 4 { - target = args[4] - } +func Create_Service(folder string, release string, branch string, target string) error { scheme := "http" hostname := "beta.opencloud.com" + clusterName := "opencloud" + pport := "80" if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil { hostname, _ = utils.Extract(string(b), "host") scheme, _ = utils.Extract(string(b), "scheme") + clusterName, _ = utils.Extract(string(b), "clusterName") + pport, _ = utils.Extract(string(b), "port") } for _, repo := range REPOS { @@ -74,11 +62,10 @@ func Create_Service(args ...string) error { } } fmt.Println("Repository '" + repo + "' now exists. Pulling latest changes...") - if err := utils.Exec("cd " + repo + " && git checkout " + branch + " && git pull"); err != nil { - return err - } - - if err := utils.Exec("cd " + repo + " && export HOST=" + scheme + "://" + hostname + " && export KUBERNETES_SERVICE_HOST=" + host + " && export KUBERNETES_SERVICE_PORT=" + port + " && export KUBE_CA=" + ca + " && export KUBE_CERT=" + cert + " && export KUBE_DATA=" + key + " && make " + target); err != nil { + utils.Exec("cd " + repo + " && git checkout " + branch + " && git pull") + fmt.Println("Build '" + repo + "'...") + if err := utils.Exec("cd " + repo + " && export CLUSTER_NAME=" + clusterName + " && export HOST=" + scheme + "://" + hostname + ":" + pport + " && export KUBERNETES_SERVICE_HOST=" + host + " && export KUBERNETES_SERVICE_PORT=" + port + " && export KUBE_CA=" + ca + " && export KUBE_CERT=" + cert + " && export KUBE_DATA=" + key + " && make " + target); err != nil { + fmt.Println("ERR", err) return err } diff --git a/internal/values.go b/internal/values.go index 6fb99d0..38423f0 100644 --- a/internal/values.go +++ b/internal/values.go @@ -16,62 +16,47 @@ Values commands: oc-k8s values help - Show this help message Usage: - oc-k8s create values [release] [env_file] [env_folder] - release - Release values name (required) - env_file - env to map (optionnal) + oc-k8s create values -r [release] -f [env_folder] -c [env_file] + release - Release values name (required) env_folder - Helm config folder (optionnal, default: .) + env_file - env to map (optionnal) oc-k8s help values `) } var varPattern = regexp.MustCompile(`\$\{([A-Za-z_][A-Za-z0-9_]*)[:-]([^}]+)\}`) -func Create_Values(args ...string) error { - folder := "." - release := "dev" - conf := "" - - if len(args) > 0 { - release = args[0] - } - if len(args) > 2 { - folder = args[2] - } - if len(args) > 1 { - conf = args[1] - } - return generateConfig(conf, release, folder) +func Create_Values(output_folder *string, release *string, confFile *string) error { + return generateConfig(confFile, release, output_folder) } -func generateConfig(confFile string, release string, output_folder string) error { +func generateConfig(confFile *string, release *string, output_folder *string) error { // Load env file if provided var err error confs := map[string]string{} - if confFile != "" { - if confs, err = loadEnvFile(confFile); err != nil { + if confFile != nil && *confFile != "" { + if confs, err = loadEnvFile(*confFile); err != nil { return err } - } else { - confFile = "no configuration file" } // Read template content, err := utils.ReadFS("assets/values.yaml.template") if err != nil { return err } - confs["RELEASE"] = release + confs["RELEASE"] = *release rendered := renderTemplate(string(content), confs) // Ensure output directory exists - if err := os.MkdirAll(output_folder, 0755); err != nil { + if err := os.MkdirAll(*output_folder, 0755); err != nil { return err } // Write output - if err := os.WriteFile(output_folder+"/"+release+"-values.yaml", []byte(rendered), 0644); err != nil { + if err := os.WriteFile(*output_folder+"/"+*release+"-values.yaml", []byte(rendered), 0644); err != nil { return err } - fmt.Printf("Rendered %s from %s using %s\n", output_folder+"/"+release+"-values.yaml", "assets/values.yaml.template", confFile) + fmt.Printf("Rendered %s from %s using %s\n", *output_folder+"/"+*release+"-values.yaml", "assets/values.yaml.template", *confFile) return nil } diff --git a/oc-k8s.sh b/oc-k8s.sh deleted file mode 100755 index 0f71704..0000000 --- a/oc-k8s.sh +++ /dev/null @@ -1,430 +0,0 @@ -#!/bin/bash -REPOS=( - "oc-auth" - "oc-catalog" - "oc-datacenter" - "oc-front" - "oc-monitord" - "oc-peer" - "oc-shared" - "oc-scheduler" - "oc-schedulerd" - "oc-workflow" - "oc-workspace" -) - - -main_replace_db() { - FILES=$(ls $1 | grep .json) - RELEASE=${2:-dev} - DB_NAME=${3:-opencloud} - - POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*) - main_delete_db - main_install_db -} - -main_delete_db() { - FILES=$(ls $1 | grep .json) - RELEASE=${2:-dev} - DB_NAME=${3:-opencloud} - - - POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*) - kubectl exec /pod\//}: -- mongosh --eval "db.getSiblingDB('$DB_NAME').dropDatabase()" -} - -main_install_db() { - FILES=$(ls $1 | grep .json) - RELEASE=${2:-dev} - DB_NAME=${3:-opencloud} - - - POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*) - - for file in "${FILES[@]}"; do - echo "ADD file $file in collection ${file/.json/} : ${POD_NAME/pod\//}" - kubectl cp $file ${POD_NAME/pod\//}:/tmp/$file - kubectl exec ${POD_NAME/pod\//}: -- mongoimport --db $DB_NAME --collection ${file/.json/} --file /tmp/$file --jsonArray - done -} - - -main_install() { - main_install_k3s - main_install_kind ${@:1} - main_install_helm -} - -main_install_k3s() { - sudo /usr/local/bin/k3s-uninstall.sh | true - sudo rm -rf /etc/rancher /var/lib/rancher | true - curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644 - sudo cp/etc/rancher/k3s/k3s.yaml ~/.kube/config - sudo systemctl status k3s -} - -main_install_helm() { - curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # install helm - helm version -} - -main_install_kind() { - ARCH=${1:-linux-amd64} # linux-amd64 linux-arm64 darwin-amd64 darwin-arm64 windows-amd64.exe - VERSION=${2:-v0.30.0} - if [[ "$ARCH" =~ *windows* ]]; then - ARCH=${ARCH}.exe - fi - curl -Lo kind-linux-amd64 https://kind.sigs.k8s.io/dl/${VERSION}/kind-${ARCH} -} -# values template -main_create_values() { - set -euo pipefail - - if [[ -z "${1:-}" ]]; then - echo "Error: No RELEASE PROVIDED." - main_help_values - exit 1 - fi - - TEMPLATE_FILE=./opencloud/values.yaml.template - ENV_FILE=${2:-} - OUTPUT_FILE="./opencloud/values/$1-values.yaml" - - # Load environment variables from env file - if [[ -f "$ENV_FILE" ]]; then - set -a - source "$ENV_FILE" - set +a - fi - export RELEASE=$1 - # Process the template - awk ' - { - line = $0 - # match ${VAR:-default} patterns - while (match(line, /\$\{([A-Za-z_][A-Za-z0-9_]*):-([^}]+)\}/, arr)) { - varname = arr[1] - defaultval = arr[2] - # get environment value or default - cmd = "bash -c '\''echo ${" varname ":-" defaultval "}'\''" - cmd | getline value - close(cmd) - line = substr(line, 1, RSTART-1) value substr(line, RSTART+RLENGTH) - } - print line - }' "$TEMPLATE_FILE" > "$OUTPUT_FILE" - - echo "Rendered $OUTPUT_FILE from $TEMPLATE_FILE using $ENV_FILE" -} - -# HELM SERVICE -main_create_helm() { - RELEASE_NAME=${1:-dev} - RELEASE_NAMESPACE=${1:-dev} - main_delete_helm "${1:-dev}" | true - helm dependency update - helm dependency build - kubectl delete sc longhorn-nor1 - - #kubectl apply -f ./opencloud/templates/sc-longhorn-nor1.yaml - #kubectl label storageclass longhorn-nor1 app.kubernetes.io/managed-by=Helm - #kubectl annotate storageclass longhorn-nor1 \ - # meta.helm.sh/release-name=${RELEASE_NAMESPACE} \ - # meta.helm.sh/release-namespace=${RELEASE_NAMESPACE} - ulimit -n 1000000 - helm install ${RELEASE_NAME} opencloud -n ${RELEASE_NAMESPACE} --create-namespace -f ./opencloud/values/${RELEASE_NAME}-values.yaml --debug - - kind get kubeconfig --name opencloud > ./deployed_config - - kind export logs ./kind-logs -} - -main_upgrade_helm() { - RELEASE_NAME=${1:-dev} - RELEASE_NAMESPACE=${1:-dev} - - helm upgrade ${RELEASE_NAME} opencloud -n ${RELEASE_NAMESPACE} --create-namespace -f ./opencloud/values/${RELEASE_NAME}-values.yaml -} - -main_delete_helm() { - RELEASE_NAME=${1:-dev} - RELEASE_NAMESPACE=${1:-dev} - - helm uninstall ${RELEASE_NAME} -n ${RELEASE_NAMESPACE} - kubectl delete namespace ${RELEASE_NAMESPACE} & - - export KUBECONFIG=$(realpath ~/.kube/config) -} -# CLUSTER SERVICE - -build_service() { - local repo_url="https://cloud.o-forge.io/core/$1.git" - local branch=${2:-main} - local target=${3:-all} - local hostname=${4:-beta.opencloud.com} - local repo_name=$(basename "$repo_url" .git) - - server=$(grep 'server:' ~/.kube/config | awk '{print $2}') - - host=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1) - port=6443 - ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}') - cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}') - key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}') - - echo "Processing repository: $repo_name" - - if [ ! -d "$1" ]; then - echo "Cloning repository: $repo_name" - git clone "$repo_url" - if [ $? -ne 0 ]; then - echo "Error cloning $repo_url" - exit 1 - fi - fi - echo "Repository '$repo_name' now exists. Pulling latest changes..." - cd "$repo_name" && git checkout $branch && git pull - - echo "Running 'make $target' in $repo_name" - export HOST="$hostname" && export KUBERNETES_SERVICE_HOST=$host && export KUBERNETES_SERVICE_PORT=$port \ - && export KUBE_CA=$ca && export KUBE_CERT=$cert && export KUBE_DATA=$key && make "$target" - if [ $? -ne 0 ]; then - echo "Error: make $target failed in $dir" - exit 1 - fi - cd .. -} - -main_build_services() { - local env=${1:-dev} - local branch=${2:-main} - local target=${3:-all} - local hostname=$(grep 'host:' ./opencloud/values/$env-values.yaml | awk '{print $2}') - # docker system prune -af - cd .. - # Iterate through each repository in the list - for repo in "${REPOS[@]}"; do - build_service "$repo" "$branch" "$target" "$hostname" - done - echo "All repositories processed successfully." -} - -# CLUSTER CONTROLLER - -main_delete_cluster() { - kind delete cluster --name opencloud | true -} - -main_create_cluster() { - main_delete_cluster | true - kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.9.0/deploy/longhorn.yaml - cat < /tmp/kind-opencloud.kubeconfig - - # Merge the temporary kubeconfig with your existing one safely - KUBECONFIG=~/.kube/config:/tmp/kind-opencloud.kubeconfig kubectl config view --flatten --merge --minify > /tmp/merged-kubeconfig.yaml - - # Replace the original kubeconfig safely - mv /tmp/merged-kubeconfig.yaml ~/.kube/config - chmod 600 ~/.kube/config - - # Verify the contexts - kubectl config get-contexts - # Switch to the new kind cluster context - kubectl config use-context kind-opencloud -} - -main_help_k3s() { - echo " -Cluster commands: oc-k8s k3s - install - Install k3s - help - Show this help message - -Usage: - oc-k8s install k3s - oc-k8s help values -" -} - -main_help_kind() { - echo " -Cluster commands: oc-k8s kind - install - Install kind - help - Show this help message - -Usage: - oc-k8s install kind [arch] [version] - arch - Arch of OS (required) - kind_version - version of kind (required) - oc-k8s help values -" -} - -main_help_values() { - echo " -Cluster commands: oc-k8s values - create - Create a new values release yaml - help - Show this help message - -Usage: - oc-k8s create values [release] [env_file (optionnal)] - release - Release values name (required) - env_file - env to map (optionnal) - oc-k8s help values -" -} - -main_help_db() { - echo " -Cluster commands: oc-k8s cluster - create - Add datas in db - replace - Replace datas in db - delete - Delete datas in db - help - Show this help message - -Usage: - oc-k8s create db [file_path] [release] [db_name] - file_path - Datas folder files path (required) - release - Release values name (default: dev) - db_name - db name (default: opencloud) - oc-k8s replace db [file_path] [release] [db_name] - file_path - Datas folder files path (required) - release - Release values name (default: dev) - db_name - db name (default: opencloud) - oc-k8s delete db [file_path] [release] [db_name] - file_path - Datas folder files path (required) - release - Release values name (default: dev) - db_name - db name (default: opencloud) - oc-k8s help db -" -} - -main_help_cluster() { - echo " -Cluster commands: oc-k8s cluster - create - Create a new kind cluster named 'opencloud' - delete - Delete the kind cluster named 'opencloud' - help - Show this help message - -Usage: - oc-k8s create cluster - oc-k8s delete cluster - oc-k8s help cluster -" -} - -main_help_services() { - echo " -Service commands: oc-k8s services - build - Build all opencloud services - help - Show this help message - -Usage: - oc-k8s build services [branch] [target] - branch - Git branch to build (default: main) - target - make target (default: all) - oc-k8s help services -" -} - -main_help_helm() { - echo " -Helm commands: oc-k8s helm - install - Install Helm - create - Install a helm release for the given environment (default: dev) - delete - Uninstall a helm release for the given environment (default: dev) - help - Show this help message - -Usage: - oc-k8s install helm - oc-k8s create helm [env] - env - environnement selected (default: dev) - oc-k8s upgrade helm [env] - env - environnement selected (default: dev) - oc-k8s delete helm [env] - env - environnement selected (default: dev) - oc-k8sh help helm -" -} - -main_help_all() { - echo " -Main commands: oc-k8s - install - Install opencloud dependancies [arch] [version] - start - Start opencloud k8s - stop - Stop opencloud k8s -Usage: - oc-k8s install [arch] [version] - arch - Arch of OS (required) - kind_version - version of kind (required) - oc-k8s start [env] [branch] [target] [hostname] - env - environnement selected (default: dev) - branch - Git branch to build (default: main) - target - make target (default: all) - oc-k8s stop -" - main_help_cluster - main_help_services - main_help_helm - main_help_values - main_help_k3s - main_help_kind - main_help_db -} - -main_start() { - sudo sysctl -w fs.inotify.max_user_instances=256 - sudo /etc/init.d/apache2 stop - sudo nginx -s stop - main_create_cluster - main_build_services "${@:1}" - cd ./oc-k8s - main_create_helm $1 -} - -main_stop() { - main_delete_helm "${@:1}" | true - main_delete_cluster "${@:1}" | true -} - -if declare -f main_${1} > /dev/null; then - main_${1} "${@:2}" -elif declare -f main_${1}_${2} > /dev/null; then - main_${1}_${2} "${@:3}" -else - echo "Function does not exist" - main_help_all -fi \ No newline at end of file diff --git a/utils/assets/templates/oc-front/config.yaml b/utils/assets/templates/oc-front/config.yaml index 76124ac..c9f9c8b 100644 --- a/utils/assets/templates/oc-front/config.yaml +++ b/utils/assets/templates/oc-front/config.yaml @@ -13,6 +13,6 @@ data: "PEER_HOST": "peers", "DATACENTER_HOST": "datacenter", "COLLABORATIVE_AREA_HOST": "shared", - "HOST": "{{ .Values.scheme }}://{{ .Values.host }}", + "HOST": "{{ .Values.scheme }}://{{ .Values.host }}:{{ .Values.port }}", } {{- end }} \ No newline at end of file diff --git a/utils/assets/values.yaml.template b/utils/assets/values.yaml.template index 09e0a94..da04f0a 100644 --- a/utils/assets/values.yaml.template +++ b/utils/assets/values.yaml.template @@ -2,8 +2,9 @@ env: ${RELEASE:-prod} # For storage class provisioning clusterName: ${CLUSTER_NAME:-opencloud} hostNetwork: true host: ${HOST:-beta.opencloud.com} -registryHost: ${REGISTRY_HOST:-oc} # For reverse proxy rule -scheme: http # For reverse proxy rule +hostPort: ${PORT:-80} +registryHost: ${REGISTRY_HOST:-oc} +scheme: ${SCHEME:-http} mongo-express: enabled: ${OC_MONGOEXPRESS_ENABLED:-true} @@ -41,7 +42,7 @@ mongodb: storageClassName: ${OC_MONGO_STORAGE:-"standard"} accessModes: - ReadWriteOnce - size: ${OC_MONGO_SIZE:-5000Mi} + size: ${OC_MONGO_SIZE:-5Gi} persistentVolumeClaimRetentionPolicy: enabled: true whenDeleted: Retain @@ -235,6 +236,13 @@ traefik: enabled: ${OC_TRAEFIK_ENABLED:-true} service: type: NodePort + ports: + web: + port: 80 + nodePort: 30950 + websecure: + port: 443 + nodePort: 30951 ingressRoute: dashboard: enabled: true @@ -242,9 +250,12 @@ traefik: entryPoints: [web] ports: web: - containerPort: 8000 - hostPort: 80 + port: 80 nodePort: 30950 + websecure: + port: 443 + nodePort: 30951 + hydra: enabled: ${OC_HYDRA_ENABLED:-true} maester: diff --git a/utils/oc-k8s.sh b/utils/oc-k8s.sh deleted file mode 100755 index 0f71704..0000000 --- a/utils/oc-k8s.sh +++ /dev/null @@ -1,430 +0,0 @@ -#!/bin/bash -REPOS=( - "oc-auth" - "oc-catalog" - "oc-datacenter" - "oc-front" - "oc-monitord" - "oc-peer" - "oc-shared" - "oc-scheduler" - "oc-schedulerd" - "oc-workflow" - "oc-workspace" -) - - -main_replace_db() { - FILES=$(ls $1 | grep .json) - RELEASE=${2:-dev} - DB_NAME=${3:-opencloud} - - POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*) - main_delete_db - main_install_db -} - -main_delete_db() { - FILES=$(ls $1 | grep .json) - RELEASE=${2:-dev} - DB_NAME=${3:-opencloud} - - - POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*) - kubectl exec /pod\//}: -- mongosh --eval "db.getSiblingDB('$DB_NAME').dropDatabase()" -} - -main_install_db() { - FILES=$(ls $1 | grep .json) - RELEASE=${2:-dev} - DB_NAME=${3:-opencloud} - - - POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*) - - for file in "${FILES[@]}"; do - echo "ADD file $file in collection ${file/.json/} : ${POD_NAME/pod\//}" - kubectl cp $file ${POD_NAME/pod\//}:/tmp/$file - kubectl exec ${POD_NAME/pod\//}: -- mongoimport --db $DB_NAME --collection ${file/.json/} --file /tmp/$file --jsonArray - done -} - - -main_install() { - main_install_k3s - main_install_kind ${@:1} - main_install_helm -} - -main_install_k3s() { - sudo /usr/local/bin/k3s-uninstall.sh | true - sudo rm -rf /etc/rancher /var/lib/rancher | true - curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644 - sudo cp/etc/rancher/k3s/k3s.yaml ~/.kube/config - sudo systemctl status k3s -} - -main_install_helm() { - curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # install helm - helm version -} - -main_install_kind() { - ARCH=${1:-linux-amd64} # linux-amd64 linux-arm64 darwin-amd64 darwin-arm64 windows-amd64.exe - VERSION=${2:-v0.30.0} - if [[ "$ARCH" =~ *windows* ]]; then - ARCH=${ARCH}.exe - fi - curl -Lo kind-linux-amd64 https://kind.sigs.k8s.io/dl/${VERSION}/kind-${ARCH} -} -# values template -main_create_values() { - set -euo pipefail - - if [[ -z "${1:-}" ]]; then - echo "Error: No RELEASE PROVIDED." - main_help_values - exit 1 - fi - - TEMPLATE_FILE=./opencloud/values.yaml.template - ENV_FILE=${2:-} - OUTPUT_FILE="./opencloud/values/$1-values.yaml" - - # Load environment variables from env file - if [[ -f "$ENV_FILE" ]]; then - set -a - source "$ENV_FILE" - set +a - fi - export RELEASE=$1 - # Process the template - awk ' - { - line = $0 - # match ${VAR:-default} patterns - while (match(line, /\$\{([A-Za-z_][A-Za-z0-9_]*):-([^}]+)\}/, arr)) { - varname = arr[1] - defaultval = arr[2] - # get environment value or default - cmd = "bash -c '\''echo ${" varname ":-" defaultval "}'\''" - cmd | getline value - close(cmd) - line = substr(line, 1, RSTART-1) value substr(line, RSTART+RLENGTH) - } - print line - }' "$TEMPLATE_FILE" > "$OUTPUT_FILE" - - echo "Rendered $OUTPUT_FILE from $TEMPLATE_FILE using $ENV_FILE" -} - -# HELM SERVICE -main_create_helm() { - RELEASE_NAME=${1:-dev} - RELEASE_NAMESPACE=${1:-dev} - main_delete_helm "${1:-dev}" | true - helm dependency update - helm dependency build - kubectl delete sc longhorn-nor1 - - #kubectl apply -f ./opencloud/templates/sc-longhorn-nor1.yaml - #kubectl label storageclass longhorn-nor1 app.kubernetes.io/managed-by=Helm - #kubectl annotate storageclass longhorn-nor1 \ - # meta.helm.sh/release-name=${RELEASE_NAMESPACE} \ - # meta.helm.sh/release-namespace=${RELEASE_NAMESPACE} - ulimit -n 1000000 - helm install ${RELEASE_NAME} opencloud -n ${RELEASE_NAMESPACE} --create-namespace -f ./opencloud/values/${RELEASE_NAME}-values.yaml --debug - - kind get kubeconfig --name opencloud > ./deployed_config - - kind export logs ./kind-logs -} - -main_upgrade_helm() { - RELEASE_NAME=${1:-dev} - RELEASE_NAMESPACE=${1:-dev} - - helm upgrade ${RELEASE_NAME} opencloud -n ${RELEASE_NAMESPACE} --create-namespace -f ./opencloud/values/${RELEASE_NAME}-values.yaml -} - -main_delete_helm() { - RELEASE_NAME=${1:-dev} - RELEASE_NAMESPACE=${1:-dev} - - helm uninstall ${RELEASE_NAME} -n ${RELEASE_NAMESPACE} - kubectl delete namespace ${RELEASE_NAMESPACE} & - - export KUBECONFIG=$(realpath ~/.kube/config) -} -# CLUSTER SERVICE - -build_service() { - local repo_url="https://cloud.o-forge.io/core/$1.git" - local branch=${2:-main} - local target=${3:-all} - local hostname=${4:-beta.opencloud.com} - local repo_name=$(basename "$repo_url" .git) - - server=$(grep 'server:' ~/.kube/config | awk '{print $2}') - - host=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1) - port=6443 - ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}') - cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}') - key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}') - - echo "Processing repository: $repo_name" - - if [ ! -d "$1" ]; then - echo "Cloning repository: $repo_name" - git clone "$repo_url" - if [ $? -ne 0 ]; then - echo "Error cloning $repo_url" - exit 1 - fi - fi - echo "Repository '$repo_name' now exists. Pulling latest changes..." - cd "$repo_name" && git checkout $branch && git pull - - echo "Running 'make $target' in $repo_name" - export HOST="$hostname" && export KUBERNETES_SERVICE_HOST=$host && export KUBERNETES_SERVICE_PORT=$port \ - && export KUBE_CA=$ca && export KUBE_CERT=$cert && export KUBE_DATA=$key && make "$target" - if [ $? -ne 0 ]; then - echo "Error: make $target failed in $dir" - exit 1 - fi - cd .. -} - -main_build_services() { - local env=${1:-dev} - local branch=${2:-main} - local target=${3:-all} - local hostname=$(grep 'host:' ./opencloud/values/$env-values.yaml | awk '{print $2}') - # docker system prune -af - cd .. - # Iterate through each repository in the list - for repo in "${REPOS[@]}"; do - build_service "$repo" "$branch" "$target" "$hostname" - done - echo "All repositories processed successfully." -} - -# CLUSTER CONTROLLER - -main_delete_cluster() { - kind delete cluster --name opencloud | true -} - -main_create_cluster() { - main_delete_cluster | true - kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.9.0/deploy/longhorn.yaml - cat < /tmp/kind-opencloud.kubeconfig - - # Merge the temporary kubeconfig with your existing one safely - KUBECONFIG=~/.kube/config:/tmp/kind-opencloud.kubeconfig kubectl config view --flatten --merge --minify > /tmp/merged-kubeconfig.yaml - - # Replace the original kubeconfig safely - mv /tmp/merged-kubeconfig.yaml ~/.kube/config - chmod 600 ~/.kube/config - - # Verify the contexts - kubectl config get-contexts - # Switch to the new kind cluster context - kubectl config use-context kind-opencloud -} - -main_help_k3s() { - echo " -Cluster commands: oc-k8s k3s - install - Install k3s - help - Show this help message - -Usage: - oc-k8s install k3s - oc-k8s help values -" -} - -main_help_kind() { - echo " -Cluster commands: oc-k8s kind - install - Install kind - help - Show this help message - -Usage: - oc-k8s install kind [arch] [version] - arch - Arch of OS (required) - kind_version - version of kind (required) - oc-k8s help values -" -} - -main_help_values() { - echo " -Cluster commands: oc-k8s values - create - Create a new values release yaml - help - Show this help message - -Usage: - oc-k8s create values [release] [env_file (optionnal)] - release - Release values name (required) - env_file - env to map (optionnal) - oc-k8s help values -" -} - -main_help_db() { - echo " -Cluster commands: oc-k8s cluster - create - Add datas in db - replace - Replace datas in db - delete - Delete datas in db - help - Show this help message - -Usage: - oc-k8s create db [file_path] [release] [db_name] - file_path - Datas folder files path (required) - release - Release values name (default: dev) - db_name - db name (default: opencloud) - oc-k8s replace db [file_path] [release] [db_name] - file_path - Datas folder files path (required) - release - Release values name (default: dev) - db_name - db name (default: opencloud) - oc-k8s delete db [file_path] [release] [db_name] - file_path - Datas folder files path (required) - release - Release values name (default: dev) - db_name - db name (default: opencloud) - oc-k8s help db -" -} - -main_help_cluster() { - echo " -Cluster commands: oc-k8s cluster - create - Create a new kind cluster named 'opencloud' - delete - Delete the kind cluster named 'opencloud' - help - Show this help message - -Usage: - oc-k8s create cluster - oc-k8s delete cluster - oc-k8s help cluster -" -} - -main_help_services() { - echo " -Service commands: oc-k8s services - build - Build all opencloud services - help - Show this help message - -Usage: - oc-k8s build services [branch] [target] - branch - Git branch to build (default: main) - target - make target (default: all) - oc-k8s help services -" -} - -main_help_helm() { - echo " -Helm commands: oc-k8s helm - install - Install Helm - create - Install a helm release for the given environment (default: dev) - delete - Uninstall a helm release for the given environment (default: dev) - help - Show this help message - -Usage: - oc-k8s install helm - oc-k8s create helm [env] - env - environnement selected (default: dev) - oc-k8s upgrade helm [env] - env - environnement selected (default: dev) - oc-k8s delete helm [env] - env - environnement selected (default: dev) - oc-k8sh help helm -" -} - -main_help_all() { - echo " -Main commands: oc-k8s - install - Install opencloud dependancies [arch] [version] - start - Start opencloud k8s - stop - Stop opencloud k8s -Usage: - oc-k8s install [arch] [version] - arch - Arch of OS (required) - kind_version - version of kind (required) - oc-k8s start [env] [branch] [target] [hostname] - env - environnement selected (default: dev) - branch - Git branch to build (default: main) - target - make target (default: all) - oc-k8s stop -" - main_help_cluster - main_help_services - main_help_helm - main_help_values - main_help_k3s - main_help_kind - main_help_db -} - -main_start() { - sudo sysctl -w fs.inotify.max_user_instances=256 - sudo /etc/init.d/apache2 stop - sudo nginx -s stop - main_create_cluster - main_build_services "${@:1}" - cd ./oc-k8s - main_create_helm $1 -} - -main_stop() { - main_delete_helm "${@:1}" | true - main_delete_cluster "${@:1}" | true -} - -if declare -f main_${1} > /dev/null; then - main_${1} "${@:2}" -elif declare -f main_${1}_${2} > /dev/null; then - main_${1}_${2} "${@:3}" -else - echo "Function does not exist" - main_help_all -fi \ No newline at end of file diff --git a/utils/test-values.yaml b/utils/test-values.yaml deleted file mode 100644 index f9e4df5..0000000 --- a/utils/test-values.yaml +++ /dev/null @@ -1,620 +0,0 @@ -env: sqsdq # For storage class provisioning -clusterName: opencloud -host: beta.opencloud.com -registryHost: oc # For reverse proxy rule -scheme: https # For reverse proxy rule - -mongo-express: - enabled: true - mongodbServer: "sqsdq-mongodb.sqsdq" # TO LOOK AFTER - mongodbPort: 27017 - mongodbEnableAdmin: true - mongodbAdminUsername: admin - mongodbAdminPassword: admin - siteBaseUrl: /mongoexpress - basicAuthUsername: admin - basicAuthPassword: admin - mongodb: - enabled: false - -mongodb: - enabled: true - global: - defaultStorageClass: "" - storageClass: "" - architecture: standalone - useStatefulSet: false - auth: - enabled: true - rootUser: admin - rootPassword: admin - databases: [ opencloud ] - usernames: [ admin ] - passwords: [ admin ] - resourcesPreset: "small" - replicaCount: 1 - persistence: - enabled: true - create: false # do not auto-create - existingClaim: mongo-pvc - storageClassName: "" - accessModes: - - ReadWriteOnce - size: 5000Mi - persistentVolumeClaimRetentionPolicy: - enabled: true - whenDeleted: Retain - whenScaled: Retain - arbiter: - enabled: false - livenessProbe: - enabled: true - readinessProbe: - enabled: true - -nats: - enabled: true - extraEnv: - - name: NATS_MAX_FILE_DESCRIPTORS - value: "65536" - extraVolumeMounts: - - name: nats-config - mountPath: /etc/nats - config: - jetstream: - enabled: true - fileStore: - enabled: true - dir: /data/jetstream # mountPath used by template - # pvc block must live here - pvc: - enabled: true - # if you already created the claim, set existingClaim: - existingClaim: nats-pvc - # storageClassName: local-path or standard (use the SC in your cluster) - storageClassName: "" - size: 50Gi - # name is the volume name used in volumeMounts; keep it simple - name: nats-jetstream - -openldap: - enabled: true - test: - enabled: false - ltb-passwd: - enabled: false - replicaCount: 1 - image: - repository: osixia/openldap - tls: - enabled: false - env: - LDAP_ORGANISATION: Opencloud - LDAP_DOMAIN: opencloud.com - LDAP_BACKEND: "mdb" - LDAP_TLS: "false" - LDAP_TLS_ENFORCE: "false" - LDAP_REMOVE_CONFIG_AFTER_SETUP: "true" - adminPassword: admin - configPassword: "config" - phpldapadmin: - enabled: false - persistence: - enabled: true - create: false # do not auto-create - existingClaim: openldap-pvc - accessMode: ReadWriteOnce - size: 10Mi - storageClassName: "" - replication: - enabled: false - externalLDAP: - enabled: false - url: ${OC_LDAP_EXTERNAL_ENDPOINT} - bindDN: cn=admin,dc=example,dc=com - bindPassword: admin - customLdifFiles: - 01-schema.ldif: |- - dn: ou=groups,dc=example,dc=com - objectClass: organizationalUnit - ou: groups - - dn: ou=users,dc=example,dc=com - objectClass: organizationalUnit - ou: users - - dn: cn=lastGID,dc=example,dc=com - objectClass: device - objectClass: top - description: Records the last GID used to create a Posix group. This prevents the re-use of a GID from a deleted group. - cn: lastGID - serialNumber: 2001 - - dn: cn=lastUID,dc=example,dc=com - objectClass: device - objectClass: top - serialNumber: 2001 - description: Records the last UID used to create a Posix account. This prevents the re-use of a UID from a deleted account. - cn: lastUID - - dn: cn=everybody,ou=groups,dc=example,dc=com - objectClass: top - objectClass: posixGroup - cn: everybody - memberUid: admin - gidNumber: 2003 - - 02-ldapadmin.ldif : |- - dn: cn=ldapadmin,ou=groups,dc=example,dc=com - objectClass: top - objectClass: posixGroup - cn: ldapadmin - memberUid: ldapadmin - gidNumber: 2001 - - dn: uid=ldapadmin,ou=users,dc=example,dc=com - givenName: ldap - sn: admin - uid: ldapadmin - cn: ldapadmin - mail: ldapadmin@example.com - objectClass: person - objectClass: inetOrgPerson - objectClass: posixAccount - userPassword: sai1yeiT - uidNumber: 2001 - gidNumber: 2001 - loginShell: /bin/bash - homeDirectory: /home/ldapadmin - - 03-opencloudadmin.ldif : |- - dn: uid=admin,ou=users,dc=example,dc=com - objectClass: inetOrgPerson - cn: Admin - sn: Istrator - uid: admin - userPassword: admin - mail: admin@example.com - ou: users - - dn: ou=AppRoles,dc=example,dc=com - objectClass: organizationalunit - ou: AppRoles - description: AppRoles - - dn: ou=App1,ou=AppRoles,dc=example,dc=com - objectClass: organizationalunit - ou: App1 - description: App1 - -prometheus: - enabled: true - enableTraefikProxyIntegration: true - server: - persistentVolume: - enabled: true - size: 5Gi - service: - type: ClusterIP - resources: - limits: - cpu: 500m - memory: 512Mi - requests: - cpu: 128m - memory: 256Mi - -# ldap user manager configuration -ldapUserManager: - enabled: true - env: - SERVER_HOSTNAME: ldap.exemple.com - LDAP_BASE_DN: dc=example,dc=com - LDAP_REQUIRE_STARTTLS: "false" - LDAP_ADMINS_GROUP: ldapadmin - LDAP_ADMIN_BIND_DN: cn=admin,dc=example,dc=com - LDAP_ADMIN_BIND_PWD: admin - LDAP_IGNORE_CERT_ERRORS: "true" - EMAIL_DOMAIN: "" - NO_HTTPS: "true" - SERVER_PATH: "/users" - ORGANISATION_NAME: Opencloud - LDAP_USER_OU: users - LDAP_GROUP_OU: groups - ACCEPT_WEAK_PASSWORDS: "true" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - -traefik: - enabled: true - service: - type: NodePort - ingressRoute: - dashboard: - enabled: true - matchRule: Host(`localhost`) && PathPrefix(`/api`) || PathPrefix(`/dashboard`) - entryPoints: [web] - ports: - web: - containerPort: 8000 - hostPort: 80 - nodePort: 30950 - -hydra: - enabled: true - maester: - enabled: true - secret: - enabled: false - nameOverride: hydra-secret - hashSumEnabled: false - hydra: - dev: true - existingSecret: hydra-secret - config: - dsn: memory - urls: - # login: https://localhost-login/authentication/login - # consent: https://localhost-consent/consent/consent - # logout: https://localhost-logout/authentication/logout - self: - issuer: "http://sqsdq-hydra-public.sqsdq:4444/" - -keto: - enabled: true - keto: - config: - serve: - read: - port: 4466 - write: - port: 4467 - metrics: - port: 4468 - namespaces: - - id: 0 - name: open-cloud - dsn: memory - - -loki: - enabled: true - loki: - - auth_enabled: false - commonConfig: - replication_factor: 1 - storage: - bucketNames: - chunks: chunks - ruler: ruler - admin: admin - type: filesystem - filesystem: - chunks_directory: /var/loki/chunks - rules_directory: /var/loki/rules - admin_api_directory: /var/loki/admin - storage_config: - boltdb_shipper: - active_index_directory: /var/loki/index - filesystem: - directory: /var/loki/chunks - limits_config: - allow_structured_metadata: false - schemaConfig: - configs: - - from: "2020-01-01" - store: boltdb-shipper - object_store: filesystem - schema: v11 - index: - prefix: index_ - period: 24h - ingester: - chunk_encoding: snappy - tracing: - enabled: true - querier: - max_concurrent: 2 - - deploymentMode: SingleBinary - singleBinary: - extraVolumes: - - name: loki-storage - persistentVolumeClaim: - claimName: loki-pvc - persistence: - enabled: false # Deactivate loki auto provisioning, rely on existing PVC - accessMode: ReadWriteOnce - size: 1Gi - storageClassName: "" - create: false - claimName: loki-pvc - - extraVolumeMounts: - - name: loki-storage - mountPath: /var/loki - replicas: 1 - resources: - limits: - cpu: 3 - memory: 4Gi - requests: - cpu: 1 - memory: 0.5Gi - extraEnv: - - name: GOMEMLIMIT - value: 3750MiB - - chunksCache: - # default is 500MB, with limited memory keep this smaller - writebackSizeLimit: 10MB - - # Enable minio for storage - minio: - enabled: false - # Zero out replica counts of other deployment modes - backend: - replicas: 0 - read: - replicas: 0 - write: - replicas: 0 - ingester: - replicas: 0 - querier: - replicas: 0 - queryFrontend: - replicas: 0 - queryScheduler: - replicas: 0 - distributor: - replicas: 0 - compactor: - replicas: 0 - indexGateway: - replicas: 0 - bloomCompactor: - replicas: 0 - bloomGateway: - replicas: 0 - -grafana: - enabled: true - adminUser: admin - adminPassword: admin - persistence: - enabled: true - size: 1Gi - service: - type: ClusterIP - -argo-workflows: - enabled: false - workflow: - serviceAccount: - create: false - name: argo-workflow - rbac: - create: false # Manual provisioning - controller: - workflowNamespaces: [] #All of them - controller: - workflowDefaults: - spec: - serviceAccountName: argo-workflow - -ocAuth: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-auth:0.0.1" - authType: hydra - keto: - adminRole: admin - hydra: - openCloudOauth2ClientSecretName: oc-oauth2-client-secret - ldap: - bindDn: cn=admin,dc=example,dc=com - binPwd: admin - baseDn: dc=example,dc=com - roleBaseDn: ou=AppRoles,dc=example,dc=com - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -ocFront: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-front:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -ocWorkspace: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-workspace:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - - -ocShared: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-shared:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -ocWorkflow: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-workflow:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -ocCatalog: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-catalog:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -ocPeer: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-peer:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -ocDatacenter: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-datacenter:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -ocSchedulerd: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-schedulerd:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -ocScheduler: - enabled: true - enableTraefikProxyIntegration: true - image: "oc/oc-scheduler:0.0.1" - resources: - limits: - cpu: 128m - memory: 256Mi - requests: - cpu: 128m - memory: 256Mi - replicas: 1 - hpa: - enabled: true - minReplicas: 1 - maxReplicas: 5 - targetCPUUtilizationPercentage: 80 - -docker-registry-ui: - enabled: true - ui: - title: "opencloud docker registry" - proxy: true - dockerRegistryUrl: "http://sqsdq-docker-registry-ui-registry-server.sqsdq.svc.cluster.local:5000" - registry: - secretName: regcred - enabled: true - dataVolume: - persistentVolumeClaim: - claimName: docker-registry-pvc - persistence: - create: false - existingClaim: docker-registry-pvc - accessMode: ReadWriteOnce - storage: 5Gi - storageClassName: ""