90 lines
2.6 KiB
Makefile
90 lines
2.6 KiB
Makefile
set fallback := true
|
|
|
|
export VPA_NAMESPACE := env("VPA_NAMESPACE", "vpa")
|
|
export PROMETHEUS_NAMESPACE := env("PROMETHEUS_NAMESPACE", "monitoring")
|
|
export PROMETHEUS_ADDRESS := env("PROMETHEUS_ADDRESS", "http://kube-prometheus-stack-prometheus." + PROMETHEUS_NAMESPACE + ".svc:9090")
|
|
|
|
[private]
|
|
default:
|
|
@just --list --unsorted --list-submodules
|
|
|
|
# Add Helm repository
|
|
add-helm-repo:
|
|
helm repo add fairwinds-stable https://charts.fairwinds.com/stable
|
|
helm repo update
|
|
|
|
# Remove Helm repository
|
|
remove-helm-repo:
|
|
helm repo remove fairwinds-stable
|
|
|
|
# Create namespace
|
|
create-namespace:
|
|
@kubectl get namespace ${VPA_NAMESPACE} &>/dev/null || \
|
|
kubectl create namespace ${VPA_NAMESPACE}
|
|
|
|
# Delete namespace
|
|
delete-namespace:
|
|
@kubectl delete namespace ${VPA_NAMESPACE} --ignore-not-found
|
|
|
|
# Install Vertical Pod Autoscaler
|
|
install:
|
|
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Check if Prometheus is installed
|
|
if ! helm status kube-prometheus-stack -n ${PROMETHEUS_NAMESPACE} &>/dev/null; then
|
|
echo "Error: Prometheus (kube-prometheus-stack) is not installed."
|
|
echo "Please install Prometheus first using: just prometheus::install"
|
|
exit 1
|
|
fi
|
|
|
|
just add-helm-repo
|
|
just create-namespace
|
|
|
|
# Generate values.yaml from template
|
|
gomplate -f values.gomplate.yaml -o values.yaml
|
|
|
|
# Install VPA with Helm
|
|
helm upgrade --install vpa fairwinds-stable/vpa --namespace ${VPA_NAMESPACE} \
|
|
--values values.yaml --wait
|
|
|
|
echo "VPA installed successfully in namespace: ${VPA_NAMESPACE}"
|
|
echo ""
|
|
echo "To verify installation:"
|
|
echo " kubectl get pods -n ${VPA_NAMESPACE}"
|
|
echo " kubectl get vpa -A"
|
|
|
|
# Uninstall Vertical Pod Autoscaler
|
|
uninstall:
|
|
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
if ! helm status vpa -n ${VPA_NAMESPACE} &>/dev/null; then
|
|
echo "VPA is not installed."
|
|
exit 0
|
|
fi
|
|
|
|
if command -v gum &>/dev/null; then
|
|
if ! gum confirm "Are you sure you want to uninstall VPA?"; then
|
|
echo "Uninstall cancelled."
|
|
exit 0
|
|
fi
|
|
else
|
|
read -p "Are you sure you want to uninstall VPA? (y/N) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
echo "Uninstall cancelled."
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
helm uninstall vpa -n ${VPA_NAMESPACE}
|
|
|
|
# Delete VPA CRDs
|
|
kubectl delete crd verticalpodautoscalercheckpoints.autoscaling.k8s.io --ignore-not-found
|
|
kubectl delete crd verticalpodautoscalers.autoscaling.k8s.io --ignore-not-found
|
|
|
|
just delete-namespace
|
|
|
|
echo "VPA uninstalled successfully."
|