Running all stack

This commit is contained in:
mr
2026-01-06 08:23:16 +01:00
parent 5a0651106d
commit 3d416169e3
56 changed files with 1974 additions and 435 deletions

189
oc-k8s.sh
View File

@@ -12,6 +12,70 @@ REPOS=(
"oc-workflow"
"oc-workspace"
)
main_replace_db() {
FILES=$(ls $1 | grep .json)
RELEASE=${2:-dev}
DB_NAME=${3:-opencloud}
POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*)
main_delete_db
main_install_db
}
main_delete_db() {
FILES=$(ls $1 | grep .json)
RELEASE=${2:-dev}
DB_NAME=${3:-opencloud}
POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*)
kubectl exec ${POD_NAME/pod\//}: -- mongosh --eval "db.getSiblingDB('$DB_NAME').dropDatabase()"
}
main_install_db() {
FILES=$(ls $1 | grep .json)
RELEASE=${2:-dev}
DB_NAME=${3:-opencloud}
POD_NAME=$(kubectl get pods --all-namespaces -o=name | grep $RELEASE-mongodb-*)
for file in "${FILES[@]}"; do
echo "ADD file $file in collection ${file/.json/} : ${POD_NAME/pod\//}"
kubectl cp $file ${POD_NAME/pod\//}:/tmp/$file
kubectl exec ${POD_NAME/pod\//}: -- mongoimport --db $DB_NAME --collection ${file/.json/} --file /tmp/$file --jsonArray
done
}
main_install() {
main_install_k3s
main_install_kind ${@:1}
main_install_helm
}
main_install_k3s() {
sudo /usr/local/bin/k3s-uninstall.sh | true
sudo rm -rf /etc/rancher /var/lib/rancher ~/.kube | true
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
sudo systemctl status k3s
}
main_install_helm() {
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash # install helm
helm version
}
main_install_kind() {
ARCH=${1:-linux-amd64} # linux-amd64 linux-arm64 darwin-amd64 darwin-arm64 windows-amd64.exe
VERSION=${2:-v0.30.0}
if [[ "$ARCH" =~ *windows* ]]; then
ARCH=${ARCH}.exe
fi
curl -Lo kind-linux-amd64 https://kind.sigs.k8s.io/dl/${VERSION}/kind-${ARCH}
}
# values template
main_create_values() {
set -euo pipefail
@@ -32,7 +96,7 @@ main_create_values() {
source "$ENV_FILE"
set +a
fi
export RELEASE=$1
# Process the template
awk '
{
@@ -55,11 +119,20 @@ main_create_values() {
# HELM SERVICE
main_create_helm() {
main_delete_helm "${1:-dev}" | true
RELEASE_NAME=${1:-dev}
RELEASE_NAMESPACE=${1:-dev}
main_delete_helm "${1:-dev}" | true
helm dependency update
helm dependency build
kubectl delete sc longhorn-nor1
helm install ${RELEASE_NAME} opencloud -n ${RELEASE_NAMESPACE} --create-namespace -f opencloud/${RELEASE_NAME}-values.yaml
#kubectl apply -f ./opencloud/templates/sc-longhorn-nor1.yaml
#kubectl label storageclass longhorn-nor1 app.kubernetes.io/managed-by=Helm
#kubectl annotate storageclass longhorn-nor1 \
# meta.helm.sh/release-name=${RELEASE_NAMESPACE} \
# meta.helm.sh/release-namespace=${RELEASE_NAMESPACE}
ulimit -n 1000000
helm install ${RELEASE_NAME} opencloud -n ${RELEASE_NAMESPACE} --create-namespace -f ./opencloud/values/${RELEASE_NAME}-values.yaml --debug
kind get kubeconfig --name opencloud > ./deployed_config
@@ -70,7 +143,7 @@ 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
helm upgrade ${RELEASE_NAME} opencloud -n ${RELEASE_NAMESPACE} --create-namespace -f ./opencloud/values/${RELEASE_NAME}-values.yaml
}
main_delete_helm() {
@@ -78,6 +151,7 @@ main_delete_helm() {
RELEASE_NAMESPACE=${1:-dev}
helm uninstall ${RELEASE_NAME} -n ${RELEASE_NAMESPACE}
kubectl delete namespace ${RELEASE_NAMESPACE} &
export KUBECONFIG=$(realpath ~/.kube/config)
}
@@ -89,6 +163,14 @@ build_service() {
local target=${3:-all}
local repo_name=$(basename "$repo_url" .git)
server=$(grep 'server:' ~/.kube/config | awk '{print $2}')
host=$(ip -4 addr show $(ip route | awk '/default/ {print $5}') | awk '/inet / {print $2}' | cut -d/ -f1)
port=6443
ca=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}')
cert=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-certificate-data}')
key=$(kubectl config view --raw --minify -o jsonpath='{.users[0].user.client-key-data}')
echo "Processing repository: $repo_name"
if [ ! -d "$1" ]; then
@@ -103,7 +185,8 @@ build_service() {
cd "$repo_name" && git checkout $branch && git pull
echo "Running 'make $target' in $repo_name"
export HOST="${2:-http://beta.opencloud.com/}" && make "$target"
export HOST="${2:-http://beta.opencloud.com/}" && export KUBERNETES_SERVICE_HOST=$host && export KUBERNETES_SERVICE_PORT=$port \
&& export KUBE_CA=$ca && export KUBE_CERT=$cert && export KUBE_DATA=$key && make "$target"
if [ $? -ne 0 ]; then
echo "Error: make $target failed in $dir"
exit 1
@@ -114,12 +197,12 @@ build_service() {
main_build_services() {
branch=${1:-main}
target=${2:-all}
# docker system prune -af
cd ..
# Iterate through each repository in the list
for repo in "${REPOS[@]}"; do
build_service "$repo" "$branch" "$target"
done
echo "All repositories processed successfully."
}
@@ -131,6 +214,7 @@ main_delete_cluster() {
main_create_cluster() {
main_delete_cluster | true
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.9.0/deploy/longhorn.yaml
cat <<EOF | kind create cluster --name opencloud --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
@@ -163,13 +247,48 @@ main_create_cluster() {
EOF
echo "[WARNING] New cluster shoulw be merged into your current config !"
# Export the kind cluster kubeconfig to a temporary file
kind get kubeconfig --name opencloud > /tmp/kind-opencloud.kubeconfig
KUBECONFIG=~/.kube/config:/tmp/kind-opencloud.kubeconfig kubectl config view --flatten > ~/.kube/config # fusionnate clusters config.
# Merge the temporary kubeconfig with your existing one safely
KUBECONFIG=~/.kube/config:/tmp/kind-opencloud.kubeconfig kubectl config view --flatten --merge --minify > /tmp/merged-kubeconfig.yaml
# Replace the original kubeconfig safely
mv /tmp/merged-kubeconfig.yaml ~/.kube/config
chmod 600 ~/.kube/config
# Verify the contexts
kubectl config get-contexts
# Switch to the new kind cluster context
kubectl config use-context kind-opencloud
}
main_help_k3s() {
echo "
Cluster commands: oc-k8s <action> k3s
install - Install k3s
help - Show this help message
Usage:
oc-k8s install k3s
oc-k8s help values
"
}
main_help_kind() {
echo "
Cluster commands: oc-k8s <action> kind
install - Install kind
help - Show this help message
Usage:
oc-k8s install kind [arch] [version]
arch - Arch of OS (required)
kind_version - version of kind (required)
oc-k8s help values
"
}
main_help_values() {
echo "
Cluster commands: oc-k8s <action> values
@@ -184,6 +303,31 @@ Usage:
"
}
main_help_db() {
echo "
Cluster commands: oc-k8s <action> cluster
create - Add datas in db
replace - Replace datas in db
delete - Delete datas in db
help - Show this help message
Usage:
oc-k8s create db [file_path] [release] [db_name]
file_path - Datas folder files path (required)
release - Release values name (default: dev)
db_name - db name (default: opencloud)
oc-k8s replace db [file_path] [release] [db_name]
file_path - Datas folder files path (required)
release - Release values name (default: dev)
db_name - db name (default: opencloud)
oc-k8s delete db [file_path] [release] [db_name]
file_path - Datas folder files path (required)
release - Release values name (default: dev)
db_name - db name (default: opencloud)
oc-k8s help db
"
}
main_help_cluster() {
echo "
Cluster commands: oc-k8s <action> cluster
@@ -215,17 +359,19 @@ Usage:
main_help_helm() {
echo "
Helm commands: oc-k8s <action> helm
install - Install Helm
create - Install a helm release for the given environment (default: dev)
delete - Uninstall a helm release for the given environment (default: dev)
help - Show this help message
Usage:
oc-k8s install helm
oc-k8s create helm [env]
dev - environnement selected (default: dev)
env - environnement selected (default: dev)
oc-k8s upgrade helm [env]
dev - environnement selected (default: dev)
env - environnement selected (default: dev)
oc-k8s delete helm [env]
dev - environnement selected (default: dev)
env - environnement selected (default: dev)
oc-k8sh help helm
"
}
@@ -233,30 +379,43 @@ Usage:
main_help_all() {
echo "
Main commands: oc-k8s <action>
install - Install opencloud dependancies [arch] [version]
start - Start opencloud k8s
stop - Stop opencloud k8s
Usage:
oc-k8s start [args]
oc-k8s stop [args]
oc-k8s install [arch] [version]
arch - Arch of OS (required)
kind_version - version of kind (required)
oc-k8s start [env] [branch] [target]
env - environnement selected (default: dev)
branch - Git branch to build (default: main)
target - make target (default: all)
oc-k8s stop
"
main_help_cluster
main_help_services
main_help_helm
main_help_values
main_help_k3s
main_help_kind
main_help_db
}
main_start() {
sudo sysctl -w fs.inotify.max_user_instances=256
sudo /etc/init.d/apache2 stop
sudo nginx -s stop
main_create_cluster "${@:1}"
main_build_services "${@:1}"
main_create_helm "${@:1}"
main_create_cluster
main_build_services "${@:2}"
cd ./oc-k8s
main_create_helm $1
}
main_stop() {
main_delete_helm "${@:1}" | true
main_delete_cluster "${@:1}" | true
}
if declare -f main_${1} > /dev/null; then
main_${1} "${@:2}"
elif declare -f main_${1}_${2} > /dev/null; then