Service metadata
Service metadata is used to describe the interface of a processing service so it can be executed by Steep.
Service parameters
This data model describes the parameters that can be passed to a processing service.
Example cardinalities:
"0..1"
means the parameter is optional (it can appear 0 times or 1 time)"1..1"
means the parameter is mandatory (it must appear 1 time)"1..n"
means it must appear at least once or many times (no upper limit)
Data type:
Steep treats parameters differently depending on the type
and dataType
:
-
If
type
is"output"
anddataType
is"directory"
, Steep will create a new directory for the service’s output and recursively search it for result files after the service has been executed. -
If
type
is"input"
anddataType
is"directory"
, Steep will find the common parent directory of the files from the parameter’s value and pass it to the service. For example, if the parameter’s value is an array with the elements["/tmp/a.txt", "/tmp/b.txt", "/tmp/subdir/c.txt"]
, Steep will pass"/tmp/"
to the service. -
If
type
is"input"
,dataType
is not"directory"
, but the parameter’s value is an array, Steep will duplicate the parameter as many times as there are items in the array (given that the cardinality has no upper limit). -
If
type
is"input"
,dataType
is"boolean"
, and the parameter has alabel
, Steep will pass thelabel
to the service if the parameter’s value istrue
and ignore the parameter if the value isfalse
. -
Otherwise, this property can be an arbitrary string. New data types with special handling can be added through output adapter plugins.
Runtime arguments
Runtime arguments are similar to service parameters, except they are passed to the runtime that executes the service instead of the service itself.
Runtimes
Steep provides a set of default runtimes to execute processing services: other
, docker
, and kubernetes
. More runtimes can be added through plugins.
Other runtime
Name: other
The other
runtime is the default runtime of Steep. The service will be
executed like a normal executable program on the same host as the Steep agent.
The path
attribute of the service metadata refers to the program to execute.
It can either be an absolute path to an executable binary or shell script
or a name of a built-in shell function.
Docker runtime
Name: docker
This runtime executes the service through Docker.
The service metadata attribute path
specifies the Docker image to run. It can
be an image name followed by an optional tag and/or digest (e.g. ubuntu
or
ubuntu:23.10
).
The attribute runtimeArgs
specifies parameters that should be forwarded to the
docker run
command. For example, the following runtime argument mounts a
volume to the started container:
Please refer to the documentation of the docker run command for a complete list of possible arguments.
Kubernetes runtime
Name: kubernetes
This runtime executes the service as a Kubernetes job.
The service metadata attribute path
specifies the container image to run. It
can be an image name followed by an optional tag and/or digest (e.g. ubuntu
or ubuntu:23.10
). See the Kubernetes documentation
for more information about valid image names.
The runtimeArgs
attribute can be used to override or amend the
Kubernetes runtime configuration
as specified in the steep.yaml
file. Find a list of valid properties below.
Note that some of the properties are objects or arrays although the
runtime arguments data model only
allows strings as values. While reading the configuration file
services.yaml
,
Steep automatically converts objects and arrays to strings and the Kubernetes
runtime interprets those correctly later.
env
A list of environment variables that should be injected into the container.
The list items should be Kubernetes environment variable objects. See the
Kubernetes API reference
for more information. The following example specifies an environment variable
FOO
with the value bar
:
The environment variables specified here will be added to the ones set in the
Kubernetes runtime configuration
through the steep.runtimes.kubernetes.env
configuration item.
imagePullPolicy
The image pull policy for the started Kubernetes job. See the
Kubernetes documentation
or the imagePullPolicy
parameter of the Container
object in the
Kubernetes API reference
for more information.
This value overrides the one specified in the
Kubernetes runtime configuration
through the steep.runtimes.kubernetes.imagePullPolicy
configuration item.
imagePullSecrets
A list of image pull secrets for the started job. See the Kubernetes documentation or the Kubernetes API reference for more information.
The image pull secrets specified here will be added to the ones set in the
Kubernetes runtime configuration
through the steep.runtimes.kubernetes.imagePullSecrets
configuration item.
volumes
A list of Kubernetes volumes. The Kubernetes runtime attaches these volumes to the started pod. For example, the following configuration defines a volume that refers to a host path:
You can also refer to persistent volume claims:
See the Kubernetes API reference for more information about volumes.
The volumes specified here will be added to the ones set in the
Kubernetes runtime configuration
through the steep.runtimes.kubernetes.volumes
configuration item.
volumeMounts
A list of Kubernetes volume mount objects. The Kubernetes runtime mounts
volumes specified here into the started container. For example, the following
configuration mounts a volume with the name steep-tmp-path
to the path
/tmp/steep/tmp
inside the container:
The volume steep-tmp-path
must be defined through another runtime argument
with the ID volumes
or through the configuration item
steep.runtimes.kubernetes.volumes
.
See the Kubernetes API reference for more information about volume mount objects.
The volume mounts specified here will be added to the ones set in the
Kubernetes runtime configuration
through the steep.runtimes.kubernetes.volumeMounts
configuration item.