-
Notifications
You must be signed in to change notification settings - Fork 2
Installation instructions
The OpenHEXA platform is composed of multiple components, each having it own repository:
- BLSQ/openhexa-app: the App component (Django app for business logic & API)
- BLSQ/openhexa-frontend: the Frontend component, a React/NextJS application
- BLSQ/openhexa-notebooks: the Notebooks component, a customized JupyterHub setup
The recommended way to deploy OpenHEXA is to use Kubernetes. For a local development install, we recommend to use Docker.
As each component requires a different stack, for local development, we recommend to use Docker. We provide Docker Compose manifest to deploy OpenHEXA apps and Notebooks. As for the frontend, it requires a Node local environment to be directly run.
In brief, when the 3 components Git repositories have been locally cloned, you can run them in order:
- the app with the pipelines runner and scheduler,
- the notebook, then
- the frontend.
You'll find detailed instructions for local development in each component README:
Even if the component is containerized, changing your local working copy will be taken in account.
Below, you'll find a short version to setup quickly a development environment for OpenHEXA:
git clone [email protected]:BLSQ/openhexa-app.git
cp .env.dist .env
# edit the .env file to configure your instance
docker network create openhexa
docker compose build
docker compose run app fixtures
docker compose --profile pipelines up
Two URL endpoints are now exposed locally on the port 8000
:
-
http://localhost:8000/graphql
for the GraphQL API -
http://localhost:8000/ready
for the readiness endpoint
git clone [email protected]:BLSQ/openhexa-notebooks.git
docker compose -f docker-compose.yml -f docker-compose-withdockerhub.yml up
git clone [email protected]:BLSQ/openhexa-frontend.git
npm install
cp .env.local.dist .env.local
# edit the .env file to configure your instance
npm run dev
The web app is then served locally on the port 3000
. You can browse and login at http://localhost:3000
. The default credentials are
[email protected]
/root
.
Kubernetes is the recommended way to deploy OpenHEXA.
🚧 For now, the different components must be installed separately. We are currently working on a Helm chart that will facilitate the deployment of OpenHEXA. In the meantime, you will find below a high-level overview of how OpenHEXA is deployed on a Kubernetes cluster. Don't hesitate to reach out if you need assistance with an OpenHEXA deployment.
To deploy OpenHEXA, you will need:
- A Kubernetes cluster
- A PostgreSQL server
- A way to provision object storage, such as AWS S3, Google Cloud GCS, or an open-source equivalent
The openhexa-app component is a rather standard Django application. Deploying it with Kubernetes consists in:
- Creating a Kubernetes
Deployment
, aService
and exposing it with anIngress
- Creating a
Deployment
resources for thedatasources_worker
command - Creating
CronJob
in Kubernetes for theenvironment_sync
anddatasource_sync
commands - Creating a
Secret
and aConfigMap
for the values required by the app component (seesettings.py
for the parameter reference)
The openhexa-frontend component is a NextJS React application. Deploying it with Kubernetes consists in:
- Creating a Kubernetes
Deployment
, aService
and exposing it with anIngress
- Creating a
Secret
and aConfigMap
for the values required by the app component (see.env.local.dist
for the parameter reference)
The recommended way to deploy the OpenHEXA notebooks component is to use the Helm Chart provided by the Zero To Kubernetes project.
The recommended way to deploy the OpenHEXA pipeline component is to use the Helm Chart provided by Airflow.
It's possible to install OpenHexa without Kubernetes on a single machine. It requires a recent Debian-based Linux distribution and Docker. This method is still under development. You'll find all the instructions directly on the main project OpenHexa.