hosted-metrics-api Manual Installation

Manual Installation


Before deploying this service into a Kubernetes cluster you will first need

  • A Kubernetes cluster
  • A Cassandra cluster
  • A Kafka cluster
  • A Zookeeper cluster (requirement of Kafka)
  • A registry key provided by GrafanaLabs to access the docker repository

It is expected that your Kubernetes cluster has an IngressController configured so that Ingress resources created will be exposed correctly.

GCR Secret

To get access to the the HM-API docker image a GCR Key is required. If you don’t have that key yet, please contact us to get one.

  • Add the registry key to kubernetes place the registry key in grafanalabs-keyfile.json. Then run
kubectl -n metrictank create secret docker-registry metrictank-gcr --docker-server= --docker-username=_json_key --docker-password="$(cat grafanalabs-keyfile.json)" --docker-email=<email address>

SSL Certificate

Add the default SSL certificate. It is recommended to use a wildcard cert so that 1 certificate can be used for all deployments in the cluster

Assuming that you have a key.pem and cert.pem you can run the following script to create the certificate in Kubernetes



## add SSL cert
echo "
apiVersion: v1
kind: Secret
  name: $CERTNAME
  namespace: $NAMESPACE
  tls.crt: `base64 -w 0 ./crt.pem`
  tls.key: `base64 -w 0 ./key.pem`
" | kubectl create -f -

Deploy HM-API

Deploy the hosted-metrics-api Kubernetes resources

sed -e "s/{DOMAIN}/$DOMAIN/g" -e "s/{USER}/$USER/g" -e "s/{PASS}/$PASS/g" -e "s/{DC}/$DC/g" k8s.yaml.tmp | kubectl -n metrictank create -f -

This will deploy the service and expose it at the address “” protected with BasicAuth using the username apiuser with the password apipass

Running HM-API outside of Kubernetes

When running HM-API outside a Kubernetes cluster it can be authenticated against the API of the Kubernetes cluster where it should deploy its instances by using the -kubeconfig parameter. This still requires the SSL Certificate to present on the cluster, but the GCR secret is not necessary. For example:

hosted-metrics-api -kubeconfig=~/.kube/config ...