Compare commits
10 Commits
9f9b1849eb
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 5acf96919c | |||
| 7a8a4f678a | |||
| 4ff6e706ca | |||
| f52bdf8ecc | |||
| 827b6f4211 | |||
| 1b77b8b6cf | |||
| 8098a86dae | |||
| ec5c2972c3 | |||
| 3d416169e3 | |||
| 5a0651106d |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,3 @@
|
|||||||
opencloud/Chart.lock
|
opencloud/Chart.lock
|
||||||
deployed_config.sh
|
deployed_config
|
||||||
kind-logs
|
kind-logs
|
||||||
24
README.md
24
README.md
@@ -6,6 +6,15 @@ or to ease opencloud dependencies (dex, mongo, mongo-express, ...) deployment.
|
|||||||
Kind (https://kind.sigs.k8s.io/) is used here as a lightweight kubernetes deployment. Obviously, any kubenetes compliant
|
Kind (https://kind.sigs.k8s.io/) is used here as a lightweight kubernetes deployment. Obviously, any kubenetes compliant
|
||||||
environment is a legitimate target.
|
environment is a legitimate target.
|
||||||
|
|
||||||
|
# Requirements
|
||||||
|
|
||||||
|
- go
|
||||||
|
- docker
|
||||||
|
- docker buildx
|
||||||
|
- make
|
||||||
|
|
||||||
|
- Rajouter dans le bashrc > export KUBECONFIG=$HOME/.kube/config
|
||||||
|
|
||||||
# Locally built microservices deployment procedure
|
# Locally built microservices deployment procedure
|
||||||
|
|
||||||
## Install OC-K8S
|
## Install OC-K8S
|
||||||
@@ -16,19 +25,18 @@ sudo cp oc-k8s.sh /usr/bin/oc-k8s
|
|||||||
sudo chmod +x /usr/bin/oc-k8s
|
sudo chmod +x /usr/bin/oc-k8s
|
||||||
```
|
```
|
||||||
|
|
||||||
## Install kind
|
# Generate values (optionnal)
|
||||||
|
|
||||||
Follow instructions here https://kind.sigs.k8s.io/
|
|
||||||
|
|
||||||
|
Use command :
|
||||||
|
```
|
||||||
|
oc-k8s create values [release] [env_file (optionnal)]
|
||||||
|
```
|
||||||
or
|
or
|
||||||
|
|
||||||
```
|
```
|
||||||
go install sigs.k8s.io/kind@v0.30.0 && kind create cluster
|
./oc-k8s.sh create values [release] [env_file (optionnal)]
|
||||||
```
|
```
|
||||||
|
|
||||||
## Install helm
|
Map in a env file, any Variable you wish to override and give the path.
|
||||||
|
|
||||||
Download suitable helm client here https://helm.sh/docs/intro/install/
|
|
||||||
|
|
||||||
## Resume for a first start
|
## Resume for a first start
|
||||||
```
|
```
|
||||||
|
|||||||
176
cmd/main.go
Normal file
176
cmd/main.go
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"oc-k8s/internal"
|
||||||
|
"os"
|
||||||
|
"slices"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
if len(os.Args) < 2 {
|
||||||
|
internal.Help_Func()
|
||||||
|
fmt.Println("Error: Not enough arguments")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := action(); err != nil {
|
||||||
|
if len(os.Args) > 2 && slices.Contains([]string{"start", "help", "stop"}, os.Args[1]) {
|
||||||
|
internal.Help_Func()
|
||||||
|
} else {
|
||||||
|
what := ""
|
||||||
|
if len(os.Args) > 2 {
|
||||||
|
what = os.Args[2]
|
||||||
|
}
|
||||||
|
switch what {
|
||||||
|
case "helm":
|
||||||
|
internal.Help_Helm()
|
||||||
|
case "k3s":
|
||||||
|
internal.Help_K3S()
|
||||||
|
case "kind":
|
||||||
|
internal.Help_Kind()
|
||||||
|
case "cluster":
|
||||||
|
internal.Help_Cluster()
|
||||||
|
case "db":
|
||||||
|
internal.Help_DB()
|
||||||
|
case "services":
|
||||||
|
internal.Help_Service()
|
||||||
|
case "values":
|
||||||
|
internal.Help_Values()
|
||||||
|
default:
|
||||||
|
internal.Help_Func()
|
||||||
|
}
|
||||||
|
flag.CommandLine.Parse(os.Args[3:])
|
||||||
|
}
|
||||||
|
fmt.Println("ERROR", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func action() error {
|
||||||
|
folder := flag.String("f", ".", "Folder to reach config/datas")
|
||||||
|
release := flag.String("r", "dev", "Release name in run")
|
||||||
|
namespace := flag.String("n", "dev", "Namespace in run")
|
||||||
|
branch := flag.String("b", "main", "Git branch/version of a OC build")
|
||||||
|
target := flag.String("y", "all", "Makefile build up mode")
|
||||||
|
dbName := flag.String("d", "opencloud", "DBName in use")
|
||||||
|
arch := flag.String("a", "amd64", "Arch expected")
|
||||||
|
version := flag.String("v", "v0.31.0", "version of arch")
|
||||||
|
confFile := flag.String("c", "", "Configuration files to map")
|
||||||
|
mUsr := flag.String("m", "admin", "Mongo user")
|
||||||
|
mPwd := flag.String("M", "admin", "Mongo password")
|
||||||
|
|
||||||
|
if len(os.Args) > 2 && slices.Contains([]string{"start", "help", "stop"}, os.Args[1]) {
|
||||||
|
flag.CommandLine.Parse(os.Args[2:])
|
||||||
|
} else if len(os.Args) > 3 {
|
||||||
|
flag.CommandLine.Parse(os.Args[3:])
|
||||||
|
} else {
|
||||||
|
flag.Parse()
|
||||||
|
}
|
||||||
|
|
||||||
|
action := os.Args[1]
|
||||||
|
switch action {
|
||||||
|
case "start":
|
||||||
|
internal.Start(*folder, *release, *namespace, *branch, *target)
|
||||||
|
case "stop":
|
||||||
|
internal.Stop(*folder, *release, *namespace)
|
||||||
|
case "extract":
|
||||||
|
what := os.Args[2]
|
||||||
|
switch what {
|
||||||
|
case "charts":
|
||||||
|
return internal.ExtractTrees("assets", "./opencloud-chart")
|
||||||
|
}
|
||||||
|
case "help":
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
case "install":
|
||||||
|
what := ""
|
||||||
|
if len(os.Args) > 2 {
|
||||||
|
what = os.Args[2]
|
||||||
|
}
|
||||||
|
switch what {
|
||||||
|
case "helm":
|
||||||
|
return internal.Install_Helm()
|
||||||
|
case "k3s":
|
||||||
|
return internal.Install_K3S()
|
||||||
|
case "kind":
|
||||||
|
return internal.Install_Kind(*arch, *version)
|
||||||
|
default:
|
||||||
|
internal.Install_Func(*arch, *version)
|
||||||
|
}
|
||||||
|
case "create":
|
||||||
|
what := os.Args[2]
|
||||||
|
|
||||||
|
switch what {
|
||||||
|
case "helm":
|
||||||
|
|
||||||
|
return internal.Create_Helm(*folder, *release, *namespace)
|
||||||
|
case "cluster":
|
||||||
|
return internal.Create_Cluster(*folder, *release)
|
||||||
|
case "db":
|
||||||
|
return internal.Create_DB(folder, *release, *namespace, *dbName, *mUsr, *mPwd)
|
||||||
|
case "services":
|
||||||
|
return internal.Create_Service(*folder, *release, *branch, *target)
|
||||||
|
case "values":
|
||||||
|
return internal.Create_Values(folder, release, confFile)
|
||||||
|
default:
|
||||||
|
internal.Help_Func()
|
||||||
|
}
|
||||||
|
case "delete":
|
||||||
|
what := ""
|
||||||
|
if len(os.Args) > 2 {
|
||||||
|
what = os.Args[2]
|
||||||
|
}
|
||||||
|
switch what {
|
||||||
|
case "helm":
|
||||||
|
return internal.Delete_Helm(*release, *namespace)
|
||||||
|
case "cluster":
|
||||||
|
return internal.Delete_Cluster(*folder, *release)
|
||||||
|
case "db":
|
||||||
|
return internal.Delete_DB(*release, *namespace, *dbName, *mUsr, *mPwd)
|
||||||
|
default:
|
||||||
|
internal.Help_Func()
|
||||||
|
}
|
||||||
|
case "upgrade":
|
||||||
|
what := ""
|
||||||
|
if len(os.Args) > 2 {
|
||||||
|
what = os.Args[2]
|
||||||
|
}
|
||||||
|
switch what {
|
||||||
|
case "helm":
|
||||||
|
return internal.Upgrade_Helm(*folder, *release, *namespace)
|
||||||
|
case "db":
|
||||||
|
return internal.Upgrade_DB(folder, *release, *namespace, *dbName, *mUsr, *mPwd)
|
||||||
|
default:
|
||||||
|
internal.Help_Func()
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
internal.Help_Func()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
BIN
cmd/oc-k8s
Executable file
BIN
cmd/oc-k8s
Executable file
Binary file not shown.
628
cmd/test-values.yaml
Executable file
628
cmd/test-values.yaml
Executable file
@@ -0,0 +1,628 @@
|
|||||||
|
env: test # For storage class provisioning
|
||||||
|
clusterName: opencloud
|
||||||
|
hostNetwork: true
|
||||||
|
host: beta.opencloud.com
|
||||||
|
hostPort: 80
|
||||||
|
registryHost: oc
|
||||||
|
scheme: http
|
||||||
|
|
||||||
|
mongo-express:
|
||||||
|
enabled: true
|
||||||
|
mongodbServer: "test-mongodb.test" # 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: "standard"
|
||||||
|
storageClass: "standard"
|
||||||
|
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: "standard"
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
size: 5Gi
|
||||||
|
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: "false"
|
||||||
|
adminPassword: "{SSHA}HMWJO7XCw80he2lqMf0PHzvvF14p6aLE"
|
||||||
|
configPassword: "{SSHA}gr70yyCvtQo2zKe5OkvMkbkLRHUsVqOI"
|
||||||
|
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=opencloud,dc=com
|
||||||
|
bindPassword: "{SSHA}HMWJO7XCw80he2lqMf0PHzvvF14p6aLE"
|
||||||
|
customLdifFiles:
|
||||||
|
01-schema.ldif: |-
|
||||||
|
dn: ou=groups,dc=opencloud,dc=com
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
ou: groups
|
||||||
|
|
||||||
|
dn: ou=users,dc=opencloud,dc=com
|
||||||
|
objectClass: organizationalUnit
|
||||||
|
ou: users
|
||||||
|
|
||||||
|
dn: cn=lastGID,dc=opencloud,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=opencloud,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=opencloud,dc=com
|
||||||
|
objectClass: top
|
||||||
|
objectClass: posixGroup
|
||||||
|
cn: everybody
|
||||||
|
memberUid: admin
|
||||||
|
gidNumber: 2003
|
||||||
|
|
||||||
|
02-ldapadmin.ldif : |-
|
||||||
|
dn: cn=ldapadmin,ou=groups,dc=opencloud,dc=com
|
||||||
|
objectClass: top
|
||||||
|
objectClass: posixGroup
|
||||||
|
cn: ldapadmin
|
||||||
|
memberUid: ldapadmin
|
||||||
|
gidNumber: 2001
|
||||||
|
|
||||||
|
dn: uid=ldapadmin,ou=users,dc=opencloud,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=opencloud,dc=com
|
||||||
|
objectClass: inetOrgPerson
|
||||||
|
cn: Admin
|
||||||
|
sn: Istrator
|
||||||
|
uid: admin
|
||||||
|
userPassword: "{SSHA}HMWJO7XCw80he2lqMf0PHzvvF14p6aLE"
|
||||||
|
mail: admin@example.com
|
||||||
|
ou: users
|
||||||
|
|
||||||
|
dn: ou=AppRoles,dc=opencloud,dc=com
|
||||||
|
objectClass: organizationalunit
|
||||||
|
ou: AppRoles
|
||||||
|
description: AppRoles
|
||||||
|
|
||||||
|
dn: ou=App1,ou=AppRoles,dc=opencloud,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.opencloud.com
|
||||||
|
LDAP_BASE_DN: dc=opencloud,dc=com
|
||||||
|
LDAP_REQUIRE_STARTTLS: "false"
|
||||||
|
LDAP_ADMINS_GROUP: ldapadmin
|
||||||
|
LDAP_ADMIN_BIND_DN: cn=admin,dc=opencloud,dc=com
|
||||||
|
LDAP_ADMIN_BIND_PWD: "{SSHA}HMWJO7XCw80he2lqMf0PHzvvF14p6aLE"
|
||||||
|
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
|
||||||
|
ports:
|
||||||
|
web:
|
||||||
|
port: 80
|
||||||
|
nodePort: 30950
|
||||||
|
websecure:
|
||||||
|
port: 443
|
||||||
|
nodePort: 30951
|
||||||
|
ingressRoute:
|
||||||
|
dashboard:
|
||||||
|
enabled: true
|
||||||
|
matchRule: Host(`localhost`) && PathPrefix(`/api`) || PathPrefix(`/dashboard`)
|
||||||
|
entryPoints: [web]
|
||||||
|
ports:
|
||||||
|
web:
|
||||||
|
port: 80
|
||||||
|
nodePort: 30950
|
||||||
|
websecure:
|
||||||
|
port: 443
|
||||||
|
nodePort: 30951
|
||||||
|
|
||||||
|
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://test-hydra-public.test: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:
|
||||||
|
storageClassName: standard
|
||||||
|
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: "standard"
|
||||||
|
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,ou=users,dc=opencloud,dc=com
|
||||||
|
binPwd: admin
|
||||||
|
baseDn: dc=opencloud,dc=com
|
||||||
|
roleBaseDn: ou=AppRoles,dc=opencloud,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://test-docker-registry-ui-registry-server.test.svc.cluster.local:5000"
|
||||||
|
registry:
|
||||||
|
secretName: regcred
|
||||||
|
enabled: true
|
||||||
|
dataVolume:
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: docker-registry-pvc
|
||||||
|
persistence:
|
||||||
|
create: false
|
||||||
|
storageClassName: standard
|
||||||
|
existingClaim: docker-registry-pvc
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
storage: 5Gi
|
||||||
|
storageClassName: "standard"
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
clusters:
|
|
||||||
- cluster:
|
|
||||||
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJVTBLdTVWVUVnUDR3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRFeE1EWXdPVE0wTWpOYUZ3MHpOVEV4TURRd09UTTVNak5hTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUURMRVJ4QkdISURNVDJCL2dvQWovRUhxc0s0NVkrMW1jcVFDNUxON3J1N3dRV3ZvcHd1VmlkREh0Wm4KQUFRSGR3RDhCOENMeFhleHFJZU1pM3ppWm80UHBBQTRpVklubE5RVi81S3pKZUg1SFVwYXptUjJuTkhIUGFOcgpEY1BTM0VoejJSNDZYMzlsUEpld3doeXczNFZWUGR1NXA3QVd2UThtRjhxMDc1Mll0NVh0REpkWEhFVVNzR2gxClhpTGF5aVkxTDk3cnJyZGtQemluOGpWVnNFdWFqMXdyUGhuTzQ0elpmK3JpblYrVEM2MlRkdmZTQkJHQXQ1SmEKc2RnaVg4a1FVaDUzQ1J2bUVyRUxtZzVKVmVhNjc3TFFiVUZXNzFTRkRlZmFNaDBoNk1OVng2WkF2T1R0RGVFegp2SFhGYVN1WWU5NDdzYmtVVGEzZTB0MjdUTk10QWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUUGVTQThBTXhwaGR5U05Yd3RORXRvaXk2bUtEQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQVJaenhteFowagpCTTFSSFlJNDZrYzRoUFg2QXRJd0xPaUgvUWpkYlUwWDdqZFQzZWVPdGtTMm9SQmR0WThYbzFGVVJkUmdBc0YrClI1VDdOL0RZbFJRaWZaWTdQbDE0bzJmQWkxRG40cEhMQ3pWVzJaVUFSdDExY1p0Q1hZa3NTczJXdXV2SjRCVmIKY3FJYTUza3kza0tidm9keDRmOWFJU3lvTmx3YXZmYlNzU1BOTHVOb2VLaWg3SjdOTStBaElXblpxQU5JYWtEVgpnK0RVUi9EL1RjdHVvV3RHbVVrVnkvQWZldUt4VnpqNXhjSENleVBBaGRHUlBjVThLQTQzMHV4bW9hY2d5MG13CmtlQTB6RjJmNCtPT1JFa291MXBwMzFjYWxvSndNaEIwcXliQmxwcVFoNTI2aGdBQW1hZkFVSWhvY2liZzlLRDQKa2tUVURRbkVCNFVvCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
|
||||||
server: https://127.0.0.1:42767
|
|
||||||
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: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJU210V3NrK0RrcjB3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TlRFeE1EWXdPVE0wTWpOYUZ3MHlOakV4TURZd09UTTVNak5hTUR3eApIekFkQmdOVkJBb1RGbXQxWW1WaFpHMDZZMngxYzNSbGNpMWhaRzFwYm5NeEdUQVhCZ05WQkFNVEVHdDFZbVZ5CmJtVjBaWE10WVdSdGFXNHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDNHEwUWIKeWFod3hMbnFyV05vRzYxcmVuc0Z3dE1XNXkzckxkeENLa3krYndpeGRjYjREQTRxU21KMU53dHo1UHMreTV1Rwo0RVRJRW9vTnZsZEtvQjhuZlBEdW44ZGd1cXdkZEdwOTRpbGJFRldoaExEeDR3VnRLQ2Y3cVZMN0VpUnFBRHFtCmYrcVlOa2FFd08xMnZoeTdCODFTdlNzQTZwQ29yOGVYL2k2K0diZGlHMGkxWGtEcFNWSGxBbE1WUlZEdUFydGwKQnZDVUdCRE5VdTBuenNKS3dkTFNsUG1RaUY3VTNwb3U4WHFRaGhvWlhFSWc4UkVpZ2FCRlJWd1dzaTRsWTlYQwp4Ym04VlpRbnFYL3NDemVma28vREtzSXJuN3VDYXpqczBJa1JyMmdXbE8wRmpkaGFocTdjYW12ZDZIaHRBMk56CkdiWHEwU0o4MVduYk1FcWxBZ01CQUFHalZqQlVNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUsKQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RUFqQUFNQjhHQTFVZEl3UVlNQmFBRk05NUlEd0F6R21GM0pJMQpmQzAwUzJpTExxWW9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUJZaWNTTkd0cG1vOFVzVGlDc1FUVGJwTXZECmQ5V3RLeUVMdWNSMHdUN29ISkVMNU56OW9idWdmaS93ZFFUTzVualg3OFVNcXBnMEJiZHU0OGZSMXl1SWhSOVEKWVpPbEYzREwyRFhXeVJ5VU41QnJWYWhhVCtVMysvcjNWNmNnRHlrbGZ3NzQ2cFJweGJCMDZ2UUdsV3l5Smt3OQpyUjU3OFM5WTdPekZBL1B4cEp0T3prcFhVMFoxRWZ6SGhMc3UzT0J0WDZDWTRIa0JYNEpYaUwveldHRFdqWUtCClhqY3RRSlE3MzJ2c3FHbEpvR3pRNWEzN2NqbEFMV1doUWVJZXRoQm5sMFcvZUwva3czSzhMUXI0WG9OMVhwa3kKQVJ3Y3c3VVJ5UkFPanJYZTdaWnFJRk44NXdxQ0F3WFNCcU90M0Nld0pUMGNtampKNnpQaEs4Qnl6VTNjCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
|
||||||
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb2dJQkFBS0NBUUVBdUt0RUc4bW9jTVM1NnExamFCdXRhM3A3QmNMVEZ1Y3Q2eTNjUWlwTXZtOElzWFhHCitBd09La3BpZFRjTGMrVDdQc3ViaHVCRXlCS0tEYjVYU3FBZkozenc3cC9IWUxxc0hYUnFmZUlwV3hCVm9ZU3cKOGVNRmJTZ24rNmxTK3hJa2FnQTZwbi9xbURaR2hNRHRkcjRjdXdmTlVyMHJBT3FRcUsvSGwvNHV2aG0zWWh0SQp0VjVBNlVsUjVRSlRGVVZRN2dLN1pRYndsQmdRelZMdEo4N0NTc0hTMHBUNWtJaGUxTjZhTHZGNmtJWWFHVnhDCklQRVJJb0dnUlVWY0ZySXVKV1BWd3NXNXZGV1VKNmwvN0FzM241S1B3eXJDSzUrN2dtczQ3TkNKRWE5b0ZwVHQKQlkzWVdvYXUzR3ByM2VoNGJRTmpjeG0xNnRFaWZOVnAyekJLcFFJREFRQUJBb0lCQURzZzIxWHFZN3gzd08rYgpSTkQ0eTdZMktWM1cyNi9ocFpvL3ZONlNuSy84N1ZPazJtaGhzOGRtdWMrK0tEU2JoTGEraXJYTTZUa0dkcDJmCjdHTkFrYmtiRUNuWGp3Y3h2aHBRUkNpNldYT0c3MlFnRUdmaXdNSUtzWUtxM0o3M1dDRjRvVTdlZGtiMldlMzMKdUJEbEhsM2tTYUhNWUJDVENtNTRtZmZZc3k2NmthZnR5cVlSZEc2amUvWFN5YnZ0U2FRNU9CeGlWMUlKRjFCYgpoYVYwWFEyVVhKU21Ic1dCUncwcEtKYWdBR0xkQ0ROL0RFYnlJaGczNWltekpuNTdORXV3cUxadDRsOHpESzg5CndiUmZmd1UxODBKQUtUZHI0cnMrNFNVYnUrVzZ3dGFSYzZXVk10RStyQitKZkxJNkxYcHk1TmRQZnpQZk9VNEkKU0FvUWFxRUNnWUVBeTAwcm5FN3EzOGVPUCtRSGxTeG04NjMwV2F3eldwamhkZEk1dFlXMFlUSGFKcHNCcXBOVwpMUWhUUTFMSGwxY3VWZFBlWTFrRmYzcEJtRkVFdkIvOU9HWnNUL3JYZXlwQW1qRWlSSkprYlFYMVJ1Sklva0FvCkxsckV2ODQ5S0JkYlVOMEpIMWpnaTUrNUZacGNaMWUvbmpxQzIxc0N4a2QvdzVDMTA3Yk91dk1DZ1lFQTZJbXIKbmJhZ1YzZnBNOXE4ZXNjY2tGK0xwUmdOYXBnbGFXSWdxTHpTQjBpRC82YTA4QzFQdGhCR1hXYlg2czA4VGVEZwppM1RpTDlYTjNHZmo1M3UyWTltbCtYSW9zaW1WOUMxQVJEU2xyU3Bqc2k4MmdUcnlmN0pxVEpEbXR5T2cvYnhHCmUxQTl2WGw5NUtBckpkdDVYOW11NWovYlVsMi80dWlYS3ZOaG1nY0NnWUF3Unh3akcwNkZZN014RXVxR0R5eEgKazdpaUR0V0hIeVR6UUwvNWprMitnd01tQmN0SWdZS0dZU0s4cXd6QXNMQk5LMm4xTjYrcGpSUEVvd0MzMS9UZgpEdHVMeHFxakVlNlRieldQQ1NDV0QwTW0yUmVjaUJYQ3BFVnlzdndzNkJjRVJla2pxNHh2TzdmTkhJSHkvSkNCCmQ2MlpmNnhSLzZxa2UxbmljOWYxNXdLQmdHWXFwb1lpaVF3bEdRYTVZZm9ucFRzaFgzOW5zKzFUYjR4L21vM0kKZUJiUEczK2xSUFlKVW01UmREanhTSWhYSjltbnBjQmYyRWpnRFJSN2FMeDV0RWJtaDIrellvSDBsM2V5c2Z2RgpqYzBwUktneTZpV1pPcFkwVTFQVWppbUVzK1VIWllna1Z4djZWdit1QjRjWWlKaytVUVBFcHAzbnBya1JLK21wCkNRYmRBb0dBWG5tbGpwN1JjbFdiaENMaVdoWGxKSndQYnBqZjRmY2twQ3BCbnN4RnRCVEUwQ2g1ZkkzVTQxWGYKUmd5d1QvZ01OSVBnakxodU95bWh5dEdtazVlMitGWk5VVU8rZG9lanRCQjVGVXN0Y2N4VUg5QkZndjNzV3I5RAp0V1NNbjVna3RrazVLZEdQU2p5OXorSlRiMDNMNGNXajhUS0c1amRVSHVKWjhWanZ4dWs9Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
|
|
||||||
|
|
||||||
40
go.mod
Normal file
40
go.mod
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
module oc-k8s
|
||||||
|
|
||||||
|
go 1.24.9
|
||||||
|
|
||||||
|
toolchain go1.24.11
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/prometheus/client_golang v1.23.2
|
||||||
|
github.com/prometheus/common v0.67.5
|
||||||
|
github.com/prometheus/prometheus v0.309.0
|
||||||
|
github.com/stretchr/testify v1.11.1
|
||||||
|
gopkg.in/yaml.v2 v2.4.0
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/beorn7/perks v1.0.1 // indirect
|
||||||
|
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||||
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||||
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
|
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 // indirect
|
||||||
|
github.com/jpillora/backoff v1.0.0 // indirect
|
||||||
|
github.com/json-iterator/go v1.1.12 // indirect
|
||||||
|
github.com/kr/text v0.2.0 // indirect
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
|
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
|
||||||
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||||
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // indirect
|
||||||
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||||
|
github.com/prometheus/client_model v0.6.2 // indirect
|
||||||
|
github.com/prometheus/procfs v0.16.1 // indirect
|
||||||
|
go.yaml.in/yaml/v2 v2.4.3 // indirect
|
||||||
|
golang.org/x/net v0.48.0 // indirect
|
||||||
|
golang.org/x/oauth2 v0.34.0 // indirect
|
||||||
|
golang.org/x/sys v0.39.0 // indirect
|
||||||
|
golang.org/x/text v0.32.0 // indirect
|
||||||
|
google.golang.org/protobuf v1.36.11 // indirect
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||||
|
)
|
||||||
206
go.sum
Normal file
206
go.sum
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4=
|
||||||
|
cloud.google.com/go/auth v0.17.0/go.mod h1:6wv/t5/6rOPAX4fJiRjKkJCvswLwdet7G8+UGXt7nCQ=
|
||||||
|
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
|
||||||
|
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
|
||||||
|
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
|
||||||
|
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 h1:JXg2dwJUmPB9JmtVmdEB16APJ7jurfbY5jnfXpJoRMc=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA=
|
||||||
|
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI=
|
||||||
|
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 h1:XRzhVemXdgvJqCH0sFfrBUTnUJSBrBf7++ypk+twtRs=
|
||||||
|
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=
|
||||||
|
github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0=
|
||||||
|
github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b/go.mod h1:fvzegU4vN3H1qMT+8wDmzjAcDONcgo2/SZ/TyfdUOFs=
|
||||||
|
github.com/aws/aws-sdk-go-v2 v1.41.0 h1:tNvqh1s+v0vFYdA1xq0aOJH+Y5cRyZ5upu6roPgPKd4=
|
||||||
|
github.com/aws/aws-sdk-go-v2 v1.41.0/go.mod h1:MayyLB8y+buD9hZqkCW3kX1AKq07Y5pXxtgB+rRFhz0=
|
||||||
|
github.com/aws/aws-sdk-go-v2/config v1.32.6 h1:hFLBGUKjmLAekvi1evLi5hVvFQtSo3GYwi+Bx4lpJf8=
|
||||||
|
github.com/aws/aws-sdk-go-v2/config v1.32.6/go.mod h1:lcUL/gcd8WyjCrMnxez5OXkO3/rwcNmvfno62tnXNcI=
|
||||||
|
github.com/aws/aws-sdk-go-v2/credentials v1.19.6 h1:F9vWao2TwjV2MyiyVS+duza0NIRtAslgLUM0vTA1ZaE=
|
||||||
|
github.com/aws/aws-sdk-go-v2/credentials v1.19.6/go.mod h1:SgHzKjEVsdQr6Opor0ihgWtkWdfRAIwxYzSJ8O85VHY=
|
||||||
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.16 h1:80+uETIWS1BqjnN9uJ0dBUaETh+P1XwFy5vwHwK5r9k=
|
||||||
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.16/go.mod h1:wOOsYuxYuB/7FlnVtzeBYRcjSRtQpAW0hCP7tIULMwo=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.16 h1:rgGwPzb82iBYSvHMHXc8h9mRoOUBZIGFgKb9qniaZZc=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.16/go.mod h1:L/UxsGeKpGoIj6DxfhOWHWQ/kGKcd4I1VncE4++IyKA=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.16 h1:1jtGzuV7c82xnqOVfx2F0xmJcOw5374L7N6juGW6x6U=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.16/go.mod h1:M2E5OQf+XLe+SZGmmpaI2yy+J326aFf6/+54PoxSANc=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk=
|
||||||
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4 h1:0ryTNEdJbzUCEWkVXEXoqlXV72J5keC1GvILMOuD00E=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.4/go.mod h1:HQ4qwNZh32C3CBeO6iJLQlgtMzqeG17ziAA/3KDJFow=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.16 h1:oHjJHeUy0ImIV0bsrX0X91GkV5nJAyv1l1CC9lnO0TI=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.16/go.mod h1:iRSNGgOYmiYwSCXxXaKb9HfOEj40+oTKn8pTxMlYkRM=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/signin v1.0.4 h1:HpI7aMmJ+mm1wkSHIA2t5EaFFv5EFYXePW30p1EIrbQ=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/signin v1.0.4/go.mod h1:C5RdGMYGlfM0gYq/tifqgn4EbyX99V15P2V3R+VHbQU=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sso v1.30.8 h1:aM/Q24rIlS3bRAhTyFurowU8A0SMyGDtEOY/l/s/1Uw=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sso v1.30.8/go.mod h1:+fWt2UHSb4kS7Pu8y+BMBvJF0EWx+4H0hzNwtDNRTrg=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.12 h1:AHDr0DaHIAo8c9t1emrzAlVDFp+iMMKnPdYy6XO4MCE=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.12/go.mod h1:GQ73XawFFiWxyWXMHWfhiomvP3tXtdNar/fi8z18sx0=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sts v1.41.5 h1:SciGFVNZ4mHdm7gpD1dgZYnCuVdX1s+lFTg4+4DOy70=
|
||||||
|
github.com/aws/aws-sdk-go-v2/service/sts v1.41.5/go.mod h1:iW40X4QBmUxdP+fZNOpfmkdMZqsovezbAeO+Ubiv2pk=
|
||||||
|
github.com/aws/smithy-go v1.24.0 h1:LpilSUItNPFr1eY85RYgTIg5eIEPtvFbskaFcmmIUnk=
|
||||||
|
github.com/aws/smithy-go v1.24.0/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
|
||||||
|
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||||
|
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||||
|
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||||
|
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||||
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
||||||
|
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||||
|
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
||||||
|
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
||||||
|
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
||||||
|
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
||||||
|
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
||||||
|
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||||
|
github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo=
|
||||||
|
github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
|
||||||
|
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||||
|
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||||
|
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||||
|
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
|
||||||
|
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAVrGgAa0f2/R35S4DJwfFaUPFQ=
|
||||||
|
github.com/googleapis/enterprise-certificate-proxy v0.3.7/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc=
|
||||||
|
github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853 h1:cLN4IBkmkYZNnk7EAJ0BHIethd+J6LqxFNw5mSiI2bM=
|
||||||
|
github.com/grafana/regexp v0.0.0-20250905093917-f7b3be9d1853/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk=
|
||||||
|
github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
|
||||||
|
github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
|
||||||
|
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||||
|
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||||
|
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||||
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
github.com/klauspost/compress v1.18.2 h1:iiPHWW0YrcFgpBYhsA6D1+fqHssJscY/Tm/y2Uqnapk=
|
||||||
|
github.com/klauspost/compress v1.18.2/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4=
|
||||||
|
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
|
||||||
|
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
|
||||||
|
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
|
||||||
|
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
|
||||||
|
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||||
|
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
|
||||||
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||||
|
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
|
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
|
||||||
|
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
|
||||||
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||||
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU=
|
||||||
|
github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||||
|
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
|
||||||
|
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||||
|
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
|
||||||
|
github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
|
||||||
|
github.com/prometheus/client_golang/exp v0.0.0-20251212205219-7ba246a648ca h1:BOxmsLoL2ymn8lXJtorca7N/m+2vDQUDoEtPjf0iAxA=
|
||||||
|
github.com/prometheus/client_golang/exp v0.0.0-20251212205219-7ba246a648ca/go.mod h1:gndBHh3ZdjBozGcGrjUYjN3UJLRS3l2drALtu4lUt+k=
|
||||||
|
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
|
||||||
|
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
|
||||||
|
github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4=
|
||||||
|
github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw=
|
||||||
|
github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos=
|
||||||
|
github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM=
|
||||||
|
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
|
||||||
|
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
|
||||||
|
github.com/prometheus/prometheus v0.309.0 h1:e5ftKJSkjDE4LKWWN9qtYtbVq627BabwGzlKWqX7t2Y=
|
||||||
|
github.com/prometheus/prometheus v0.309.0/go.mod h1:d+dOGiVhuNDa4MaFXHVdnUBy/CzqlcNTooR8oM1wdTU=
|
||||||
|
github.com/prometheus/sigv4 v0.3.0 h1:QIG7nTbu0JTnNidGI1Uwl5AGVIChWUACxn2B/BQ1kms=
|
||||||
|
github.com/prometheus/sigv4 v0.3.0/go.mod h1:fKtFYDus2M43CWKMNtGvFNHGXnAJJEGZbiYCmVp/F8I=
|
||||||
|
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
|
||||||
|
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
||||||
|
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
||||||
|
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||||
|
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
||||||
|
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y=
|
||||||
|
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ=
|
||||||
|
go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48=
|
||||||
|
go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8=
|
||||||
|
go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0=
|
||||||
|
go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs=
|
||||||
|
go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI=
|
||||||
|
go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA=
|
||||||
|
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
|
||||||
|
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
|
||||||
|
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
|
||||||
|
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
|
||||||
|
go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
|
||||||
|
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||||
|
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
|
||||||
|
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
|
||||||
|
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
|
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||||
|
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
|
||||||
|
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
|
||||||
|
golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw=
|
||||||
|
golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
|
||||||
|
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
|
||||||
|
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
|
||||||
|
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
|
||||||
|
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||||
|
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
google.golang.org/api v0.257.0 h1:8Y0lzvHlZps53PEaw+G29SsQIkuKrumGWs9puiexNAA=
|
||||||
|
google.golang.org/api v0.257.0/go.mod h1:4eJrr+vbVaZSqs7vovFd1Jb/A6ml6iw2e6FBYf3GAO4=
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww=
|
||||||
|
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
|
||||||
|
google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM=
|
||||||
|
google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig=
|
||||||
|
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
|
||||||
|
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||||
|
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||||
|
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
k8s.io/apimachinery v0.34.3 h1:/TB+SFEiQvN9HPldtlWOTp0hWbJ+fjU+wkxysf/aQnE=
|
||||||
|
k8s.io/apimachinery v0.34.3/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
|
||||||
|
k8s.io/client-go v0.34.3 h1:wtYtpzy/OPNYf7WyNBTj3iUA0XaBHVqhv4Iv3tbrF5A=
|
||||||
|
k8s.io/client-go v0.34.3/go.mod h1:OxxeYagaP9Kdf78UrKLa3YZixMCfP6bgPwPwNBQBzpM=
|
||||||
|
k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
|
||||||
|
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
|
||||||
|
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
|
||||||
|
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
|
||||||
|
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
FILES=$(ls $1 | grep .json)
|
|
||||||
BRANCH=${2:-dev}
|
|
||||||
|
|
||||||
export KUBECONFIG=$(realpath ./deployed_config)
|
|
||||||
|
|
||||||
POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $BRANCH-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 DC_myDC --collection ${file/.json/} --file /tmp/$file --jsonArray
|
|
||||||
done
|
|
||||||
114
internal/cluster.go
Normal file
114
internal/cluster.go
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"oc-k8s/utils"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Help_Cluster() {
|
||||||
|
fmt.Println(`
|
||||||
|
Cluster commands: oc-k8s <action> cluster [options]
|
||||||
|
create - Create a new kind cluster
|
||||||
|
delete - Delete the kind cluster
|
||||||
|
help - Show this help message
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
oc-k8s create cluster -f [env_folder] -r [release]
|
||||||
|
env_folder - Helm config folder (default: .)
|
||||||
|
release - Release values name (default: dev)
|
||||||
|
oc-k8s delete cluster -f [env_folder] -r [release]
|
||||||
|
env_folder - Helm config folder (default: .)
|
||||||
|
release - Release values name (default: dev)
|
||||||
|
oc-k8s help cluster `)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Delete_Cluster(folder string, release string) error {
|
||||||
|
clusterName := "opencloud"
|
||||||
|
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
||||||
|
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||||
|
}
|
||||||
|
utils.Exec("kind delete cluster --name " + clusterName)
|
||||||
|
utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config")
|
||||||
|
return utils.Exec("chmod 600 ~/.kube/config")
|
||||||
|
}
|
||||||
|
|
||||||
|
func Install_Cluster() error {
|
||||||
|
utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config")
|
||||||
|
utils.Exec("chmod 700 /home/mr/.kube")
|
||||||
|
return utils.Exec("chmod 600 ~/.kube/config")
|
||||||
|
}
|
||||||
|
|
||||||
|
func Create_Cluster(folder string, release string) error {
|
||||||
|
clusterName := "opencloud"
|
||||||
|
scheme := "http"
|
||||||
|
port := "80"
|
||||||
|
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
||||||
|
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||||
|
scheme, _ = utils.Extract(string(b), "scheme")
|
||||||
|
port, _ = utils.Extract(string(b), "hostPort")
|
||||||
|
}
|
||||||
|
utils.Exec("sudo fuser -k -TERM " + port + "/tcp")
|
||||||
|
utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config")
|
||||||
|
|
||||||
|
containerPort := "30950"
|
||||||
|
if scheme == "https" {
|
||||||
|
containerPort = "30951"
|
||||||
|
}
|
||||||
|
kindConfig := `kind: Cluster
|
||||||
|
apiVersion: kind.x-k8s.io/v1alpha4
|
||||||
|
name: ` + clusterName + `
|
||||||
|
nodes:
|
||||||
|
- role: control-plane
|
||||||
|
image: kindest/node:v1.35.0
|
||||||
|
kubeadmConfigPatches:
|
||||||
|
- |
|
||||||
|
kind: InitConfiguration
|
||||||
|
nodeRegistration:
|
||||||
|
kubeletExtraArgs:
|
||||||
|
node-labels: "ingress-ready=true"
|
||||||
|
extraPortMappings:
|
||||||
|
- containerPort: ` + containerPort + `
|
||||||
|
hostPort: ` + port + `
|
||||||
|
protocol: TCP
|
||||||
|
`
|
||||||
|
utils.Exec(`docker exec -it oc-control-plane bash -c 'mkdir -p /etc/containerd && cat <<EOF >/etc/containerd/config.toml
|
||||||
|
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:5000"]
|
||||||
|
endpoint = ["http://dev-docker-registry-ui-registry-server.opencloud.svc.cluster.local:5000"]
|
||||||
|
EOF
|
||||||
|
containerd config restart'`)
|
||||||
|
cmd := exec.Command("kind", "create", "cluster", "--name", clusterName, "--wait", "0", "--config=-")
|
||||||
|
cmd.Stdin = bytes.NewBufferString(kindConfig)
|
||||||
|
cmd.Stdout = os.Stdout
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
|
||||||
|
if err := cmd.Run(); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("[WARNING] New cluster should be merged into your current config !")
|
||||||
|
|
||||||
|
if err := utils.Exec("KUBECONFIG=~/.kube/config:/tmp/kind-" + clusterName + ".kubeconfig kubectl config view --flatten --merge --minify > /tmp/merged-kubeconfig.yaml"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := utils.Exec("cp -f /tmp/merged-kubeconfig.yaml ~/.kube/config"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := utils.Exec("kubectl config get-contexts"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := utils.Exec("kubectl config use-context kind-" + clusterName); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := utils.Exec("docker start " + clusterName + "-control-plane"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
100
internal/db.go
Normal file
100
internal/db.go
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"oc-k8s/utils"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"bytes"
|
||||||
|
"os/exec"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Help_DB() {
|
||||||
|
fmt.Println(`
|
||||||
|
DB commands: oc-k8s <action> db [options]
|
||||||
|
create - Add datas in db
|
||||||
|
replace - Replace datas in db
|
||||||
|
delete - Delete datas in db
|
||||||
|
help - Show this help message
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
oc-k8s create db --d [db_name] -r [release] -n [namespace] -f [folder]
|
||||||
|
folder - Datas folder files path (required)
|
||||||
|
release - Release values name (default: dev)
|
||||||
|
namespace - Namespace values name (default: dev)
|
||||||
|
db_name - db name (default: opencloud)
|
||||||
|
folder - Helm config folder (required, default: .)
|
||||||
|
oc-k8s upgrade db -d [db_name] -r [release] -n [namespace] -f [folder]
|
||||||
|
folder - Datas folder files path (required)
|
||||||
|
release - Release values name (default: dev)
|
||||||
|
namespace - Namespace values name (default: dev)
|
||||||
|
db_name - db name (default: opencloud)
|
||||||
|
oc-k8s delete db -d [db_name] -r [release] -n [namespace] -f [folder]
|
||||||
|
release - Release values name (default: dev)
|
||||||
|
namespace - Namespace values name (default: dev)
|
||||||
|
db_name - db name (default: opencloud)
|
||||||
|
folder - Helm config folder (required, default: .)
|
||||||
|
oc-k8s help db `)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Delete_DB(release string, namespace string, dbName string, adminUsr string, adminPsw string) error {
|
||||||
|
podName, err := getMongoPod(namespace)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return utils.Exec("kubectl exec " + podName + " -- mongosh --eval \"db.getSiblingDB('" + dbName + "').dropDatabase()\" -u " + adminUsr + " -p " + adminPsw +" --authenticationDatabase admin")
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFileNames(folderPath string) []string {
|
||||||
|
fileNames := []string{}
|
||||||
|
entries, err := os.ReadDir(folderPath)
|
||||||
|
if err != nil {
|
||||||
|
return fileNames
|
||||||
|
}
|
||||||
|
for _, entry := range entries {
|
||||||
|
if entry.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
fileNames = append(fileNames, entry.Name())
|
||||||
|
}
|
||||||
|
return fileNames
|
||||||
|
}
|
||||||
|
|
||||||
|
func Create_DB(filePath *string, release string, namespace string, dbName string, adminUsr string, adminPsw string) error {
|
||||||
|
if filePath == nil {
|
||||||
|
return errors.New("missing db datas file path")
|
||||||
|
}
|
||||||
|
podName, err := getMongoPod(namespace)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, fileName := range getFileNames(*filePath) {
|
||||||
|
fmt.Println("ADD file " + fileName + " in collection")
|
||||||
|
fmt.Println("kubectl cp -n " + namespace + " " + *filePath + "/" + fileName + " \"" + podName + ":/tmp/" + fileName + "\"")
|
||||||
|
if err := utils.Exec("kubectl cp -n " + namespace + " " + *filePath + "/" + fileName + " \"" + podName + ":/tmp/" + fileName + "\""); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Println("kubectl exec -n " + namespace + " " + podName + " -- mongoimport --db " + dbName + " --collection " + strings.ReplaceAll(fileName, ".json", "") + " --file /tmp/" + fileName + " --jsonArray -u " + adminUsr + " -p " + adminPsw +" --authenticationDatabase admin")
|
||||||
|
if err := utils.Exec("kubectl exec -n " + namespace + " " + podName + " -- mongoimport --db " + dbName + " --collection " + strings.ReplaceAll(fileName, ".json", "") + " --file /tmp/" + fileName + " --jsonArray -u " + adminUsr + " -p " + adminPsw +" --authenticationDatabase admin"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getMongoPod(namespace string) (string, error) {
|
||||||
|
cmd := exec.Command("bash", "-c", "kubectl get pods -n "+namespace+" --no-headers -o custom-columns=\":metadata.name\" | grep mongodb | head -n 1")
|
||||||
|
var out bytes.Buffer
|
||||||
|
cmd.Stdout = &out
|
||||||
|
if err := cmd.Run(); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
podName := strings.TrimSpace(out.String()) // remove newline
|
||||||
|
return podName, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Upgrade_DB(filePath *string, release string, namespace string, dbName string, adminUsr string, adminPsw string) error {
|
||||||
|
Delete_DB(release, namespace, dbName, adminUsr, adminPsw)
|
||||||
|
return Create_DB(filePath, release, namespace, dbName, adminUsr, adminPsw)
|
||||||
|
}
|
||||||
131
internal/func.go
Normal file
131
internal/func.go
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"embed"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/fs"
|
||||||
|
"oc-k8s/utils"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Help_Func() {
|
||||||
|
fmt.Println(`
|
||||||
|
Main commands: oc-k8s <action>
|
||||||
|
install - Install opencloud dependancies [arch] [version]
|
||||||
|
start - Start opencloud k8s
|
||||||
|
stop - Stop opencloud k8s
|
||||||
|
Usage:
|
||||||
|
oc-k8s install -a [arch] -v [version]
|
||||||
|
arch - Arch of OS (required)
|
||||||
|
kind_version - version of kind (required)
|
||||||
|
oc-k8s start -n [namespace] -r [release] -f [folder] -b [branch] -t [target] -p [port] -P [portTLS]
|
||||||
|
folder - Helm config folder (required, default: .)
|
||||||
|
release - environnement selected (default: dev)
|
||||||
|
namespace - namespace selected (default: dev)
|
||||||
|
branch - Git branch to build (default: main)
|
||||||
|
target - make target (default: all)
|
||||||
|
oc-k8s stop -n [namespace] -r [release] -f [folder]
|
||||||
|
folder - Helm config folder (required, default: .)
|
||||||
|
release - environnement selected (default: dev)
|
||||||
|
namespace - namespace selected (default: dev)`)
|
||||||
|
Help_Cluster()
|
||||||
|
Help_Service()
|
||||||
|
Help_Helm()
|
||||||
|
Help_Values()
|
||||||
|
Help_K3S()
|
||||||
|
Help_Kind()
|
||||||
|
Help_DB()
|
||||||
|
}
|
||||||
|
|
||||||
|
func Start(folder string, release string, namespace string, branch string, target string) error {
|
||||||
|
Stop(folder, release, namespace)
|
||||||
|
if err := Create_K3S(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := Create_Cluster(folder, release); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := Create_Service(folder, release, branch, target); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := Create_Helm(folder, release, namespace); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Stop(folder string, release string, namespace string) error {
|
||||||
|
Delete_Helm(release, namespace)
|
||||||
|
Delete_Cluster(folder, release)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Install_Func(arch string, version string) error {
|
||||||
|
Install_K3S()
|
||||||
|
Install_Kind(arch, version)
|
||||||
|
Install_Helm()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExtractTrees(src, dst string) error {
|
||||||
|
for i, fs := range utils.FSS {
|
||||||
|
fmt.Printf("\rExtract temporary Charts: %d/11", i)
|
||||||
|
if err := ExtractTree(fs, "assets", dst); err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Print("\n")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ExtractTree(FS embed.FS, src, dst string) error {
|
||||||
|
seen := map[string]bool{}
|
||||||
|
if err := os.MkdirAll(dst, 0755); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
entries, err := fs.ReadDir(FS, src)
|
||||||
|
if err != nil {
|
||||||
|
return err // src may not exist in this FS
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, e := range entries {
|
||||||
|
srcPath := path.Join(src, e.Name())
|
||||||
|
dstPath := filepath.Join(dst, e.Name())
|
||||||
|
|
||||||
|
if seen[dstPath] {
|
||||||
|
continue // already copied
|
||||||
|
}
|
||||||
|
|
||||||
|
if e.IsDir() {
|
||||||
|
if err := ExtractTree(FS, srcPath, dstPath); err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
in, err := FS.Open(srcPath)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
out, err := os.Create(dstPath)
|
||||||
|
if err != nil {
|
||||||
|
in.Close()
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := io.Copy(out, in); err != nil {
|
||||||
|
in.Close()
|
||||||
|
out.Close()
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
in.Close()
|
||||||
|
out.Close()
|
||||||
|
|
||||||
|
seen[dstPath] = true
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
108
internal/helm.go
Normal file
108
internal/helm.go
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"oc-k8s/utils"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Help_Helm() {
|
||||||
|
fmt.Println(`
|
||||||
|
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 -n [namespace] -r [release] -f [folder]
|
||||||
|
folder - Helm config folder (required, default: .)
|
||||||
|
release - environnement selected (default: dev)
|
||||||
|
namespace - namespace selected (default: dev)
|
||||||
|
oc-k8s upgrade helm -n [namespace] -r [release] -f [folder]
|
||||||
|
folder - Helm config folder (required, default: .)
|
||||||
|
release - environnement selected (default: dev)
|
||||||
|
namespace - namespace selected (default: dev)
|
||||||
|
oc-k8s delete helm -n [namespace] -r [release] -f [folder]
|
||||||
|
folder - Helm config folder (required, default: .)
|
||||||
|
release - environnement selected (default: dev)
|
||||||
|
namespace - namespace selected (default: dev)
|
||||||
|
oc-k8sh help helm`)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Install_Helm() error {
|
||||||
|
utils.Exec("curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash")
|
||||||
|
utils.Exec("helm version")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Delete_Helm(release string, namespace string) error {
|
||||||
|
utils.Exec("helm uninstall " + release + " -n " + namespace)
|
||||||
|
utils.Exec("kubectl delete namespace " + namespace + " &")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Create_Helm(folder string, release string, namespace string) error {
|
||||||
|
tmp := "./opencloud-chart"
|
||||||
|
utils.Exec("sudo rm -rf " + tmp)
|
||||||
|
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
ExtractTrees("assets", tmp)
|
||||||
|
|
||||||
|
host := "beta.opencloud.com"
|
||||||
|
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
||||||
|
host, _ = utils.Extract(string(b), "host")
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("set up helm")
|
||||||
|
if err := utils.Exec("helm dependency update " + tmp); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Println("set up deps")
|
||||||
|
for name, repo := range utils.ExtractRepo() {
|
||||||
|
utils.Exec("helm repo add " + name + " " + repo)
|
||||||
|
}
|
||||||
|
if err := utils.Exec("helm dependency build " + tmp); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
utils.Exec("sudo ulimit -n 1000000")
|
||||||
|
|
||||||
|
utils.Exec("helm repo add jetstack https://charts.jetstack.io")
|
||||||
|
utils.Exec("helm repo update")
|
||||||
|
|
||||||
|
utils.Exec("kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.crds.yaml")
|
||||||
|
utils.Exec("helm repo add jetstack https://charts.jetstack.io")
|
||||||
|
utils.Exec("helm repo update")
|
||||||
|
utils.Exec("helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.14.0")
|
||||||
|
|
||||||
|
utils.Exec("helm install admiralty oci://public.ecr.aws/admiralty/admiralty --namespace admiralty --create-namespace --version 0.17.0 --wait")
|
||||||
|
utils.Exec("helm repo add argo https://argoproj.github.io/argo-helm")
|
||||||
|
utils.Exec("helm repo update")
|
||||||
|
utils.Exec("helm install argo-workflows argo/argo-workflows --namespace argo --create-namespace")
|
||||||
|
|
||||||
|
if err := utils.Exec("helm upgrade --install " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml --debug"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
utils.Exec("sudo rm -rf " + tmp)
|
||||||
|
utils.Exec("sudo sed -i.bak \"\n/[[:space:]]" + host + "$/d\" /etc/hosts")
|
||||||
|
utils.Exec("echo \"\n127.0.0.1 " + host + "\" | sudo tee -a /etc/hosts > /dev/null")
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Upgrade_Helm(folder string, release string, namespace string) error {
|
||||||
|
tmp := "./opencloud-chart"
|
||||||
|
if err := os.MkdirAll(tmp, os.ModePerm); err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer os.RemoveAll(tmp)
|
||||||
|
ExtractTrees("assets", tmp)
|
||||||
|
|
||||||
|
Delete_Cluster(folder, release)
|
||||||
|
|
||||||
|
return utils.Exec("helm upgrade " + release + " " + tmp + " -n " + namespace + " --create-namespace -f " + folder + "/" + release + "-values.yaml")
|
||||||
|
}
|
||||||
40
internal/k3s.go
Normal file
40
internal/k3s.go
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"oc-k8s/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Help_K3S() {
|
||||||
|
fmt.Println(`
|
||||||
|
K3S commands: oc-k8s <action> k3s
|
||||||
|
install - Install k3s
|
||||||
|
create - Create a new cluster
|
||||||
|
help - Show this help message
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
oc-k8s install k3s
|
||||||
|
oc-k8s create k3s
|
||||||
|
oc-k8s help values `)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Install_K3S() error {
|
||||||
|
utils.Exec("sudo /usr/local/bin/k3s-uninstall.sh")
|
||||||
|
utils.Exec("sudo rm -rf /etc/rancher /var/lib/rancher")
|
||||||
|
utils.Exec("sudo chown $USER:$USER /home/$USER/.kube/config")
|
||||||
|
if err := utils.Exec("curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Create_K3S()
|
||||||
|
|
||||||
|
if err := utils.Exec("sudo systemctl status k3s"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return utils.Exec("chmod 600 ~/.kube/config")
|
||||||
|
}
|
||||||
|
|
||||||
|
func Create_K3S() error {
|
||||||
|
utils.Exec("yes | sudo cp -rf /etc/rancher/k3s/k3s.yaml ~/.kube/config")
|
||||||
|
utils.Exec("chmod 700 /home/mr/.kube")
|
||||||
|
return utils.Exec("chmod 600 ~/.kube/config")
|
||||||
|
}
|
||||||
31
internal/kind.go
Normal file
31
internal/kind.go
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"oc-k8s/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Help_Kind() {
|
||||||
|
fmt.Println(`
|
||||||
|
Kind commands: oc-k8s <action> kind
|
||||||
|
install - Install kind
|
||||||
|
help - Show this help message
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
oc-k8s install kind -a [arch] -v [version]
|
||||||
|
arch - Arch of OS (required, default: amd64)
|
||||||
|
kind_version - version of kind (optionnal)
|
||||||
|
oc-k8s help values `)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Install_Kind(arch string, version string) error {
|
||||||
|
if version == "" {
|
||||||
|
utils.Exec("GOARCH=" + arch +" GOOS=linux go install sigs.k8s.io/kind@latest")
|
||||||
|
|
||||||
|
} else {
|
||||||
|
utils.Exec("curl -Lo kind-linux-amd64 https://kind.sigs.k8s.io/dl/" + version + "/kind-linux-" + arch)
|
||||||
|
utils.Exec("sudo chmod +x ./kind-linux-" + arch)
|
||||||
|
utils.Exec("sudo mv ./kind-linux-" + arch + " /usr/local/bin/kind")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
74
internal/services.go
Normal file
74
internal/services.go
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"oc-k8s/utils"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
var REPOS = []string{
|
||||||
|
"oc-auth",
|
||||||
|
"oc-catalog",
|
||||||
|
"oc-datacenter",
|
||||||
|
"oc-front",
|
||||||
|
"oc-monitord",
|
||||||
|
"oc-peer",
|
||||||
|
"oc-shared",
|
||||||
|
"oc-scheduler",
|
||||||
|
"oc-schedulerd",
|
||||||
|
"oc-workflow",
|
||||||
|
"oc-workspace",
|
||||||
|
}
|
||||||
|
|
||||||
|
func Help_Service() {
|
||||||
|
fmt.Println(`
|
||||||
|
Service commands: oc-k8s <action> services
|
||||||
|
create - Build all opencloud services
|
||||||
|
help - Show this help message
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
oc-k8s create services -f [env_folder] -r [release] -b [branch] -t [target]
|
||||||
|
env_folder - Helm config folder (required, default: .)
|
||||||
|
release - Release values name (required, default: dev)
|
||||||
|
branch - Git branch to build (default: main)
|
||||||
|
target - make target (default: all)
|
||||||
|
oc-k8s help services `)
|
||||||
|
}
|
||||||
|
|
||||||
|
func Create_Service(folder string, release string, branch string, target string) error {
|
||||||
|
scheme := "http"
|
||||||
|
hostname := "beta.opencloud.com"
|
||||||
|
clusterName := "opencloud"
|
||||||
|
pport := "80"
|
||||||
|
if b, err := os.ReadFile(folder + "/" + release + "-values.yaml"); err == nil {
|
||||||
|
hostname, _ = utils.Extract(string(b), "host")
|
||||||
|
scheme, _ = utils.Extract(string(b), "scheme")
|
||||||
|
clusterName, _ = utils.Extract(string(b), "clusterName")
|
||||||
|
pport, _ = utils.Extract(string(b), "hostPort")
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, repo := range REPOS {
|
||||||
|
repo_url := "https://cloud.o-forge.io/core/" + repo + ".git"
|
||||||
|
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}')"
|
||||||
|
|
||||||
|
if inf, err := os.Stat("./" + repo); err != nil || !inf.IsDir() {
|
||||||
|
fmt.Println("Cloning repository: " + repo)
|
||||||
|
if err := utils.Exec("git clone " + repo_url); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println("Repository '" + repo + "' now exists. Pulling latest changes...")
|
||||||
|
utils.Exec("cd " + repo + " && git checkout " + branch + " && git pull")
|
||||||
|
fmt.Println("Build '" + repo + "'...")
|
||||||
|
if err := utils.Exec("cd " + repo + " && export CLUSTER_NAME=" + clusterName + " && export HOST=" + scheme + "://" + hostname + ":" + pport + " && export KUBERNETES_SERVICE_HOST=" + host + " && export KUBERNETES_SERVICE_PORT=" + port + " && export KUBE_CA=" + ca + " && export KUBE_CERT=" + cert + " && export KUBE_DATA=" + key + " && make " + target); err != nil {
|
||||||
|
fmt.Println("ERR", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
104
internal/values.go
Normal file
104
internal/values.go
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"oc-k8s/utils"
|
||||||
|
"os"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Help_Values() {
|
||||||
|
fmt.Println(`
|
||||||
|
Values commands: oc-k8s <action> values
|
||||||
|
create - Create a new values release yaml
|
||||||
|
help - Show this help message
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
oc-k8s create values -r [release] -f [env_folder] -c [env_file]
|
||||||
|
release - Release values name (required)
|
||||||
|
env_folder - Helm config folder (optionnal, default: .)
|
||||||
|
env_file - env to map (optionnal)
|
||||||
|
oc-k8s help values `)
|
||||||
|
}
|
||||||
|
|
||||||
|
var varPattern = regexp.MustCompile(`\$\{([A-Za-z_][A-Za-z0-9_]*)[:-]([^}]+)\}`)
|
||||||
|
|
||||||
|
func Create_Values(output_folder *string, release *string, confFile *string) error {
|
||||||
|
return generateConfig(confFile, release, output_folder)
|
||||||
|
}
|
||||||
|
|
||||||
|
func generateConfig(confFile *string, release *string, output_folder *string) error {
|
||||||
|
// Load env file if provided
|
||||||
|
var err error
|
||||||
|
confs := map[string]string{}
|
||||||
|
if confFile != nil && *confFile != "" {
|
||||||
|
if confs, err = loadEnvFile(*confFile); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Read template
|
||||||
|
content, err := utils.ReadFS("assets/values.yaml.template")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
confs["RELEASE"] = *release
|
||||||
|
|
||||||
|
rendered := renderTemplate(string(content), confs)
|
||||||
|
|
||||||
|
// Ensure output directory exists
|
||||||
|
if err := os.MkdirAll(*output_folder, 0755); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write output
|
||||||
|
if err := os.WriteFile(*output_folder+"/"+*release+"-values.yaml", []byte(rendered), 0644); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
fmt.Printf("Rendered %s from %s using %s\n", *output_folder+"/"+*release+"-values.yaml", "assets/values.yaml.template", *confFile)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func loadEnvFile(path string) (map[string]string, error) {
|
||||||
|
envs := map[string]string{}
|
||||||
|
file, err := os.Open(path)
|
||||||
|
if err != nil {
|
||||||
|
return envs, err
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := strings.TrimSpace(scanner.Text())
|
||||||
|
|
||||||
|
if line == "" || strings.HasPrefix(line, "#") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
parts := strings.SplitN(line, "=", 2)
|
||||||
|
if len(parts) != 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
key := strings.TrimSpace(parts[0])
|
||||||
|
val := strings.Trim(strings.TrimSpace(parts[1]), `"'`)
|
||||||
|
|
||||||
|
envs[key] = val
|
||||||
|
}
|
||||||
|
return envs, scanner.Err()
|
||||||
|
}
|
||||||
|
|
||||||
|
func renderTemplate(input string, envs map[string]string) string {
|
||||||
|
s := varPattern.ReplaceAllStringFunc(input, func(match string) string {
|
||||||
|
sub := varPattern.FindStringSubmatch(match)
|
||||||
|
varName := sub[1]
|
||||||
|
defaultVal := sub[2][1:]
|
||||||
|
|
||||||
|
if val, ok := envs[varName]; ok && val != "" {
|
||||||
|
return val
|
||||||
|
}
|
||||||
|
return defaultVal
|
||||||
|
})
|
||||||
|
return s
|
||||||
|
}
|
||||||
267
oc-k8s.sh
267
oc-k8s.sh
@@ -1,267 +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"
|
|
||||||
)
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# 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() {
|
|
||||||
main_delete_helm "${1:-dev}" | true
|
|
||||||
RELEASE_NAME=${1:-dev}
|
|
||||||
RELEASE_NAMESPACE=${1:-dev}
|
|
||||||
|
|
||||||
helm install ${RELEASE_NAME} opencloud -n ${RELEASE_NAMESPACE} --create-namespace -f opencloud/${RELEASE_NAME}-values.yaml
|
|
||||||
|
|
||||||
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/${RELEASE_NAME}-values.yaml
|
|
||||||
}
|
|
||||||
|
|
||||||
main_delete_helm() {
|
|
||||||
RELEASE_NAME=${1:-dev}
|
|
||||||
RELEASE_NAMESPACE=${1:-dev}
|
|
||||||
|
|
||||||
helm uninstall ${RELEASE_NAME} -n ${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 repo_name=$(basename "$repo_url" .git)
|
|
||||||
|
|
||||||
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="${2:-http://beta.opencloud.com/}" && make "$target"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Error: make $target failed in $dir"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
cd ..
|
|
||||||
}
|
|
||||||
|
|
||||||
main_build_services() {
|
|
||||||
branch=${1:-main}
|
|
||||||
target=${2:-all}
|
|
||||||
cd ..
|
|
||||||
# Iterate through each repository in the list
|
|
||||||
for repo in "${REPOS[@]}"; do
|
|
||||||
build_service "$repo" "$branch" "$target"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "All repositories processed successfully."
|
|
||||||
}
|
|
||||||
|
|
||||||
# CLUSTER CONTROLLER
|
|
||||||
|
|
||||||
main_delete_cluster() {
|
|
||||||
kind delete cluster --name opencloud | true
|
|
||||||
}
|
|
||||||
|
|
||||||
main_create_cluster() {
|
|
||||||
main_delete_cluster | true
|
|
||||||
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 !"
|
|
||||||
|
|
||||||
kind get kubeconfig --name opencloud > /tmp/kind-opencloud.kubeconfig
|
|
||||||
KUBECONFIG=~/.kube/config:/tmp/kind-opencloud.kubeconfig kubectl config view --flatten > ~/.kube/config # fusionnate clusters config.
|
|
||||||
|
|
||||||
kubectl config get-contexts
|
|
||||||
kubectl config use-context kind-opencloud
|
|
||||||
}
|
|
||||||
|
|
||||||
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_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
|
|
||||||
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 create helm [env]
|
|
||||||
dev - environnement selected (default: dev)
|
|
||||||
oc-k8s upgrade helm [env]
|
|
||||||
dev - environnement selected (default: dev)
|
|
||||||
oc-k8s delete helm [env]
|
|
||||||
dev - environnement selected (default: dev)
|
|
||||||
oc-k8sh help helm
|
|
||||||
"
|
|
||||||
}
|
|
||||||
|
|
||||||
main_help_all() {
|
|
||||||
echo "
|
|
||||||
Main commands: oc-k8s <action>
|
|
||||||
start - Start opencloud k8s
|
|
||||||
stop - Stop opencloud k8s
|
|
||||||
Usage:
|
|
||||||
oc-k8s start [args]
|
|
||||||
oc-k8s stop [args]
|
|
||||||
"
|
|
||||||
main_help_cluster
|
|
||||||
main_help_services
|
|
||||||
main_help_helm
|
|
||||||
main_help_values
|
|
||||||
}
|
|
||||||
|
|
||||||
main_start() {
|
|
||||||
sudo /etc/init.d/apache2 stop
|
|
||||||
sudo nginx -s stop
|
|
||||||
main_create_cluster "${@:1}"
|
|
||||||
main_build_services "${@:1}"
|
|
||||||
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,6 +0,0 @@
|
|||||||
dependencies:
|
|
||||||
- name: common
|
|
||||||
repository: oci://registry-1.docker.io/bitnamicharts
|
|
||||||
version: 2.27.0
|
|
||||||
digest: sha256:b711ab5874abf868a0c64353a790f17771758cee6f802acb9819be004c8460af
|
|
||||||
generated: "2024-11-14T11:36:35.060517594+01:00"
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
annotations:
|
|
||||||
category: Database
|
|
||||||
images: |
|
|
||||||
- name: kubectl
|
|
||||||
image: docker.io/bitnami/kubectl:1.31.2-debian-12-r3
|
|
||||||
- name: mongodb
|
|
||||||
image: docker.io/bitnami/mongodb:8.0.3-debian-12-r0
|
|
||||||
- name: mongodb-exporter
|
|
||||||
image: docker.io/bitnami/mongodb-exporter:0.41.2-debian-12-r1
|
|
||||||
- name: nginx
|
|
||||||
image: docker.io/bitnami/nginx:1.27.2-debian-12-r2
|
|
||||||
- name: os-shell
|
|
||||||
image: docker.io/bitnami/os-shell:12-debian-12-r32
|
|
||||||
licenses: Apache-2.0
|
|
||||||
apiVersion: v2
|
|
||||||
appVersion: 8.0.3
|
|
||||||
dependencies:
|
|
||||||
- name: common
|
|
||||||
repository: oci://registry-1.docker.io/bitnamicharts
|
|
||||||
tags:
|
|
||||||
- bitnami-common
|
|
||||||
version: 2.x.x
|
|
||||||
description: MongoDB(R) is a relational open source NoSQL database. Easy to use, it
|
|
||||||
stores data in JSON-like documents. Automated scalability and high-performance.
|
|
||||||
Ideal for developing cloud native applications.
|
|
||||||
home: https://bitnami.com
|
|
||||||
icon: https://bitnami.com/assets/stacks/mongodb/img/mongodb-stack-220x234.png
|
|
||||||
keywords:
|
|
||||||
- mongodb
|
|
||||||
- database
|
|
||||||
- nosql
|
|
||||||
- cluster
|
|
||||||
- replicaset
|
|
||||||
- replication
|
|
||||||
maintainers:
|
|
||||||
- name: Broadcom, Inc. All Rights Reserved.
|
|
||||||
url: https://github.com/bitnami/charts
|
|
||||||
name: mongodb
|
|
||||||
sources:
|
|
||||||
- https://github.com/bitnami/charts/tree/main/bitnami/mongodb
|
|
||||||
version: 16.3.1
|
|
||||||
@@ -1,235 +0,0 @@
|
|||||||
# Bitnami Common Library Chart
|
|
||||||
|
|
||||||
A [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm) for grouping common logic between Bitnami charts.
|
|
||||||
|
|
||||||
## TL;DR
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
dependencies:
|
|
||||||
- name: common
|
|
||||||
version: 2.x.x
|
|
||||||
repository: oci://registry-1.docker.io/bitnamicharts
|
|
||||||
```
|
|
||||||
|
|
||||||
```console
|
|
||||||
helm dependency update
|
|
||||||
```
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: {{ include "common.names.fullname" . }}
|
|
||||||
data:
|
|
||||||
myvalue: "Hello World"
|
|
||||||
```
|
|
||||||
|
|
||||||
Looking to use our applications in production? Try [VMware Tanzu Application Catalog](https://bitnami.com/enterprise), the commercial edition of the Bitnami catalog.
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
This chart provides a common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.
|
|
||||||
|
|
||||||
Bitnami charts can be used with [Kubeapps](https://kubeapps.dev/) for deployment and management of Helm Charts in clusters.
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
- Kubernetes 1.23+
|
|
||||||
- Helm 3.8.0+
|
|
||||||
|
|
||||||
## Parameters
|
|
||||||
|
|
||||||
## Special input schemas
|
|
||||||
|
|
||||||
### ImageRoot
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
registry:
|
|
||||||
type: string
|
|
||||||
description: Docker registry where the image is located
|
|
||||||
example: docker.io
|
|
||||||
|
|
||||||
repository:
|
|
||||||
type: string
|
|
||||||
description: Repository and image name
|
|
||||||
example: bitnami/nginx
|
|
||||||
|
|
||||||
tag:
|
|
||||||
type: string
|
|
||||||
description: image tag
|
|
||||||
example: 1.16.1-debian-10-r63
|
|
||||||
|
|
||||||
pullPolicy:
|
|
||||||
type: string
|
|
||||||
description: Specify a imagePullPolicy.'
|
|
||||||
|
|
||||||
pullSecrets:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: Optionally specify an array of imagePullSecrets (evaluated as templates).
|
|
||||||
|
|
||||||
debug:
|
|
||||||
type: boolean
|
|
||||||
description: Set to true if you would like to see extra information on logs
|
|
||||||
example: false
|
|
||||||
|
|
||||||
## An instance would be:
|
|
||||||
# registry: docker.io
|
|
||||||
# repository: bitnami/nginx
|
|
||||||
# tag: 1.16.1-debian-10-r63
|
|
||||||
# pullPolicy: IfNotPresent
|
|
||||||
# debug: false
|
|
||||||
```
|
|
||||||
|
|
||||||
### Persistence
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
enabled:
|
|
||||||
type: boolean
|
|
||||||
description: Whether enable persistence.
|
|
||||||
example: true
|
|
||||||
|
|
||||||
storageClass:
|
|
||||||
type: string
|
|
||||||
description: Ghost data Persistent Volume Storage Class, If set to "-", storageClassName: "" which disables dynamic provisioning.
|
|
||||||
example: "-"
|
|
||||||
|
|
||||||
accessMode:
|
|
||||||
type: string
|
|
||||||
description: Access mode for the Persistent Volume Storage.
|
|
||||||
example: ReadWriteOnce
|
|
||||||
|
|
||||||
size:
|
|
||||||
type: string
|
|
||||||
description: Size the Persistent Volume Storage.
|
|
||||||
example: 8Gi
|
|
||||||
|
|
||||||
path:
|
|
||||||
type: string
|
|
||||||
description: Path to be persisted.
|
|
||||||
example: /bitnami
|
|
||||||
|
|
||||||
## An instance would be:
|
|
||||||
# enabled: true
|
|
||||||
# storageClass: "-"
|
|
||||||
# accessMode: ReadWriteOnce
|
|
||||||
# size: 8Gi
|
|
||||||
# path: /bitnami
|
|
||||||
```
|
|
||||||
|
|
||||||
### ExistingSecret
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
description: Name of the existing secret.
|
|
||||||
example: mySecret
|
|
||||||
keyMapping:
|
|
||||||
description: Mapping between the expected key name and the name of the key in the existing secret.
|
|
||||||
type: object
|
|
||||||
|
|
||||||
## An instance would be:
|
|
||||||
# name: mySecret
|
|
||||||
# keyMapping:
|
|
||||||
# password: myPasswordKey
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Example of use
|
|
||||||
|
|
||||||
When we store sensitive data for a deployment in a secret, some times we want to give to users the possibility of using theirs existing secrets.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
# templates/secret.yaml
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Secret
|
|
||||||
metadata:
|
|
||||||
name: {{ include "common.names.fullname" . }}
|
|
||||||
labels:
|
|
||||||
app: {{ include "common.names.fullname" . }}
|
|
||||||
type: Opaque
|
|
||||||
data:
|
|
||||||
password: {{ .Values.password | b64enc | quote }}
|
|
||||||
|
|
||||||
# templates/dpl.yaml
|
|
||||||
---
|
|
||||||
...
|
|
||||||
env:
|
|
||||||
- name: PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: {{ include "common.secrets.name" (dict "existingSecret" .Values.existingSecret "context" $) }}
|
|
||||||
key: {{ include "common.secrets.key" (dict "existingSecret" .Values.existingSecret "key" "password") }}
|
|
||||||
...
|
|
||||||
|
|
||||||
# values.yaml
|
|
||||||
---
|
|
||||||
name: mySecret
|
|
||||||
keyMapping:
|
|
||||||
password: myPasswordKey
|
|
||||||
```
|
|
||||||
|
|
||||||
### ValidateValue
|
|
||||||
|
|
||||||
#### NOTES.txt
|
|
||||||
|
|
||||||
```console
|
|
||||||
{{- $validateValueConf00 := (dict "valueKey" "path.to.value00" "secret" "secretName" "field" "password-00") -}}
|
|
||||||
{{- $validateValueConf01 := (dict "valueKey" "path.to.value01" "secret" "secretName" "field" "password-01") -}}
|
|
||||||
|
|
||||||
{{ include "common.validations.values.multiple.empty" (dict "required" (list $validateValueConf00 $validateValueConf01) "context" $) }}
|
|
||||||
```
|
|
||||||
|
|
||||||
If we force those values to be empty we will see some alerts
|
|
||||||
|
|
||||||
```console
|
|
||||||
helm install test mychart --set path.to.value00="",path.to.value01=""
|
|
||||||
'path.to.value00' must not be empty, please add '--set path.to.value00=$PASSWORD_00' to the command. To get the current value:
|
|
||||||
|
|
||||||
export PASSWORD_00=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-00}" | base64 -d)
|
|
||||||
|
|
||||||
'path.to.value01' must not be empty, please add '--set path.to.value01=$PASSWORD_01' to the command. To get the current value:
|
|
||||||
|
|
||||||
export PASSWORD_01=$(kubectl get secret --namespace default secretName -o jsonpath="{.data.password-01}" | base64 -d)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Upgrading
|
|
||||||
|
|
||||||
### To 1.0.0
|
|
||||||
|
|
||||||
[On November 13, 2020, Helm v2 support was formally finished](https://github.com/helm/charts#status-of-the-project), this major version is the result of the required changes applied to the Helm Chart to be able to incorporate the different features added in Helm v3 and to be consistent with the Helm project itself regarding the Helm v2 EOL.
|
|
||||||
|
|
||||||
#### What changes were introduced in this major version?
|
|
||||||
|
|
||||||
- Previous versions of this Helm Chart use `apiVersion: v1` (installable by both Helm 2 and 3), this Helm Chart was updated to `apiVersion: v2` (installable by Helm 3 only). [Here](https://helm.sh/docs/topics/charts/#the-apiversion-field) you can find more information about the `apiVersion` field.
|
|
||||||
- Use `type: library`. [Here](https://v3.helm.sh/docs/faq/#library-chart-support) you can find more information.
|
|
||||||
- The different fields present in the *Chart.yaml* file has been ordered alphabetically in a homogeneous way for all the Bitnami Helm Charts
|
|
||||||
|
|
||||||
#### Considerations when upgrading to this version
|
|
||||||
|
|
||||||
- If you want to upgrade to this version from a previous one installed with Helm v3, you shouldn't face any issues
|
|
||||||
- If you want to upgrade to this version using Helm v2, this scenario is not supported as this version doesn't support Helm v2 anymore
|
|
||||||
- If you installed the previous version with Helm v2 and wants to upgrade to this version with Helm v3, please refer to the [official Helm documentation](https://helm.sh/docs/topics/v2_v3_migration/#migration-use-cases) about migrating from Helm v2 to v3
|
|
||||||
|
|
||||||
#### Useful links
|
|
||||||
|
|
||||||
- <https://techdocs.broadcom.com/us/en/vmware-tanzu/application-catalog/tanzu-application-catalog/services/tac-doc/apps-tutorials-resolve-helm2-helm3-post-migration-issues-index.html>
|
|
||||||
- <https://helm.sh/docs/topics/v2_v3_migration/>
|
|
||||||
- <https://helm.sh/blog/migrate-from-helm-v2-to-helm-v3/>
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
Copyright © 2024 Broadcom. The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
<http://www.apache.org/licenses/LICENSE-2.0>
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{{/*
|
|
||||||
Copyright Broadcom, Inc. All Rights Reserved.
|
|
||||||
SPDX-License-Identifier: APACHE-2.0
|
|
||||||
*/}}
|
|
||||||
|
|
||||||
{{/* vim: set filetype=mustache: */}}
|
|
||||||
{{/*
|
|
||||||
Through error when upgrading using empty passwords values that must not be empty.
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
{{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}}
|
|
||||||
{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}}
|
|
||||||
{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }}
|
|
||||||
|
|
||||||
Required password params:
|
|
||||||
- validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error.
|
|
||||||
- context - Context - Required. Parent context.
|
|
||||||
*/}}
|
|
||||||
{{- define "common.errors.upgrade.passwords.empty" -}}
|
|
||||||
{{- $validationErrors := join "" .validationErrors -}}
|
|
||||||
{{- if and $validationErrors .context.Release.IsUpgrade -}}
|
|
||||||
{{- $errorString := "\nPASSWORDS ERROR: You must provide your current passwords when upgrading the release." -}}
|
|
||||||
{{- $errorString = print $errorString "\n Note that even after reinstallation, old credentials may be needed as they may be kept in persistent volume claims." -}}
|
|
||||||
{{- $errorString = print $errorString "\n Further information can be obtained at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases" -}}
|
|
||||||
{{- $errorString = print $errorString "\n%s" -}}
|
|
||||||
{{- printf $errorString $validationErrors | fail -}}
|
|
||||||
{{- end -}}
|
|
||||||
{{- end -}}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{{- if index .Values.ocFront.enabled }}
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: front-config
|
|
||||||
data:
|
|
||||||
config.json: |
|
|
||||||
{
|
|
||||||
"WORKSPACE_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/workspace",
|
|
||||||
"WORKFLOW_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/workflow",
|
|
||||||
"CATALOG_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/catalog",
|
|
||||||
"SCHEDULER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/scheduler",
|
|
||||||
"PEER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/peers",
|
|
||||||
"DATACENTER_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/datacenter",
|
|
||||||
"COLLABORATIVE_AREA_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/shared",
|
|
||||||
"HOST": "{{ .Values.scheme }}://{{ .Values.host }}",
|
|
||||||
"AUTH_HOST": "{{ .Values.scheme }}://{{ .Values.host }}/auth"
|
|
||||||
}
|
|
||||||
{{- end }}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{{- if .Values.prometheus.enabled }}
|
|
||||||
apiVersion: monitoring.coreos.com/v1
|
|
||||||
kind: ServiceMonitor
|
|
||||||
metadata:
|
|
||||||
name: {{ .Release.Name }}-monitor.{{ .Release.Namespace }}
|
|
||||||
labels:
|
|
||||||
release: {{ .Release.Name }}
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: monitor
|
|
||||||
endpoints:
|
|
||||||
- port: http
|
|
||||||
interval: 30s
|
|
||||||
{{- end }}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user