Skip to main content
Version: v0.10

job

Schemas

Schema Job

Job is a kind of workload profile that describes how to run your application code. This
is typically used for tasks that take from a few seconds to a few days to complete.

Attributes

Name and DescriptionTypeDefault ValueRequired
containers
Containers defines the templates of containers to be ran.
More info: https://kubernetes.io/docs/concepts/containers
{str: container.Container}Undefinedrequired
schedulestrUndefinedrequired
replicas
Number of container replicas based on this configuration that should be ran.
int2required
secrets{str: secret.Secret}Undefinedoptional
labels
Labels are key/value pairs that are attached to the workload.
{str: str}Undefinedoptional
annotations
Annotations are key/value pairs that attach arbitrary non-identifying metadata to the workload.
{str: str}Undefinedoptional

Examples

Instantiate a job with busybox image and runs every hour

import catalog.models.schema.v1.workload as wl
import catalog.models.schema.v1.workload.container as c

job: wl.Job {
containers: {
"busybox": c.Container{
image: "busybox:1.28"
command: ["/bin/sh", "-c", "echo hello"]
}
}
schedule: "0 * * * *"
}

Base Schema

WorkloadBase

Schema Container

Container describes how the Application's tasks are expected to be run. Depending on
the replicas parameter 1 or more containers can be created from each template.

Attributes

Name and DescriptionTypeDefault ValueRequired
image
Image refers to the Docker image name to run for this container.
More info: https://kubernetes.io/docs/concepts/containers/images
strUndefinedrequired
command
Entrypoint array. Not executed within a shell.
Command will overwrite the ENTRYPOINT value set in the Dockfile, otherwise the Docker
image's ENTRYPOINT is used if this is not provided.
[str]Undefinedoptional
args
Arguments to the entrypoint.
Args will overwrite the CMD value set in the Dockfile, otherwise the Docker
image's CMD is used if this is not provided.
[str]Undefinedoptional
env
List of environment variables to set in the container.
The value of the environment variable may be static text or a value from a secret.
{str: str}Undefinedoptional
workingDir
The working directory of the running process defined in entrypoint.
Default container runtime will be used if this is not specified.
strUndefinedoptional
resources
Map of resource requirements the container should run with.
The resources parameter is a dict with the key being the resource name and the value being
the resource value.
{str: str}Undefinedoptional
files
List of files to create in the container.
The files parameter is a dict with the key being the file name in the container and the value
being the target file specification.
{str: container.FileSpec}Undefinedoptional
dirs
Collection of volumes mount into the container's filesystem.
The dirs parameter is a dict with the key being the folder name in the container and the value
being the referenced volume.
{str: str}Undefinedoptional
livenessProbe
LivenessProbe indicates if a running process is healthy.
Container will be restarted if the probe fails.
p.ProbeUndefinedoptional
readinessProbe
ReadinessProbe indicates whether an application is available to handle requests.
p.ProbeUndefinedoptional
startupProbe
StartupProbe indicates that the container has started for the first time.
Container will be restarted if the probe fails.
p.ProbeUndefinedoptional
lifecycle
Lifecycle refers to actions that the management system should take in response to container lifecycle events.
lc.LifecycleUndefinedoptional

Examples

import catalog.models.schema.v1.workload.container as c

web = c.Container {
image: "nginx:latest"
command: ["/bin/sh", "-c", "echo hi"]
env: {
"name": "value"
}
resources: {
"cpu": "2"
"memory": "4Gi"
}
}

Schema FileSpec

FileSpec defines the target file in a Container.

Attributes

Name and DescriptionTypeDefault ValueRequired
content
File content in plain text.
strUndefinedoptional
contentFrom
Source for the file content, reference to a secret of configmap value.
strUndefinedoptional
mode
Mode bits used to set permissions on this file, must be an octal value
between 0000 and 0777 or a decimal value between 0 and 511
strUndefinedrequired

