Adjust k8s
This commit is contained in:
BIN
cmd/kind-linux-amd64
Normal file
BIN
cmd/kind-linux-amd64
Normal file
Binary file not shown.
124
cmd/main.go
124
cmd/main.go
@@ -1,9 +1,11 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"oc-k8s/internal"
|
"oc-k8s/internal"
|
||||||
"os"
|
"os"
|
||||||
|
"slices"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -14,31 +16,67 @@ func main() {
|
|||||||
}()
|
}()
|
||||||
if len(os.Args) < 2 {
|
if len(os.Args) < 2 {
|
||||||
internal.Help_Func()
|
internal.Help_Func()
|
||||||
fmt.Println("Error: Not enought arguments")
|
fmt.Println("Error: Not enough arguments")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := action(); err != nil {
|
if err := action(); err != nil {
|
||||||
|
if len(os.Args) > 2 && slices.Contains([]string{"start", "help", "stop"}, os.Args[1]) {
|
||||||
internal.Help_Func()
|
internal.Help_Func()
|
||||||
fmt.Println(err)
|
} 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 {
|
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]
|
action := os.Args[1]
|
||||||
switch action {
|
switch action {
|
||||||
case "start":
|
case "start":
|
||||||
args := []string{}
|
internal.Start(*folder, *release, *namespace, *branch, *target)
|
||||||
if len(os.Args) > 2 {
|
|
||||||
args = os.Args[2:]
|
|
||||||
}
|
|
||||||
internal.Start(args...)
|
|
||||||
case "stop":
|
case "stop":
|
||||||
args := []string{}
|
internal.Stop(*folder, *release, *namespace)
|
||||||
if len(os.Args) > 2 {
|
|
||||||
args = os.Args[2:]
|
|
||||||
}
|
|
||||||
internal.Stop(args...)
|
|
||||||
case "extract":
|
case "extract":
|
||||||
what := os.Args[2]
|
what := os.Args[2]
|
||||||
switch what {
|
switch what {
|
||||||
@@ -46,7 +84,10 @@ func action() error {
|
|||||||
return internal.ExtractTrees("assets", "./opencloud-chart")
|
return internal.ExtractTrees("assets", "./opencloud-chart")
|
||||||
}
|
}
|
||||||
case "help":
|
case "help":
|
||||||
what := os.Args[2]
|
what := ""
|
||||||
|
if len(os.Args) > 2 {
|
||||||
|
what = os.Args[2]
|
||||||
|
}
|
||||||
switch what {
|
switch what {
|
||||||
case "helm":
|
case "helm":
|
||||||
internal.Help_Helm()
|
internal.Help_Helm()
|
||||||
@@ -66,13 +107,9 @@ func action() error {
|
|||||||
internal.Help_Func()
|
internal.Help_Func()
|
||||||
}
|
}
|
||||||
case "install":
|
case "install":
|
||||||
if len(os.Args) < 3 {
|
what := ""
|
||||||
return internal.Install_Func()
|
if len(os.Args) > 2 {
|
||||||
}
|
what = os.Args[2]
|
||||||
what := os.Args[2]
|
|
||||||
args := []string{}
|
|
||||||
if len(os.Args) > 3 {
|
|
||||||
args = os.Args[3:]
|
|
||||||
}
|
}
|
||||||
switch what {
|
switch what {
|
||||||
case "helm":
|
case "helm":
|
||||||
@@ -80,60 +117,53 @@ func action() error {
|
|||||||
case "k3s":
|
case "k3s":
|
||||||
return internal.Install_K3S()
|
return internal.Install_K3S()
|
||||||
case "kind":
|
case "kind":
|
||||||
return internal.Install_Kind(args...)
|
return internal.Install_Kind(*arch, *version)
|
||||||
default:
|
default:
|
||||||
if len(os.Args) > 2 {
|
internal.Install_Func(*arch, *version)
|
||||||
args = os.Args[2:]
|
|
||||||
}
|
|
||||||
internal.Install_Func(args...)
|
|
||||||
}
|
}
|
||||||
case "create":
|
case "create":
|
||||||
what := os.Args[2]
|
what := os.Args[2]
|
||||||
args := []string{}
|
|
||||||
if len(os.Args) > 3 {
|
|
||||||
args = os.Args[3:]
|
|
||||||
}
|
|
||||||
switch what {
|
switch what {
|
||||||
case "helm":
|
case "helm":
|
||||||
return internal.Create_Helm(args...)
|
|
||||||
|
return internal.Create_Helm(*folder, *release, *namespace)
|
||||||
case "cluster":
|
case "cluster":
|
||||||
return internal.Create_Cluster(args...)
|
return internal.Create_Cluster(*folder, *release)
|
||||||
case "db":
|
case "db":
|
||||||
return internal.Create_DB(args...)
|
return internal.Create_DB(folder, *release, *namespace, *dbName)
|
||||||
case "services":
|
case "services":
|
||||||
return internal.Create_Service(args...)
|
return internal.Create_Service(*folder, *release, *branch, *target)
|
||||||
case "values":
|
case "values":
|
||||||
return internal.Create_Values(args...)
|
return internal.Create_Values(folder, release, confFile)
|
||||||
default:
|
default:
|
||||||
internal.Help_Func()
|
internal.Help_Func()
|
||||||
}
|
}
|
||||||
case "delete":
|
case "delete":
|
||||||
what := os.Args[2]
|
what := ""
|
||||||
args := []string{}
|
if len(os.Args) > 2 {
|
||||||
if len(os.Args) > 3 {
|
what = os.Args[2]
|
||||||
args = os.Args[3:]
|
|
||||||
}
|
}
|
||||||
switch what {
|
switch what {
|
||||||
case "helm":
|
case "helm":
|
||||||
return internal.Delete_Helm(args...)
|
return internal.Delete_Helm(*release, *namespace)
|
||||||
case "cluster":
|
case "cluster":
|
||||||
return internal.Delete_Cluster(args...)
|
return internal.Delete_Cluster(*folder, *release)
|
||||||
case "db":
|
case "db":
|
||||||
return internal.Delete_DB(args...)
|
return internal.Delete_DB(*release, *namespace, *dbName)
|
||||||
default:
|
default:
|
||||||
internal.Help_Func()
|
internal.Help_Func()
|
||||||
}
|
}
|
||||||
case "upgrade":
|
case "upgrade":
|
||||||
what := os.Args[2]
|
what := ""
|
||||||
args := []string{}
|
if len(os.Args) > 2 {
|
||||||
if len(os.Args) > 3 {
|
what = os.Args[2]
|
||||||
args = os.Args[3:]
|
|
||||||
}
|
}
|
||||||
switch what {
|
switch what {
|
||||||
case "helm":
|
case "helm":
|
||||||
return internal.Upgrade_Helm(args...)
|
return internal.Upgrade_Helm(*folder, *release, *namespace)
|
||||||
case "db":
|
case "db":
|
||||||
return internal.Upgrade_DB(args...)
|
return internal.Upgrade_DB(folder, *release, *namespace, *dbName)
|
||||||
default:
|
default:
|
||||||
internal.Help_Func()
|
internal.Help_Func()
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
cmd/oc-k8s
BIN
cmd/oc-k8s
Binary file not shown.
@@ -1,8 +1,10 @@
|
|||||||
env: test # For storage class provisioning
|
env: test # For storage class provisioning
|
||||||
clusterName: opencloud
|
clusterName: opencloud2
|
||||||
|
hostNetwork: true
|
||||||
host: beta.opencloud.com
|
host: beta.opencloud.com
|
||||||
registryHost: oc # For reverse proxy rule
|
registryHost: oc
|
||||||
scheme: https # For reverse proxy rule
|
hostPort: 9000
|
||||||
|
scheme: http
|
||||||
|
|
||||||
mongo-express:
|
mongo-express:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -234,6 +236,13 @@ traefik:
|
|||||||
enabled: true
|
enabled: true
|
||||||
service:
|
service:
|
||||||
type: NodePort
|
type: NodePort
|
||||||
|
ports:
|
||||||
|
web:
|
||||||
|
port: 80
|
||||||
|
nodePort: 30950
|
||||||
|
websecure:
|
||||||
|
port: 443
|
||||||
|
nodePort: 30951
|
||||||
ingressRoute:
|
ingressRoute:
|
||||||
dashboard:
|
dashboard:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -241,9 +250,11 @@ traefik:
|
|||||||
entryPoints: [web]
|
entryPoints: [web]
|
||||||
ports:
|
ports:
|
||||||
web:
|
web:
|
||||||
containerPort: 8000
|
port: 80
|
||||||
hostPort: 80
|
|
||||||
nodePort: 30950
|
nodePort: 30950
|
||||||
|
websecure:
|
||||||
|
port: 443
|
||||||
|
nodePort: 30951
|
||||||
|
|
||||||
hydra:
|
hydra:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -289,6 +300,7 @@ loki:
|
|||||||
commonConfig:
|
commonConfig:
|
||||||
replication_factor: 1
|
replication_factor: 1
|
||||||
storage:
|
storage:
|
||||||
|
storageClassName: standard
|
||||||
type: filesystem
|
type: filesystem
|
||||||
filesystem:
|
filesystem:
|
||||||
chunks_directory: /var/loki/chunks
|
chunks_directory: /var/loki/chunks
|
||||||
@@ -609,6 +621,7 @@ docker-registry-ui:
|
|||||||
claimName: docker-registry-pvc
|
claimName: docker-registry-pvc
|
||||||
persistence:
|
persistence:
|
||||||
create: false
|
create: false
|
||||||
|
storageClassName: standard
|
||||||
existingClaim: docker-registry-pvc
|
existingClaim: docker-registry-pvc
|
||||||
accessMode: ReadWriteOnce
|
accessMode: ReadWriteOnce
|
||||||
storage: 5Gi
|
storage: 5Gi
|
||||||
|
|||||||
@@ -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=
|
|
||||||
|
|
||||||
@@ -10,32 +10,24 @@ import (
|
|||||||
|
|
||||||
func Help_Cluster() {
|
func Help_Cluster() {
|
||||||
fmt.Println(`
|
fmt.Println(`
|
||||||
Cluster commands: oc-k8s <action> cluster [env_folder] [release]
|
Cluster commands: oc-k8s <action> cluster [options]
|
||||||
create - Create a new kind cluster named 'opencloud'
|
create - Create a new kind cluster
|
||||||
delete - Delete the kind cluster named 'opencloud'
|
delete - Delete the kind cluster
|
||||||
help - Show this help message
|
help - Show this help message
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
oc-k8s create cluster [env_folder] [release]
|
oc-k8s create cluster -f [env_folder] -r [release]
|
||||||
env_folder - Helm config folder (required, default: .)
|
env_folder - Helm config folder (default: .)
|
||||||
release - Release values name (required, default: dev)
|
release - Release values name (default: dev)
|
||||||
oc-k8s delete cluster [env_folder] [release]
|
oc-k8s delete cluster -f [env_folder] -r [release]
|
||||||
env_folder - Helm config folder (required, default: .)
|
env_folder - Helm config folder (default: .)
|
||||||
release - Release values name (required, default: dev)
|
release - Release values name (default: dev)
|
||||||
oc-k8s help cluster `)
|
oc-k8s help cluster `)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Delete_Cluster(args ...string) error {
|
func Delete_Cluster(folder string, release string) error {
|
||||||
folder := "."
|
|
||||||
env := "dev"
|
|
||||||
if len(args) > 0 {
|
|
||||||
folder = args[0]
|
|
||||||
}
|
|
||||||
if len(args) > 1 {
|
|
||||||
env = args[1]
|
|
||||||
}
|
|
||||||
clusterName := "opencloud"
|
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")
|
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||||
}
|
}
|
||||||
utils.Exec("kind delete cluster --name " + clusterName)
|
utils.Exec("kind delete cluster --name " + clusterName)
|
||||||
@@ -43,26 +35,33 @@ func Delete_Cluster(args ...string) error {
|
|||||||
return utils.Exec("chmod 600 ~/.kube/config")
|
return utils.Exec("chmod 600 ~/.kube/config")
|
||||||
}
|
}
|
||||||
|
|
||||||
func Create_Cluster(args ...string) error {
|
func Install_Cluster() error {
|
||||||
folder := "."
|
utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config")
|
||||||
env := "dev"
|
utils.Exec("chmod 700 /home/mr/.kube")
|
||||||
if len(args) > 0 {
|
return utils.Exec("chmod 600 ~/.kube/config")
|
||||||
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 ")
|
|
||||||
|
|
||||||
kindConfig := `
|
func Create_Cluster(folder string, release string) error {
|
||||||
kind: Cluster
|
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
|
apiVersion: kind.x-k8s.io/v1alpha4
|
||||||
|
name: ` + clusterName + `
|
||||||
nodes:
|
nodes:
|
||||||
- role: control-plane
|
- role: control-plane
|
||||||
kubeadmConfigPatches:
|
kubeadmConfigPatches:
|
||||||
- |
|
- |
|
||||||
kind: InitConfiguration
|
kind: InitConfiguration
|
||||||
@@ -70,14 +69,12 @@ nodes:
|
|||||||
kubeletExtraArgs:
|
kubeletExtraArgs:
|
||||||
node-labels: "ingress-ready=true"
|
node-labels: "ingress-ready=true"
|
||||||
extraPortMappings:
|
extraPortMappings:
|
||||||
- containerPort: 30950
|
- containerPort: ` + containerPort + `
|
||||||
hostPort: 80
|
hostPort: ` + port + `
|
||||||
protocol: TCP
|
|
||||||
- containerPort: 30951
|
|
||||||
hostPort: 443
|
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
|
|
||||||
containerdConfigPatches:
|
containerdConfigPatches:
|
||||||
- |-
|
- |-
|
||||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"]
|
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"]
|
||||||
endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
||||||
`
|
`
|
||||||
@@ -88,6 +85,7 @@ containerdConfigPatches:
|
|||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
if err := cmd.Run(); err != nil {
|
if err := cmd.Run(); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,11 +103,11 @@ containerdConfigPatches:
|
|||||||
return err
|
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
|
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 err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -10,41 +10,35 @@ import (
|
|||||||
|
|
||||||
func Help_DB() {
|
func Help_DB() {
|
||||||
fmt.Println(`
|
fmt.Println(`
|
||||||
Cluster commands: oc-k8s <action> cluster
|
DB commands: oc-k8s <action> db [options]
|
||||||
create - Add datas in db
|
create - Add datas in db
|
||||||
replace - Replace datas in db
|
replace - Replace datas in db
|
||||||
delete - Delete datas in db
|
delete - Delete datas in db
|
||||||
help - Show this help message
|
help - Show this help message
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
oc-k8s create db [file_path] [release] [db_name] [env_folder]
|
oc-k8s create db --d [db_name] -r [release] -n [namespace] -f [folder]
|
||||||
file_path - Datas folder files path (required)
|
folder - Datas folder files path (required)
|
||||||
release - Release values name (default: dev)
|
release - Release values name (default: dev)
|
||||||
|
namespace - Namespace values name (default: dev)
|
||||||
db_name - db name (default: opencloud)
|
db_name - db name (default: opencloud)
|
||||||
env_folder - Helm config folder (required, default: .)
|
folder - Helm config folder (required, default: .)
|
||||||
oc-k8s upgrade db [file_path] [release] [db_name] [env_folder]
|
oc-k8s upgrade db -d [db_name] -r [release] -n [namespace] -f [folder]
|
||||||
file_path - Datas folder files path (required)
|
folder - Datas folder files path (required)
|
||||||
release - Release values name (default: dev)
|
release - Release values name (default: dev)
|
||||||
|
namespace - Namespace values name (default: dev)
|
||||||
db_name - db name (default: opencloud)
|
db_name - db name (default: opencloud)
|
||||||
env_folder - Helm config folder (required, default: .)
|
oc-k8s delete db -d [db_name] -r [release] -n [namespace] -f [folder]
|
||||||
oc-k8s delete db [release] [db_name] [env_folder]
|
|
||||||
release - Release values name (default: dev)
|
release - Release values name (default: dev)
|
||||||
|
namespace - Namespace values name (default: dev)
|
||||||
db_name - db name (default: opencloud)
|
db_name - db name (default: opencloud)
|
||||||
env_folder - Helm config folder (required, default: .)
|
folder - Helm config folder (required, default: .)
|
||||||
oc-k8s help db `)
|
oc-k8s help db `)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Delete_DB(args ...string) error {
|
func Delete_DB(release string, namespace string, dbName string) error {
|
||||||
release := "dev"
|
podName := "$(kubectl get pods -n " + namespace + " -o=name | grep " + release + "-mongodb-* | sed 's|pod/||')"
|
||||||
db_name := "dev"
|
return utils.Exec("kubectl exec " + podName + ": -- mongosh --eval \"db.getSiblingDB('" + dbName + "').dropDatabase()\"")
|
||||||
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 getFileNames(folderPath string) []string {
|
func getFileNames(folderPath string) []string {
|
||||||
@@ -62,35 +56,25 @@ func getFileNames(folderPath string) []string {
|
|||||||
return fileNames
|
return fileNames
|
||||||
}
|
}
|
||||||
|
|
||||||
func Create_DB(args ...string) error {
|
func Create_DB(filePath *string, release string, namespace string, dbName string) error {
|
||||||
filePath := ""
|
if filePath == nil {
|
||||||
if len(args) == 0 {
|
|
||||||
return errors.New("missing db datas file path")
|
return errors.New("missing db datas file path")
|
||||||
} else {
|
|
||||||
filePath = args[0]
|
|
||||||
}
|
}
|
||||||
release := "dev"
|
podName := "$(kubectl get pods -n " + namespace + " -o jsonpath='{.items[0].metadata.name}')"
|
||||||
db_name := "dev"
|
for _, fileName := range getFileNames(*filePath) {
|
||||||
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) {
|
|
||||||
fmt.Println("ADD file " + fileName + " in collection")
|
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
|
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 err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Upgrade_DB(args ...string) error {
|
func Upgrade_DB(filePath *string, release string, namespace string, dbName string) error {
|
||||||
Delete_DB(args[1:]...)
|
Delete_DB(release, namespace, dbName)
|
||||||
return Create_DB(args...)
|
return Create_DB(filePath, release, namespace, dbName)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,17 +18,17 @@ Main commands: oc-k8s <action>
|
|||||||
start - Start opencloud k8s
|
start - Start opencloud k8s
|
||||||
stop - Stop opencloud k8s
|
stop - Stop opencloud k8s
|
||||||
Usage:
|
Usage:
|
||||||
oc-k8s install [arch] [version]
|
oc-k8s install -a [arch] -v [version]
|
||||||
arch - Arch of OS (required)
|
arch - Arch of OS (required)
|
||||||
kind_version - version of kind (required)
|
kind_version - version of kind (required)
|
||||||
oc-k8s start [env_folder] [release] [namespace] [branch] [target] [hostname]
|
oc-k8s start -n [namespace] -r [release] -f [folder] -b [branch] -t [target] -p [port] -P [portTLS]
|
||||||
env_folder - Helm config folder (required, default: .)
|
folder - Helm config folder (required, default: .)
|
||||||
release - environnement selected (default: dev)
|
release - environnement selected (default: dev)
|
||||||
namespace - namespace selected (default: dev)
|
namespace - namespace selected (default: dev)
|
||||||
branch - Git branch to build (default: main)
|
branch - Git branch to build (default: main)
|
||||||
target - make target (default: all)
|
target - make target (default: all)
|
||||||
oc-k8s stop [env_folder] [release] [namespace]
|
oc-k8s stop -n [namespace] -r [release] -f [folder]
|
||||||
env_folder - Helm config folder (required, default: .)
|
folder - Helm config folder (required, default: .)
|
||||||
release - environnement selected (default: dev)
|
release - environnement selected (default: dev)
|
||||||
namespace - namespace selected (default: dev)`)
|
namespace - namespace selected (default: dev)`)
|
||||||
Help_Cluster()
|
Help_Cluster()
|
||||||
@@ -40,27 +40,24 @@ Usage:
|
|||||||
Help_DB()
|
Help_DB()
|
||||||
}
|
}
|
||||||
|
|
||||||
func Start(args ...string) error {
|
func Start(folder string, release string, namespace string, branch string, target string) error {
|
||||||
utils.Exec("sudo sysctl -w fs.inotify.max_user_instances=256")
|
Stop(folder, release, namespace)
|
||||||
utils.Exec("sudo sysctl -w fs.inotify.max_user_watches=65536")
|
Create_K3S()
|
||||||
|
Create_Cluster(folder, release)
|
||||||
utils.Exec("sudo /etc/init.d/apache2 stop")
|
Create_Service(folder, release, branch, target)
|
||||||
utils.Exec("sudo nginx -s stop")
|
Create_Helm(folder, release, namespace)
|
||||||
Create_Cluster(args...)
|
|
||||||
Create_Service(args...)
|
|
||||||
Create_Helm(args...)
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Stop(args ...string) error {
|
func Stop(folder string, release string, namespace string) error {
|
||||||
Delete_Helm(args...)
|
Delete_Helm(release, namespace)
|
||||||
Delete_Cluster(args...)
|
Delete_Cluster(folder, release)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Install_Func(args ...string) error {
|
func Install_Func(arch string, version string) error {
|
||||||
Install_K3S()
|
Install_K3S()
|
||||||
Install_Kind(args...)
|
Install_Kind(arch, version)
|
||||||
Install_Helm()
|
Install_Helm()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,16 +16,16 @@ Helm commands: oc-k8s <action> helm
|
|||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
oc-k8s install helm
|
oc-k8s install helm
|
||||||
oc-k8s create helm [env_folder] [release] [namespace]
|
oc-k8s create helm -n [namespace] -r [release] -f [folder]
|
||||||
env_folder - Helm config folder (required, default: .)
|
folder - Helm config folder (required, default: .)
|
||||||
release - environnement selected (default: dev)
|
release - environnement selected (default: dev)
|
||||||
namespace - namespace selected (default: dev)
|
namespace - namespace selected (default: dev)
|
||||||
oc-k8s upgrade helm [env_folder] [release] [namespace]
|
oc-k8s upgrade helm -n [namespace] -r [release] -f [folder]
|
||||||
env_folder - Helm config folder (required, default: .)
|
folder - Helm config folder (required, default: .)
|
||||||
release - environnement selected (default: dev)
|
release - environnement selected (default: dev)
|
||||||
namespace - namespace selected (default: dev)
|
namespace - namespace selected (default: dev)
|
||||||
oc-k8s delete helm [env_folder] [release] [namespace]
|
oc-k8s delete helm -n [namespace] -r [release] -f [folder]
|
||||||
env_folder - Helm config folder (required, default: .)
|
folder - Helm config folder (required, default: .)
|
||||||
release - environnement selected (default: dev)
|
release - environnement selected (default: dev)
|
||||||
namespace - namespace selected (default: dev)
|
namespace - namespace selected (default: dev)
|
||||||
oc-k8sh help helm`)
|
oc-k8sh help helm`)
|
||||||
@@ -37,21 +37,13 @@ func Install_Helm() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Delete_Helm(args ...string) error {
|
func Delete_Helm(release string, namespace string) error {
|
||||||
env := "dev"
|
utils.Exec("helm uninstall " + release + " -n " + namespace)
|
||||||
namespace := "dev"
|
|
||||||
if len(args) > 0 {
|
|
||||||
env = args[0]
|
|
||||||
}
|
|
||||||
if len(args) > 1 {
|
|
||||||
namespace = args[1]
|
|
||||||
}
|
|
||||||
utils.Exec("helm uninstall " + env + " -n " + namespace)
|
|
||||||
utils.Exec("kubectl delete namespace " + namespace + " &")
|
utils.Exec("kubectl delete namespace " + namespace + " &")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Create_Helm(args ...string) error {
|
func Create_Helm(folder string, release string, namespace string) error {
|
||||||
tmp := "./opencloud-chart"
|
tmp := "./opencloud-chart"
|
||||||
utils.Exec("sudo rm -rf " + tmp)
|
utils.Exec("sudo rm -rf " + tmp)
|
||||||
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
|
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
|
||||||
@@ -60,25 +52,14 @@ func Create_Helm(args ...string) error {
|
|||||||
}
|
}
|
||||||
ExtractTrees("assets", tmp)
|
ExtractTrees("assets", tmp)
|
||||||
|
|
||||||
folder := "."
|
|
||||||
release := "dev"
|
|
||||||
namespace := "dev"
|
|
||||||
if len(args) > 0 {
|
|
||||||
folder = args[0]
|
|
||||||
}
|
|
||||||
clusterName := "opencloud"
|
clusterName := "opencloud"
|
||||||
host := "beta.opencloud.com"
|
|
||||||
|
|
||||||
|
host := "beta.opencloud.com"
|
||||||
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
||||||
clusterName, _ = utils.Extract(string(b), "clusterName")
|
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||||
host, _ = utils.Extract(string(b), "host")
|
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")
|
fmt.Println("set up helm")
|
||||||
if err := utils.Exec("helm dependency update " + tmp); err != nil {
|
if err := utils.Exec("helm dependency update " + tmp); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -113,14 +94,13 @@ func Create_Helm(args ...string) error {
|
|||||||
utils.Exec("kind export logs ./kind-logs")
|
utils.Exec("kind export logs ./kind-logs")
|
||||||
utils.Exec("sudo rm -rf " + tmp)
|
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("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")
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func Upgrade_Helm(args ...string) error {
|
func Upgrade_Helm(folder string, release string, namespace string) error {
|
||||||
tmp := "./opencloud-chart"
|
tmp := "./opencloud-chart"
|
||||||
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
|
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
@@ -129,19 +109,7 @@ func Upgrade_Helm(args ...string) error {
|
|||||||
defer os.RemoveAll(tmp)
|
defer os.RemoveAll(tmp)
|
||||||
ExtractTrees("assets", tmp)
|
ExtractTrees("assets", tmp)
|
||||||
|
|
||||||
folder := "."
|
Delete_Cluster(folder, release)
|
||||||
release := "dev"
|
|
||||||
namespace := "dev"
|
|
||||||
if len(args) > 0 {
|
|
||||||
folder = args[0]
|
|
||||||
}
|
|
||||||
Delete_Cluster(args[1:]...)
|
|
||||||
|
|
||||||
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")
|
return utils.Exec("helm upgrade " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,10 +9,12 @@ func Help_K3S() {
|
|||||||
fmt.Println(`
|
fmt.Println(`
|
||||||
K3S commands: oc-k8s <action> k3s
|
K3S commands: oc-k8s <action> k3s
|
||||||
install - Install k3s
|
install - Install k3s
|
||||||
|
create - Create a new cluster
|
||||||
help - Show this help message
|
help - Show this help message
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
oc-k8s install k3s
|
oc-k8s install k3s
|
||||||
|
oc-k8s create k3s
|
||||||
oc-k8s help values `)
|
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 {
|
if err := utils.Exec("curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644"); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config")
|
Create_K3S()
|
||||||
utils.Exec("chmod 700 /home/mr/.kube")
|
|
||||||
utils.Exec("sudo chmod 600 ~/.kube/config")
|
|
||||||
|
|
||||||
if err := utils.Exec("sudo systemctl status k3s"); err != nil {
|
if err := utils.Exec("sudo systemctl status k3s"); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return utils.Exec("chmod 600 ~/.kube/config")
|
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")
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,21 +12,14 @@ Kind commands: oc-k8s <action> kind
|
|||||||
help - Show this help message
|
help - Show this help message
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
oc-k8s install kind [arch] [version]
|
oc-k8s install kind -a [arch] -v [version]
|
||||||
arch - Arch of OS (required)
|
arch - Arch of OS (required)
|
||||||
kind_version - version of kind (required)
|
kind_version - version of kind (required)
|
||||||
oc-k8s help values `)
|
oc-k8s help values `)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Install_Kind(args ...string) error {
|
func Install_Kind(arch string, version string) error {
|
||||||
arch := "linux-amd64"
|
|
||||||
version := "v0.30.0"
|
|
||||||
if len(args) > 0 {
|
|
||||||
arch = args[0]
|
|
||||||
}
|
|
||||||
if len(args) > 1 {
|
|
||||||
version = args[1]
|
|
||||||
}
|
|
||||||
utils.Exec("curl -Lo kind-linux-amd64 https://kind.sigs.k8s.io/dl/" + version + "/kind-" + arch)
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,36 +27,24 @@ Service commands: oc-k8s <action> services
|
|||||||
help - Show this help message
|
help - Show this help message
|
||||||
|
|
||||||
Usage:
|
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: .)
|
env_folder - Helm config folder (required, default: .)
|
||||||
|
release - Release values name (required, default: dev)
|
||||||
branch - Git branch to build (default: main)
|
branch - Git branch to build (default: main)
|
||||||
target - make target (default: all)
|
target - make target (default: all)
|
||||||
oc-k8s help services `)
|
oc-k8s help services `)
|
||||||
}
|
}
|
||||||
|
|
||||||
func Create_Service(args ...string) error {
|
func Create_Service(folder string, release string, branch string, target 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]
|
|
||||||
}
|
|
||||||
scheme := "http"
|
scheme := "http"
|
||||||
hostname := "beta.opencloud.com"
|
hostname := "beta.opencloud.com"
|
||||||
|
clusterName := "opencloud"
|
||||||
|
pport := "80"
|
||||||
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
||||||
hostname, _ = utils.Extract(string(b), "host")
|
hostname, _ = utils.Extract(string(b), "host")
|
||||||
scheme, _ = utils.Extract(string(b), "scheme")
|
scheme, _ = utils.Extract(string(b), "scheme")
|
||||||
|
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||||
|
pport, _ = utils.Extract(string(b), "port")
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, repo := range REPOS {
|
for _, repo := range REPOS {
|
||||||
@@ -74,11 +62,10 @@ func Create_Service(args ...string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
fmt.Println("Repository '" + repo + "' now exists. Pulling latest changes...")
|
fmt.Println("Repository '" + repo + "' now exists. Pulling latest changes...")
|
||||||
if err := utils.Exec("cd " + repo + " && git checkout " + branch + " && git pull"); err != nil {
|
utils.Exec("cd " + repo + " && git checkout " + branch + " && git pull")
|
||||||
return err
|
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)
|
||||||
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 {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,62 +16,47 @@ Values commands: oc-k8s <action> values
|
|||||||
help - Show this help message
|
help - Show this help message
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
oc-k8s create values [release] [env_file] [env_folder]
|
oc-k8s create values -r [release] -f [env_folder] -c [env_file]
|
||||||
release - Release values name (required)
|
release - Release values name (required)
|
||||||
env_file - env to map (optionnal)
|
|
||||||
env_folder - Helm config folder (optionnal, default: .)
|
env_folder - Helm config folder (optionnal, default: .)
|
||||||
|
env_file - env to map (optionnal)
|
||||||
oc-k8s help values `)
|
oc-k8s help values `)
|
||||||
}
|
}
|
||||||
|
|
||||||
var varPattern = regexp.MustCompile(`\$\{([A-Za-z_][A-Za-z0-9_]*)[:-]([^}]+)\}`)
|
var varPattern = regexp.MustCompile(`\$\{([A-Za-z_][A-Za-z0-9_]*)[:-]([^}]+)\}`)
|
||||||
|
|
||||||
func Create_Values(args ...string) error {
|
func Create_Values(output_folder *string, release *string, confFile *string) error {
|
||||||
folder := "."
|
return generateConfig(confFile, release, output_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 generateConfig(confFile string, release string, output_folder string) error {
|
func generateConfig(confFile *string, release *string, output_folder *string) error {
|
||||||
// Load env file if provided
|
// Load env file if provided
|
||||||
var err error
|
var err error
|
||||||
confs := map[string]string{}
|
confs := map[string]string{}
|
||||||
if confFile != "" {
|
if confFile != nil && *confFile != "" {
|
||||||
if confs, err = loadEnvFile(confFile); err != nil {
|
if confs, err = loadEnvFile(*confFile); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
confFile = "no configuration file"
|
|
||||||
}
|
}
|
||||||
// Read template
|
// Read template
|
||||||
content, err := utils.ReadFS("assets/values.yaml.template")
|
content, err := utils.ReadFS("assets/values.yaml.template")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
confs["RELEASE"] = release
|
confs["RELEASE"] = *release
|
||||||
|
|
||||||
rendered := renderTemplate(string(content), confs)
|
rendered := renderTemplate(string(content), confs)
|
||||||
|
|
||||||
// Ensure output directory exists
|
// Ensure output directory exists
|
||||||
if err := os.MkdirAll(output_folder, 0755); err != nil {
|
if err := os.MkdirAll(*output_folder, 0755); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write output
|
// 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
|
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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
430
oc-k8s.sh
430
oc-k8s.sh
@@ -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 <<EOF | kind create cluster --name opencloud --config=-
|
|
||||||
kind: Cluster
|
|
||||||
apiVersion: kind.x-k8s.io/v1alpha4
|
|
||||||
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
|
|
||||||
containerdConfigPatches:
|
|
||||||
- |-
|
|
||||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."locahost:5000"]
|
|
||||||
endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
|
||||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
|
||||||
endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
|
||||||
[plugins."io.containerd.grpc.v1.cri".registry.configs."dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000".tls]
|
|
||||||
insecure_skip_verify = true
|
|
||||||
cert_file = ""
|
|
||||||
key_file = ""
|
|
||||||
ca_file = ""
|
|
||||||
EOF
|
|
||||||
echo "[WARNING] New cluster shoulw be merged into your current config !"
|
|
||||||
|
|
||||||
# Export the kind cluster kubeconfig to a temporary file
|
|
||||||
kind get kubeconfig --name opencloud > /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 <action> 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 <action> 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 <action> 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 <action> 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 <action> 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 <action> 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 <action> 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 <action>
|
|
||||||
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
|
|
||||||
@@ -13,6 +13,6 @@ data:
|
|||||||
"PEER_HOST": "peers",
|
"PEER_HOST": "peers",
|
||||||
"DATACENTER_HOST": "datacenter",
|
"DATACENTER_HOST": "datacenter",
|
||||||
"COLLABORATIVE_AREA_HOST": "shared",
|
"COLLABORATIVE_AREA_HOST": "shared",
|
||||||
"HOST": "{{ .Values.scheme }}://{{ .Values.host }}",
|
"HOST": "{{ .Values.scheme }}://{{ .Values.host }}:{{ .Values.port }}",
|
||||||
}
|
}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -2,8 +2,9 @@ env: ${RELEASE:-prod} # For storage class provisioning
|
|||||||
clusterName: ${CLUSTER_NAME:-opencloud}
|
clusterName: ${CLUSTER_NAME:-opencloud}
|
||||||
hostNetwork: true
|
hostNetwork: true
|
||||||
host: ${HOST:-beta.opencloud.com}
|
host: ${HOST:-beta.opencloud.com}
|
||||||
registryHost: ${REGISTRY_HOST:-oc} # For reverse proxy rule
|
hostPort: ${PORT:-80}
|
||||||
scheme: http # For reverse proxy rule
|
registryHost: ${REGISTRY_HOST:-oc}
|
||||||
|
scheme: ${SCHEME:-http}
|
||||||
|
|
||||||
mongo-express:
|
mongo-express:
|
||||||
enabled: ${OC_MONGOEXPRESS_ENABLED:-true}
|
enabled: ${OC_MONGOEXPRESS_ENABLED:-true}
|
||||||
@@ -41,7 +42,7 @@ mongodb:
|
|||||||
storageClassName: ${OC_MONGO_STORAGE:-"standard"}
|
storageClassName: ${OC_MONGO_STORAGE:-"standard"}
|
||||||
accessModes:
|
accessModes:
|
||||||
- ReadWriteOnce
|
- ReadWriteOnce
|
||||||
size: ${OC_MONGO_SIZE:-5000Mi}
|
size: ${OC_MONGO_SIZE:-5Gi}
|
||||||
persistentVolumeClaimRetentionPolicy:
|
persistentVolumeClaimRetentionPolicy:
|
||||||
enabled: true
|
enabled: true
|
||||||
whenDeleted: Retain
|
whenDeleted: Retain
|
||||||
@@ -235,6 +236,13 @@ traefik:
|
|||||||
enabled: ${OC_TRAEFIK_ENABLED:-true}
|
enabled: ${OC_TRAEFIK_ENABLED:-true}
|
||||||
service:
|
service:
|
||||||
type: NodePort
|
type: NodePort
|
||||||
|
ports:
|
||||||
|
web:
|
||||||
|
port: 80
|
||||||
|
nodePort: 30950
|
||||||
|
websecure:
|
||||||
|
port: 443
|
||||||
|
nodePort: 30951
|
||||||
ingressRoute:
|
ingressRoute:
|
||||||
dashboard:
|
dashboard:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -242,9 +250,12 @@ traefik:
|
|||||||
entryPoints: [web]
|
entryPoints: [web]
|
||||||
ports:
|
ports:
|
||||||
web:
|
web:
|
||||||
containerPort: 8000
|
port: 80
|
||||||
hostPort: 80
|
|
||||||
nodePort: 30950
|
nodePort: 30950
|
||||||
|
websecure:
|
||||||
|
port: 443
|
||||||
|
nodePort: 30951
|
||||||
|
|
||||||
hydra:
|
hydra:
|
||||||
enabled: ${OC_HYDRA_ENABLED:-true}
|
enabled: ${OC_HYDRA_ENABLED:-true}
|
||||||
maester:
|
maester:
|
||||||
|
|||||||
430
utils/oc-k8s.sh
430
utils/oc-k8s.sh
@@ -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 <<EOF | kind create cluster --name opencloud --config=-
|
|
||||||
kind: Cluster
|
|
||||||
apiVersion: kind.x-k8s.io/v1alpha4
|
|
||||||
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
|
|
||||||
containerdConfigPatches:
|
|
||||||
- |-
|
|
||||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."locahost:5000"]
|
|
||||||
endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
|
||||||
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
|
||||||
endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
|
||||||
[plugins."io.containerd.grpc.v1.cri".registry.configs."dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000".tls]
|
|
||||||
insecure_skip_verify = true
|
|
||||||
cert_file = ""
|
|
||||||
key_file = ""
|
|
||||||
ca_file = ""
|
|
||||||
EOF
|
|
||||||
echo "[WARNING] New cluster shoulw be merged into your current config !"
|
|
||||||
|
|
||||||
# Export the kind cluster kubeconfig to a temporary file
|
|
||||||
kind get kubeconfig --name opencloud > /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 <action> 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 <action> 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 <action> 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 <action> 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 <action> 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 <action> 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 <action> 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 <action>
|
|
||||||
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
|
|
||||||
@@ -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: ""
|
|
||||||
Reference in New Issue
Block a user