Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 40 additions & 1 deletion deployment/crs-architecture.sh
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,46 @@ up() {
;;
*)
echo -e "${BLU}Deploying minikube cluster${NC}"
minikube status | grep -q "Running" || minikube start --force --extra-config=kubeadm.skip-phases=preflight --cpus=8 --memory=32g --disk-size=80g --driver=docker --kubernetes-version=stable

# Detect Docker-available resources and adjust minikube parameters
echo -e "${BLU}Getting Docker system information...${NC}"
if ! docker system info > /dev/null 2>&1; then
echo -e "${RED}Error: Docker is not running or not accessible${NC}"
echo -e "${RED}Please ensure Docker is installed and running${NC}"
exit 1
fi

DOCKER_INFO=$(docker system info --format "{{.NCPU}},{{.MemTotal}}")
AVAILABLE_CPUS=$(echo "$DOCKER_INFO" | cut -d',' -f1)
AVAILABLE_MEMORY_BYTES=$(echo "$DOCKER_INFO" | cut -d',' -f2)
AVAILABLE_MEMORY_MB=$((AVAILABLE_MEMORY_BYTES / 1024 / 1024))

# Calculate safe limits (leave 25% for system)
MINIKUBE_CPUS=$((AVAILABLE_CPUS > 7 ? 8 : AVAILABLE_CPUS > 4 ? AVAILABLE_CPUS - 1 : AVAILABLE_CPUS))
MINIKUBE_MEMORY_MB=$((AVAILABLE_MEMORY_MB * 75 / 100))

# Check if system meets minimum requirements
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README should document the minimum requirements

Copy link
Contributor

@reytchison reytchison Jul 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could also go in the #214 PR

if [ "$AVAILABLE_CPUS" -lt 5 ]; then
echo -e "${RED}Error: System has only ${AVAILABLE_CPUS} CPU(s), but Buttercup requires at least 5 CPUs${NC}"
echo -e "${RED}Please use a machine with more CPU cores${NC}"
exit 1
fi

AVAILABLE_MEMORY_GB=$((AVAILABLE_MEMORY_MB / 1024))
if [ "$AVAILABLE_MEMORY_MB" -lt 10240 ]; then # Need 10GB dedicated to k8s cluster for Buttercup components
echo -e "${RED}Error: System has only ${AVAILABLE_MEMORY_GB}GB RAM, but Buttercup requires at least 10GB${NC}"
echo -e "${RED}Please use a machine with more memory${NC}"
exit 1
fi


MINIKUBE_MEMORY_GB=$((MINIKUBE_MEMORY_MB / 1024))

echo -e "${GRN}Docker-available resources: ${AVAILABLE_CPUS} CPUs, ${AVAILABLE_MEMORY_GB}GB RAM${NC}"
echo -e "${GRN}Minikube will use: ${MINIKUBE_CPUS} CPUs, ${MINIKUBE_MEMORY_GB}GB RAM${NC}"
echo -e "${BLU}Note: Recommended minimum is at least 5 CPUs and 10GB RAM${NC}"

minikube status | grep -q "Running" || minikube start --force --extra-config=kubeadm.skip-phases=preflight --cpus=${MINIKUBE_CPUS} --memory=${MINIKUBE_MEMORY_MB}mb --disk-size=80g --driver=docker --kubernetes-version=stable
echo -e "${GRN}Minikube cluster status:${NC}"
minikube status

Expand Down
Loading