/hindsight

Primary LanguageElixirApache License 2.0Apache-2.0

Hindsight

Data is clearer in Hindsight

Usage

Running Hindsight

Locally

The platform_runner app serves as our way to stand up an instance on localhost. It is also how we run end-to-end tests. To run/debug/play locally:

cd apps/platform_runner
MIX_ENV=integration mix docker.start
MIX_ENV=integration iex -S mix

Our WebSocket and REST APIs can be reached locally on ports 4000 and 4001, respectively.

In Kubernetes

Hindsight requires you to use Helm v3. Our .tool-versions file will enforce the correct software dependencies for you if you're using asdf.

Hindsight currently uses Kafka to decouple services, and we suggest using Strimzi to deploy Kafka to Kubernetes. The helm chart assumes you'll use Strimzi but does not install it. You must do that yourself or toggle Strimzi off via helm values (--set strimzi.enabled=false).

Our install script will install Strimzi, wait for a Ready state, then deploy Hindsight.

./scripts/install [RELEASE_NAME] [NAMESPACE] [aws|local] [values]

Versioning

By default, .Chart.AppVersion from our Helm chart will be deployed. This can be overwritten by setting image.tag. The latest tag is auto-published to Docker hub on every merge to master, so use it to get the latest-and-greatest updates. Make sure you set image.pullPolicy to Always when you do it:

./scripts/install [RELEASE_NAME] [NAMESPACE] [aws|local] image.tag=latest image.pullPolicy=Always [...]

Minikube

Set location to local to deploy to Minikube or Docker's Kubernetes.

./scripts/install [RELEASE_NAME] [NAMESPACE] local image.tag=latest image.pullPolicy=Always

AWS

Set location to aws to use AWS presets. You must give external service information.

./scripts/install [RELEASE_NAME] [NAMESPACE] aws \
                  global.objectStore.bucketName=[BUCKET_NAME] \
                  global.objectStore.region=[AWS_REGION] \
                  presto.postgres.externalAddress=[RDS_URL] \
                  presto.postgres.db.password=[DB_PASSWORD] \
                  presto.postgres.db.user=[DB_USER] \
                  redis.externalAddress=[REDIS_URL]