From 777fe12bc0df2a04b49a654da2ef004877f57161 Mon Sep 17 00:00:00 2001 From: earayu Date: Mon, 19 May 2025 19:01:18 +0800 Subject: [PATCH] feat: add helm chart --- k8s-deploy/databases/01-prepare.sh | 2 +- k8s-deploy/databases/02-install-database.sh | 2 +- k8s-deploy/databases/03-uninstall-database.sh | 2 +- k8s-deploy/databases/04-cleanup.sh | 4 +-- k8s-deploy/databases/install-kubeblocks.sh | 4 +-- k8s-deploy/databases/scripts/common.sh | 2 +- k8s-deploy/databases/uninstall-kubeblocks.sh | 1 - k8s-deploy/install_lightrag.sh | 29 ++++++++++++++----- k8s-deploy/install_lightrag_dev.sh | 2 -- 9 files changed, 29 insertions(+), 19 deletions(-) diff --git a/k8s-deploy/databases/01-prepare.sh b/k8s-deploy/databases/01-prepare.sh index bbe30f8a..509467f8 100755 --- a/k8s-deploy/databases/01-prepare.sh +++ b/k8s-deploy/databases/01-prepare.sh @@ -29,5 +29,5 @@ helm repo update [ "$ENABLE_MONGODB" = true ] && print "Installing MongoDB addon..." && helm upgrade --install kb-addon-mongodb kubeblocks/mongodb --namespace kb-system --version $ADDON_CLUSTER_CHART_VERSION [ "$ENABLE_NEO4J" = true ] && print "Installing Neo4j addon..." && helm upgrade --install kb-addon-neo4j kubeblocks/neo4j --namespace kb-system --version $ADDON_CLUSTER_CHART_VERSION -print "KubeBlocks database addons installation completed!" +print_success "KubeBlocks database addons installation completed!" print "Now you can run 02-install-database.sh to install database clusters" diff --git a/k8s-deploy/databases/02-install-database.sh b/k8s-deploy/databases/02-install-database.sh index 6502ec91..39acfede 100755 --- a/k8s-deploy/databases/02-install-database.sh +++ b/k8s-deploy/databases/02-install-database.sh @@ -19,6 +19,6 @@ print "Installing database clusters..." [ "$ENABLE_MONGODB" = true ] && print "Installing MongoDB cluster..." && helm upgrade --install mongodb-cluster kubeblocks/mongodb-cluster -f "$SCRIPT_DIR/mongodb/values.yaml" --namespace $NAMESPACE --version $ADDON_CLUSTER_CHART_VERSION [ "$ENABLE_NEO4J" = true ] && print "Installing Neo4j cluster..." && helm upgrade --install neo4j-cluster kubeblocks/neo4j-cluster -f "$SCRIPT_DIR/neo4j/values.yaml" --namespace $NAMESPACE --version $ADDON_CLUSTER_CHART_VERSION -print "Database clusters installation completed!" +print_success "Database clusters installation completed!" print "Use the following command to check the status of installed clusters:" print "kubectl get clusters -n $NAMESPACE" diff --git a/k8s-deploy/databases/03-uninstall-database.sh b/k8s-deploy/databases/03-uninstall-database.sh index 16197909..61635590 100755 --- a/k8s-deploy/databases/03-uninstall-database.sh +++ b/k8s-deploy/databases/03-uninstall-database.sh @@ -16,5 +16,5 @@ print "Uninstalling database clusters..." [ "$ENABLE_MONGODB" = true ] && print "Uninstalling MongoDB cluster..." && helm uninstall mongodb-cluster --namespace $NAMESPACE 2>/dev/null || true [ "$ENABLE_NEO4J" = true ] && print "Uninstalling Neo4j cluster..." && helm uninstall neo4j-cluster --namespace $NAMESPACE 2>/dev/null || true -print "Database clusters uninstalled" +print_success "Database clusters uninstalled" print "To uninstall database addons and KubeBlocks, run 04-cleanup.sh" diff --git a/k8s-deploy/databases/04-cleanup.sh b/k8s-deploy/databases/04-cleanup.sh index 2be2c049..4c467c17 100755 --- a/k8s-deploy/databases/04-cleanup.sh +++ b/k8s-deploy/databases/04-cleanup.sh @@ -16,11 +16,11 @@ print "Uninstalling KubeBlocks database addons..." [ "$ENABLE_MONGODB" = true ] && print "Uninstalling MongoDB addon..." && helm uninstall kb-addon-mongodb --namespace kb-system 2>/dev/null || true [ "$ENABLE_NEO4J" = true ] && print "Uninstalling Neo4j addon..." && helm uninstall kb-addon-neo4j --namespace kb-system 2>/dev/null || true -print "Database addons uninstallation completed!" +print_success "Database addons uninstallation completed!" source "$SCRIPT_DIR/uninstall-kubeblocks.sh" kubectl delete namespace $NAMESPACE kubectl delete namespace kb-system -print "KubeBlocks uninstallation completed!" +print_success "KubeBlocks uninstallation completed!" diff --git a/k8s-deploy/databases/install-kubeblocks.sh b/k8s-deploy/databases/install-kubeblocks.sh index 9a46e057..6e41ddfd 100644 --- a/k8s-deploy/databases/install-kubeblocks.sh +++ b/k8s-deploy/databases/install-kubeblocks.sh @@ -23,7 +23,7 @@ install_kubeblocks() { # Install snapshot controller helm install snapshot-controller piraeus-charts/snapshot-controller -n kb-system --create-namespace - kubectl wait --for=condition=ready pods -l app=snapshot-controller -n kb-system --timeout=120s + kubectl wait --for=condition=ready pods -l app.kubernetes.io/name=snapshot-controller -n kb-system --timeout=60s print_success "snapshot-controller installation complete!" # Install KubeBlocks CRDs @@ -38,7 +38,7 @@ install_kubeblocks() { # Verify installation print "Waiting for KubeBlocks to be ready..." - kubectl wait --for=condition=ready pods -l app.kubernetes.io/instance=kubeblocks -n kb-system --timeout=300s + kubectl wait --for=condition=ready pods -l app.kubernetes.io/instance=kubeblocks -n kb-system --timeout=120s print_success "KubeBlocks installation complete!" } diff --git a/k8s-deploy/databases/scripts/common.sh b/k8s-deploy/databases/scripts/common.sh index 3d5369fb..3ffb4b08 100644 --- a/k8s-deploy/databases/scripts/common.sh +++ b/k8s-deploy/databases/scripts/common.sh @@ -39,5 +39,5 @@ check_dependencies(){ print "Error: Kubernetes cluster is not accessible. Please ensure you have proper access to a Kubernetes cluster." exit 1 fi - print "Kubernetes cluster is accessible." + print_success "Kubernetes cluster is accessible." } diff --git a/k8s-deploy/databases/uninstall-kubeblocks.sh b/k8s-deploy/databases/uninstall-kubeblocks.sh index a752462b..dd38ac67 100644 --- a/k8s-deploy/databases/uninstall-kubeblocks.sh +++ b/k8s-deploy/databases/uninstall-kubeblocks.sh @@ -15,7 +15,6 @@ if ! kubectl cluster-info &>/dev/null; then print "Error: Kubernetes cluster is not accessible. Please ensure you have proper access to a Kubernetes cluster." exit 1 fi -print "Kubernetes cluster is accessible." print "Checking if KubeBlocks is installed in kb-system namespace..." if ! kubectl get namespace kb-system &>/dev/null; then diff --git a/k8s-deploy/install_lightrag.sh b/k8s-deploy/install_lightrag.sh index 67b0564f..fd88e0ec 100755 --- a/k8s-deploy/install_lightrag.sh +++ b/k8s-deploy/install_lightrag.sh @@ -54,7 +54,7 @@ if ! kubectl get clusters -n rag pg-cluster &> /dev/null || ! kubectl get cluste # Wait for databases to be ready echo "Waiting for databases to be ready..." - TIMEOUT=600 # Set timeout to 10 minutes + TIMEOUT=300 # Set timeout to 5 minutes START_TIME=$(date +%s) while true; do @@ -66,19 +66,32 @@ if ! kubectl get clusters -n rag pg-cluster &> /dev/null || ! kubectl get cluste exit 1 fi - PG_STATUS=$(kubectl get clusters -n rag pg-cluster -o jsonpath='{.status.phase}' 2>/dev/null) - NEO4J_STATUS=$(kubectl get clusters -n rag neo4j-cluster -o jsonpath='{.status.phase}' 2>/dev/null) - - if [ "$PG_STATUS" == "Running" ] && [ "$NEO4J_STATUS" == "Running" ]; then - echo "Databases are ready, continuing with LightRAG deployment..." + # Use kubectl wait to check if both databases are ready + if kubectl wait --for=condition=ready pods -l app.kubernetes.io/instance=pg-cluster -n rag --timeout=10s &> /dev/null && + kubectl wait --for=condition=ready pods -l app.kubernetes.io/instance=neo4j-cluster -n rag --timeout=10s &> /dev/null; then + echo "Database pods are ready, continuing with LightRAG deployment..." break fi - echo "Databases preparing... PostgreSQL: $PG_STATUS, Neo4J: $NEO4J_STATUS" + echo "Waiting for database pods to be ready..." sleep 10 done else - echo "Databases already installed, proceeding directly to LightRAG deployment..." + echo "Databases already installed, checking if database pods are ready..." + + # Verify that pods are ready before proceeding + echo "Waiting for database pods to be ready..." + if ! kubectl wait --for=condition=ready pods -l app.kubernetes.io/instance=pg-cluster -n rag --timeout=60s; then + echo "PostgreSQL pods are not ready. Please check database status manually." + exit 1 + fi + + if ! kubectl wait --for=condition=ready pods -l app.kubernetes.io/instance=neo4j-cluster -n rag --timeout=60s; then + echo "Neo4j pods are not ready. Please check database status manually." + exit 1 + fi + + echo "Database pods are ready, proceeding with LightRAG deployment..." fi # Get database passwords from Kubernetes secrets diff --git a/k8s-deploy/install_lightrag_dev.sh b/k8s-deploy/install_lightrag_dev.sh index 4d573eb5..a1167dc3 100755 --- a/k8s-deploy/install_lightrag_dev.sh +++ b/k8s-deploy/install_lightrag_dev.sh @@ -47,8 +47,6 @@ for var in "${required_env_vars[@]}"; do fi done -echo "Environment variables check passed" - if ! kubectl get namespace rag &> /dev/null; then echo "creating namespace 'rag'..." kubectl create namespace rag