Previously the script errored out, as ServiceMonitor objects are only registered once the Prometheus Operator is running.
39 lines
2.0 KiB
Bash
Executable File
39 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# exit immediately when a command fails
|
|
set -e
|
|
# only exit with zero if all commands of the pipeline exit successfully
|
|
set -o pipefail
|
|
# error on unset variables
|
|
set -u
|
|
# print each command before executing it
|
|
set -x
|
|
|
|
manifest_prefix=${1-.}
|
|
|
|
kubectl create namespace monitoring
|
|
|
|
find ${manifest_prefix}/manifests/prometheus-operator/ -type f ! -name prometheus-operator-service-monitor.yaml -exec kubectl apply -f {} \;
|
|
|
|
# Wait for CRDs to be ready.
|
|
printf "Waiting for Operator to register custom resource definitions..."
|
|
until kubectl get customresourcedefinitions servicemonitors.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
|
|
until kubectl get customresourcedefinitions prometheuses.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
|
|
until kubectl get customresourcedefinitions alertmanagers.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
|
|
until kubectl get servicemonitors.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
|
|
until kubectl get prometheuses.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
|
|
until kubectl get alertmanagers.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
|
|
echo "done!"
|
|
|
|
# need to ensure that ServiceMonitors are registered before we can create the prometheus-operator ServiceMonitor
|
|
kubectl apply -f ${manifest_prefix}/manifests/prometheus-operator/prometheus-operator-service-monitor.yaml
|
|
|
|
kubectl apply -f ${manifest_prefix}/manifests/node-exporter/
|
|
kubectl apply -f ${manifest_prefix}/manifests/kube-state-metrics/
|
|
find ${manifest_prefix}/manifests/grafana/ -type f ! -name grafana-dashboard-definitions.yaml -exec kubectl apply -f {} \;
|
|
|
|
# kubectl apply wants to put the previous version in an annotation, which is too large, therefore create instead of apply
|
|
kubectl create -f ${manifest_prefix}/manifests/grafana/grafana-dashboard-definitions.yaml
|
|
kubectl apply -f ${manifest_prefix}/manifests/prometheus-k8s/
|
|
kubectl apply -f ${manifest_prefix}/manifests/alertmanager-main/
|
|
|