All examples below assume minikube environment.
Create namespace:
export NAMESPACE="chronologist-dev"
kubectl create ns ${NAMESPACE}
Deploy Grafana v4.6.3
:
# Note the last chart version for `4.6.3` is `0.8.4`
# See: https://github.com/kubernetes/charts/tree/53d1cd54f0b710c402dfd25278a66735eba969f1/stable/grafana
helm install stable/grafana --version 0.8.4 \
--wait --debug \
--name grafana \
--namespace ${NAMESPACE} \
--set server.persistentVolume.enabled=false \
--set server.ingress.enabled=true \
--set server.ingress.hosts.0=$(minikube ip).xip.io
Export Grafana variables, getting password for user admin
:
export GRAFANA_ADDR="$(minikube ip).xip.io"
export GRAFANA_PASSWORD=$(kubectl get secret --namespace ${NAMESPACE} grafana -o jsonpath="{.data.grafana-admin-password}" | base64 --decode ; echo)
Create API key:
export GRAFANA_API_KEY=$(curl -sS -XPOST "${GRAFANA_ADDR}/api/auth/keys" \
--user "admin:${GRAFANA_PASSWORD}" \
-H "Content-Type: application/json" \
-d '{"name": "chronologist", "role": "Editor"}' \
| jq -r ".key")
Put CHRONOLOGIST_GRAFANA_ADDR
and CHRONOLOGIST_GRAFANA_API_KEY
in your .env
file
to make Chronologist use that Grafana when running locally:
cat<<EOF > .env
CHRONOLOGIST_GRAFANA_ADDR=$GRAFANA_ADDR
CHRONOLOGIST_GRAFANA_API_KEY=$GRAFANA_API_KEY
EOF
Build Chronologist:
make build
Run:
./bin/chronologist
Deploy some helm chart:
helm install stable/kube-ops-view --name foo
Watch Chronologist output as it creates an annotation in Grafana.
Check that annotation:
curl -sS -XGET "${GRAFANA_ADDR}/api/annotations" \
-H "Authorization: Bearer ${GRAFANA_API_KEY}"
Try delete previously deployed release and watch Chronologist deletes the annotation:
helm delete --purge foo
Check that annotation does not exist anymore:
curl -sS -XGET "${GRAFANA_ADDR}/api/annotations" \
-H "Authorization: Bearer ${GRAFANA_API_KEY}"
Now you can shutdown you local Chronologist and deploy it to Minikube.
Build Docker image:
docker image build -t hypnoglow/chronologist:dirty .
Push image to Minikube:
docker save hypnoglow/chronologist:dirty | (eval $(minikube docker-env) && docker load)
Deploy Chronologist:
helm upgrade chronologist ./deployment/chart/chronologist \
--install --namespace ${NAMESPACE} --wait --debug \
--set image.tag="dirty" \
--set grafana.addr="${GRAFANA_ADDR}" \
--set grafana.apiKey=${GRAFANA_API_KEY}
Chronologist is ready!
Refer to "Make it work!" section above to deploy some release again for testing purposes.
helm delete --purge chronologist grafana