deploy 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/usr/bin/env bash
  2. if [ -z "${KUBECONFIG}" ]; then
  3. export KUBECONFIG=~/.kube/config
  4. fi
  5. # CAUTION - setting NAMESPACE will deploy most components to the given namespace
  6. # however some are hardcoded to 'monitoring'. Only use if you have reviewed all manifests.
  7. if [ -z "${NAMESPACE}" ]; then
  8. NAMESPACE=monitoring
  9. fi
  10. kubectl create namespace "$NAMESPACE"
  11. kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml --from-file=mail-template.tmpl -n monitoring
  12. kctl() {
  13. kubectl --namespace "$NAMESPACE" "$@"
  14. }
  15. kctl apply -f manifests/prometheus-operator
  16. # Wait for CRDs to be ready.
  17. printf "Waiting for Operator to register custom resource definitions..."
  18. until kctl get customresourcedefinitions servicemonitors.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  19. until kctl get customresourcedefinitions prometheuses.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  20. until kctl get customresourcedefinitions alertmanagers.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  21. until kctl get servicemonitors.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  22. until kctl get prometheuses.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  23. until kctl get alertmanagers.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  24. echo "done!"
  25. kctl apply -f manifests/node-exporter
  26. kctl apply -f manifests/kube-state-metrics
  27. kctl apply -f manifests/grafana/grafana-credentials.yaml
  28. kctl apply -f manifests/grafana
  29. find manifests/prometheus -type f ! -name prometheus-k8s-roles.yaml ! -name prometheus-k8s-role-bindings.yaml -exec kubectl --namespace "$NAMESPACE" apply -f {} \;
  30. kubectl apply -f manifests/prometheus/prometheus-k8s-roles.yaml
  31. kubectl apply -f manifests/prometheus/prometheus-k8s-role-bindings.yaml
  32. kctl apply -f manifests/alertmanager/