-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Follow these steps to install and set up Maestro.
From your command line, clone the Maestro repository:
$ [email protected]:overture-stack/maestro.gitFirst, we must ensure indexing is enabled in the configuration file. Although by default this setting is enabled, it is good practice to check.
- From your command line, switch to the
configdirectory and locate theapplication.ymlfile:
cd maestro/maestro-app/src/main/resources/config- Open the file and verify the following:
-
disableIndexing=false- This ensures Maestro indexing functionality will run -
disableEventIndexing=false- This is only needed if you are using Kafka for event-based indexing
Next, we must configure the connections to the Elasticsearch, Song, and Kafka services installed as part our prerequisite setup.
- From your command line, switch to the
configdirectory and locate theapplication.ymlfile:
cd maestro/maestro-app/src/main/resources/config- Open the file, locate the
elasticsearch->clusterNodessection and edit the value to point to the URL where your Elasticsearch instance is hosted:
# elastic search server to connect to & client properties
elasticsearch:
# elasticsearch server nodes to send requests to
clusterNodes:
- http://localhost:9200- Locate the
repositoriessection. This is where you will specify each Song repository that Maestro will connect with. Add a block for each repository you wish to configure. For each repository, the following mandatory values must be provided:
| Property | Description |
|---|---|
code |
This is a unique ID to represent the Song repository. If you are integrating with Kafka, then this must match the song.serverId that you have deployed. |
url |
URL where you have deployed the Song server |
name |
A descriptive name for the repository |
# List of Genomic files repositories (SONGs)
repositories:
# these properties will be used in the document (see ../file_centric.json)
- code: song.overture # must be unique & must match song.serverId if using kafka integration with song
url: https://song.domain.com # Change this to a valid domain where the song exists in your setup
name: local song
# optional
storageType: S3
organization: ICGC
country: CA
# you can other SONGs as needed
- code: song.overture1
url: http://localhost:8080
name: local song
# optional
storageType: S3
organization: overture
country: LH- Optionally, if you are using Kafka for event-based indexing, locate the
kafka->binders->brokersblock and set thebrokersvalue to the location where you have deployed the Kafka broker:
kafka:
binder:
brokers: localhost:9092To run the Maestro service locally, a Makefile is provided for your convenience. However, if you are unable to use make, you may examine the Makefile contents for the raw commands.
It is highly recommended that for local installations, you run Maestro from Docker.
In this mode a docker-compose.yml file is provided that contains a Dockerized version of Elastidsearh and Kafka. You can examine this file at ./run/docker-compose/docker-compose.yml. To run Song with Docker, please refer to our Song documentation.
For reference, the Docker image for Maestro can be found on GitHub here.
To start Maestro from a Docker image with all needed infrastructure, run this command:
make docker-startIf you need to run Maestro from source without Docker, it will be your responsibility to ensure:
- You have JDK 11 and up installed
- All dependencies described earlier are installed
- Configured the
application.ymlfile per your environment
If the above is complete, then run this command:
Provided that you have JDK11+ and all dependencies (see Dependencies) running and modified application.yaml based on your environment and needs, you can run the following command:
make runIf you wanto to run Maestro as a service in a Kubernetes cluster than you can use the provided Maestro Helm chart in the Overture chart repository here.
Do the following:
- Modify your
values-override.ymlfile based on your deployment environment. You can provide the Maestro application configurations as environment variables using theextraEnvkey.
For example, similar to our native application.yml file, we must provide the following mandatory values:
| Property | Description |
|---|---|
MAESTRO_ELASTICSEARCH_CLUSTERNODES_0 |
URL to your Elasticsearch cluster node |
SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS |
URL to your Kafka broker, if using Kafka for event-based indexing |
MAESTRO_REPOSITORIES_<X>_CODE |
For each Song repository <X> you want to setup, this is the unique ID for that repository. If you are integrating with Kafka, then this must match the song.serverId that you have deployed. |
MAESTRO_REPOSITORIES_<X>_URL |
For each Song repository <X> you want to setup, this is the URL where you have deployed the Song server |
MAESTRO_REPOSITORIES_<X>_NAME |
For each Song repository <X> you want to setup, this is a descriptive name for the repository |
extraEnv:
SERVER_PORT: "11235"
MAESTRO_ELASTICSEARCH_CLUSTERNODES_0: "http://localhost:9200"
SPRING_CLOUD_STREAM_KAFKA_BINDER_BROKERS: "localhost:9092"
# repos
MAESTRO_REPOSITORIES_0_CODE: "song"
MAESTRO_REPOSITORIES_0_URL: "https://song1:8080"
MAESTRO_REPOSITORIES_0_NAME: "song1"
MAESTRO_REPOSITORIES_0_ORGANIZATION: "ICGC"
MAESTRO_REPOSITORIES_0_COUNTRY: "CA"
MAESTRO_REPOSITORIES_1_CODE: "song2"
MAESTRO_REPOSITORIES_1_URL: "http://song2:8080"
MAESTRO_REPOSITORIES_1_NAME: "song2"
MAESTRO_REPOSITORIES_1_ORGANIZATION: "overture"
MAESTRO_REPOSITORIES_1_COUNTRY: "OICR"
MAESTRO_FAILURELOG_DIR: "/app-log"- Next add the Overture chart repository and install the chart:
helm repo add overture https://overture-stack.github.io/charts-server/
helm install -f values-override.yml overture/maestro