Skip to main content
Version: v0.9

Service

Schemasโ€‹

Schema Serviceโ€‹

Service is a kind of workload profile that describes how to run your application code. This
is typically used for long-running web applications that should "never" go down, and handle
short-lived latency-sensitive web requests, or events.

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
replicas
Number of container replicas based on this configuration that should be ran.
int2required
ports
The list of ports of the Service should get exposed.
[network.Port]Undefinedoptional
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
type
Type represents the type of workload used by this Service. Currently, it supports several
types, including Deployment and CollaSet.
"Deployment" | "CollaSet"Deploymentoptional

Examplesโ€‹

# Instantiate a long-running service and its image is "nginx:v1"

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

svc = wl.Service {
containers: {
"nginx": c.Container {
image: "nginx:v1"
}
}
ports: [
n.Port {
port: 80
public: True
}
n.Port {
port: 9090
}
]
}

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
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
content
File content in plain text.
strUndefinedoptional
contentFrom
Source for the file content, reference to a secret of configmap value.
strUndefinedoptional

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": ""
}
}

Schema Portโ€‹

Port defines the exposed port of Service, which can be used to describe how the Service
get accessed.

Attributesโ€‹

Name and DescriptionTypeDefault ValueRequired
port
The exposed port of the Service.
int80required
protocol
The protocol to access the port.
"TCP" | "UDP""TCP"optional
public
Public defines whether the port can be accessed through Internet.
boolFalseoptional
targetPort
The backend container port. If empty, set it the same as the port.
intUndefinedoptional

Examplesโ€‹

import catalog.models.schema.v1.workload.network as n

port = n.Port {
port: 80
targetPort: 8080
protocol: "TCP"
public: True
}