set fallback := true

export PROMETHEUS_NAMESPACE := env("PROMETHEUS_NAMESPACE", "monitoring")
export GRAFANA_HOST := env("GRAFANA_HOST", "")

[private]
default:
    @just --list --unsorted --list-submodules


add-helm-repo:
    @helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
    @helm repo update


install:
    just add-helm-repo

    gomplate -f kube-stack-config-values.gomplate.yaml -o kube-stack-config-values.yaml

    @helm upgrade --cleanup-on-fail --install kube-prometheus-stack prometheus-community/kube-prometheus-stack \
        --namespace ${PROMETHEUS_NAMESPACE} \
        --create-namespace \
        --wait \
        -f kube-stack-config-values.yaml

    echo "kubectl port-forward svc/kube-prometheus-stack-grafana 8080:80 -n ${PROMETHEUS_NAMESPACE}"
    echo "kubectl port-forward svc/kube-prometheus-stack-prometheus 9090 -n ${PROMETHEUS_NAMESPACE}"
    echo "kubectl port-forward svc/kube-prometheus-stack-alertmanager 9093 -n ${PROMETHEUS_NAMESPACE}"

    echo "Get Grafana Password:"
    echo "kubectl get secret --namespace monitoring -l app.kubernetes.io/component=admin-secret -o jsonpath=\"{.items[0].data.admin-password}\" | base64 --decode ; echo"

    gomplate -f ./grafana-certificate.gomplate.yaml | kubectl apply -f -


uninstall:
    helm uninstall kube-prometheus-stack -n ${PROMETHEUS_NAMESPACE}