Examples

import catalog.models.schema.v1.workload.container as c

tmpFile = c.FileSpec {
content: "some file contents"
mode: "0777"
}

Schema Probe

Probe describes a health check to be performed against a container to determine whether it is
alive or ready to receive traffic. There are three probe types: readiness, liveness, and startup.

Attributes

Name and DescriptionTypeDefault ValueRequired
probeHandler
The action taken to determine the alive or health of a container
probe.Exec | probe.Http | probe.TcpUndefinedrequired
initialDelaySeconds
The number of seconds before health checking is activated.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle\#container-probes
intUndefinedoptional
timeoutSeconds
The number of seconds after which the probe times out.
More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle\#container-probes
intUndefinedoptional
periodSeconds
How often (in seconds) to perform the probe.
intUndefinedoptional
successThreshold
Minimum consecutive successes for the probe to be considered successful after having failed.
intUndefinedoptional
failureThreshold
Minimum consecutive failures for the probe to be considered failed after having succeeded.
intUndefinedoptional
terminationGracePeriodintUndefinedoptional

Examples

import catalog.models.schema.v1.workload.container.probe as p

probe = p.Probe {
probeHandler: p.Http {
path: "/healthz"
}
initialDelaySeconds: 10
}

Schema Exec

Exec describes a "run in container" action.

Attributes

Name and DescriptionTypeDefault ValueRequired
command
The command line to execute inside the container.
[str]Undefinedrequired

Examples

import catalog.models.schema.v1.workload.container.probe as p

execProbe = p.Exec {
command: ["probe.sh"]
}

Schema Http

Http describes an action based on HTTP Get requests.

Attributes

Name and DescriptionTypeDefault ValueRequired
url
The full qualified url to send HTTP requests.
strUndefinedrequired
headers
Collection of custom headers to set in the request
{str: str}Undefinedoptional

Examples

import catalog.models.schema.v1.workload.container.probe as p

httpProbe = p.Http {
url: "http://localhost:80"
headers: {
"X-HEADER": "VALUE"
}
}

Schema Tcp

Tcp describes an action based on opening a socket.

Attributes

Name and DescriptionTypeDefault ValueRequired
url
The full qualified url to open a socket.
strUndefinedrequired

Examples

import catalog.models.schema.v1.workload.container.probe as p

tcpProbe = p.Tcp {
url: "tcp://localhost:1234"
}

Schema Lifecycle

Lifecycle describes actions that the management system should take in response
to container lifecycle events.

Attributes

Name and DescriptionTypeDefault ValueRequired
preStop
The action to be taken before a container is terminated due to an API request or
management event such as liveness/startup probe failure, preemption, resource contention, etc.
More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/\#container-hooks
probe.Exec | probe.HttpUndefinedoptional
postStart
The action to be taken after a container is created.
More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/\#container-hooks
probe.Exec | probe.HttpUndefinedoptional

Examples

import catalog.models.schema.v1.workload.container.probe as p
import catalog.models.schema.v1.workload.container.lifecycle as lc

lifecycleHook = lc.Lifecycle {
preStop: p.Exec {
command: ["preStop.sh"]
}
postStart: p.Http {
url: "http://localhost:80"
}
}

Schema Secret

Secret can be used to store sensitive data.

Attributes

Name and DescriptionTypeDefault ValueRequired
type
Type of secret, used to facilitate programmatic handling of secret data.
More info: https://kubernetes.io/docs/concepts/configuration/secret/\#secret-types
"basic" | "opaque"opaquerequired
data
Data contains the non-binary secret data in string form.
{str: str}Undefinedoptional
immutable
Immutable, if set to true, ensures that data stored in the Secret cannot be updated.
boolUndefinedoptional

Examples

import catalog.models.schema.v1.workload.secret as sec

basicAuth = sec.Secret {
type: "basic"
data: {
"username": ""
"password": ""
}
}