Skip to main content

Runtimes

Runtimes provide the context in which processing jobs are executed.

FarEarth supports these runtime "types":

kubernetes: A language agnostic runtime which interfaces with a FarEarth Processor app, via an MQTT messaging bus java-cmdline: A Java processing process started by the FarEarth Processor app, on the same machine as itself java-classpath: A Java processing process started within the same JVM as the FarEarth Processor app (primarily used for testing only)

Kubernetes runtime configurations

The default method to start executors with FarEarth are as Kubernetes containers. The example below shows such a configuration.

Communication to the containers are handled through MQTT.

The container images are retrieved from the specified container registry.

{
"id": "farearth.orion",
"type": "kubernetes",
"maxJobs": 5,
"enabledExecutors": [
"diagnostics:1.0.12",
"ndvi:1.1.22",
],
"properties": {
"clusterId": "orion",
"namespace": "ns-farearth",
"configMount": "/etc/farearth/certs/incoming:/etc/farearth/certs/incoming",
"yamlCredentialsBase64": "<insert base-64 encoded yaml credentials>",
"jobMemoryLimitGi": 15,
"jobCpuLimitMilli": 3500,
"jobDiskLimitGi": 100.0,
"registries": [
{
"baseUrl": "registry.domain.local:5000",
"secure": false,
"username": "<insert username>",
"password": "<insert password>"
}
]
}
}

Java command-line runtime configuration

Below is an example of a Java processor that can be started by the FarEarth Processor app, as a separate process. For this runtime, the code for the Executor must be compiled into the processor app already.

{
"id": "farearth.local-cmdline",
"type": "java-cmdline",
"deactivated": true,
"enabledExecutors": [
"diagnostics:1.0.12"
],
"properties": {
"jsonPluginsFolderPath": "../../../../../farearth-plugins/src/capabilities"
}
}

Java classpath runtime configuration

Below is an example of a Java processor running within the same JVM as the FarEarth Processor app. For this runtime, the code for the Executor must be compiled into the processor app already.

{
"id": "farearth.local-classpath",
"type": "java-classpath",
"enabledExecutors": [
"test_processor:1.0.12",
"single_to_multi:1.0.12"
],
"properties": {
"jsonPluginsFolderPath": "../../../../../farearth-plugins/src/capabilities"
}
}

The enabledExecutors specify which executors within the JVM is enabled.