How can I deploy InvenioRDM?¶
In previous sections, you saw how to run a containerized environment that demonstrates the setup of all components running in docker containers and how to install InvenioRDM in your local computer for development. In this section we cover how to deploy InvenioRDM in a closer-to-production manner.
Do not deploy as-is in production
Please note the "closer-to-production" statement, this is because even if the designed architecture can scale and withstand the load of a production service (It has been tested to stand peaks of up to 180 requests/s), you need to review the security configurations and customize resources to fit your use case. In addition, Elasticsearch and PostgreSQL can be deployed along with the application, however they are not configured with redundancy and persistance in mind.
Helm is the package manager for Kubernetes. This means, that by using Helm charts (packages in Helm lingo) you can deploy InvenioRDM in any cloud provider that supports Kubernetes (e.g. OpenShift clusters, Google Cloud, Amazon Web Services, IBM Cloud).
What is a Helm chart?
A Helm chart is a definition of the architecture of the system, meaning how all components interconnect with each other (Similar to a
In addition, Helm allows you to install, version, upgrade and rollback your InvenioRDM installation in an easy way. You can find more information about Helm here.
The current chart proposes the following architecture:
- HAProxy as entry point. It provides load balancing and queuing of requests.
- Nginx as reverse proxy. It serves as reverse proxy, to help HAproxy and uWSGI "talk" the same language (protocol).
- Web application nodes, running the uWSGI application.
- Redis and RabbitMQ come along in containers.
- Elasticsearch and PostgreSQL can be added to the deployment. However they are not configured in-depth and therefore not suited for more than demo purposes.
To install Helm, follow the official documentation linked above. Once you have it installed you can add the repository. The syntax is as follows:
helm repo add [NAME] [URL] [flags]
Let's add the
helm-invenio (NAME) repository and check that it has been added correctly:
$ helm repo add helm-invenio https://inveniosoftware.github.io/helm-invenio/ $ helm repo update $ helm search invenio NAME CHART VERSION APP VERSION DESCRIPTION helm-invenio/invenio 0.2.0 1.16.0 Open Source framework for large-scale digital repositories helm-invenio/invenio 0.1.0 1.16.0 Open Source framework for large-scale digital repositories
You can also install by cloning from GitHub:
$ git clone https://github.com/inveniosoftware/helm-invenio.git $ cd helm-invenio/
In this case, you will need to reference the
./invenio folder rather than the chart name (
Only compatible with OpenShift
Please note that currently this Helm chart is only compatible with OpenShift.