#!/usr/bin/env bash if [ -z "${KUBECONFIG}" ]; then export KUBECONFIG=~/.kube/config fi if [ -z "${NAMESPACE}" ]; then NAMESPACE=monitoring fi kubectl create namespace "$NAMESPACE" kctl() { kubectl --namespace "$NAMESPACE" "$@" } kctl apply -f manifests/prometheus-operator.yaml # Wait for TPRs to be ready. printf "Waiting for Operator to register third party objects..." until kctl get servicemonitor > /dev/null 2>&1; do sleep 1; printf "."; done until kctl get prometheus > /dev/null 2>&1; do sleep 1; printf "."; done until kctl get alertmanager > /dev/null 2>&1; do sleep 1; printf "."; done echo "done!" kctl apply -f manifests/exporters kctl apply -f manifests/grafana kctl apply -f manifests/prometheus/prometheus-k8s-rules.yaml kctl apply -f manifests/prometheus/prometheus-k8s-service.yaml kctl apply -f manifests/alertmanager/alertmanager-config.yaml kctl apply -f manifests/alertmanager/alertmanager-service.yaml # `kubectl apply` is currently not working for third party resources so we are # using `kubectl create` here for the time being. # (https://github.com/kubernetes/kubernetes/issues/29542) kctl create -f manifests/prometheus/prometheus-k8s-servicemonitors.yaml kctl create -f manifests/prometheus/prometheus-k8s.yaml kctl create -f manifests/alertmanager/alertmanager.yaml