deploy 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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. kubectl -n monitoring create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/peer.crt --from-file=/etc/kubernetes/pki/etcd/peer.key --from-file=/etc/kubernetes/pki/etcd/ca.crt
  13. kctl() {
  14. kubectl --namespace "$NAMESPACE" "$@"
  15. }
  16. kctl apply -f manifests/prometheus-operator
  17. # Wait for CRDs to be ready.
  18. printf "Waiting for Operator to register custom resource definitions..."
  19. until kctl get customresourcedefinitions servicemonitors.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  20. until kctl get customresourcedefinitions prometheuses.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  21. until kctl get customresourcedefinitions alertmanagers.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  22. until kctl get servicemonitors.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  23. until kctl get prometheuses.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  24. until kctl get alertmanagers.monitoring.coreos.com > /dev/null 2>&1; do sleep 1; printf "."; done
  25. echo "done!"
  26. kctl apply -f manifests/node-exporter
  27. kctl apply -f manifests/kube-state-metrics
  28. kctl apply -f manifests/grafana/grafana-credentials.yaml
  29. kctl apply -f manifests/grafana
  30. find manifests/prometheus -type f ! -name prometheus-k8s-roles.yaml ! -name prometheus-k8s-role-bindings.yaml -exec kubectl --namespace "$NAMESPACE" apply -f {} \;
  31. kubectl apply -f manifests/prometheus/prometheus-k8s-roles.yaml
  32. kubectl apply -f manifests/prometheus/prometheus-k8s-role-bindings.yaml
  33. kctl apply -f manifests/alertmanager/