install-kubeblocks.sh 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/bin/bash
  2. # Get the directory where this script is located
  3. DATABASE_SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
  4. # Load configuration file
  5. source "$DATABASE_SCRIPT_DIR/00-config.sh"
  6. # Check dependencies
  7. check_dependencies
  8. # Function for installing KubeBlocks
  9. install_kubeblocks() {
  10. print "Ready to install KubeBlocks."
  11. # Install CSI Snapshotter CRDs
  12. kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
  13. kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
  14. kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
  15. # Add and update Piraeus repository
  16. helm repo add piraeus-charts https://piraeus.io/helm-charts/
  17. helm repo update
  18. # Install snapshot controller
  19. helm install snapshot-controller piraeus-charts/snapshot-controller -n kb-system --create-namespace
  20. kubectl wait --for=condition=ready pods -l app.kubernetes.io/name=snapshot-controller -n kb-system --timeout=60s
  21. print_success "snapshot-controller installation complete!"
  22. # Install KubeBlocks CRDs
  23. kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v${KB_VERSION}/kubeblocks_crds.yaml
  24. # Add and update KubeBlocks repository
  25. helm repo add kubeblocks $HELM_REPO
  26. helm repo update
  27. # Install KubeBlocks
  28. helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version=${KB_VERSION}
  29. # Verify installation
  30. print "Waiting for KubeBlocks to be ready..."
  31. kubectl wait --for=condition=ready pods -l app.kubernetes.io/instance=kubeblocks -n kb-system --timeout=120s
  32. print_success "KubeBlocks installation complete!"
  33. }
  34. # Check if KubeBlocks is already installed
  35. print "Checking if KubeBlocks is already installed in kb-system namespace..."
  36. if kubectl get namespace kb-system &>/dev/null && kubectl get deployment kubeblocks -n kb-system &>/dev/null; then
  37. print_success "KubeBlocks is already installed in kb-system namespace."
  38. else
  39. # Call the function to install KubeBlocks
  40. install_kubeblocks
  41. fi