Atomic App implements version 0.0.2
of the Nulecule specification.
A Nulecule
file format can either be json
or yaml
.
Common Name | type |
format |
Comments |
---|---|---|---|
integer | integer |
int32 |
signed 64 bits |
float | number |
float |
|
string | string |
||
byte | string |
byte |
|
boolean | boolean |
||
date | string |
date |
As defined by full-date - RFC3339 |
dateTime | string |
date-time |
As defined by date-time - RFC3339 |
password | string |
password |
Used to hint UIs the input needs to be obscured. |
URL | URL |
URL |
As defined by URL - RFC3986 Section 1.1.3 |
This is the root object for the specification.
Field Name | Type | Description |
---|---|---|
id | string |
Required. The machine readable id of the Container Application. |
specversion | string |
Required. The semantic version string of the Container Application Specification used to describe the app. The value MUST be "0.0.2" (current version of the spec). |
metadata | Metadata Object |
Optional An object holding optional metadata related for the Container Application, this may include license information or human readable information. |
graph | Graph Object |
Required. A list of depending containerapps. Strings may either match a local sub directory or another containerapp-spec compliant containerapp image that can be pulled via docker. |
requirements | Requirements Object |
Optional. A list of requirements of this containerapp. |
Metadata for the Container Application.
Field Name | Type | Description |
---|---|---|
name | string |
Optional. A human readable name of the containerapp. |
appversion | string |
Optional. The semantic version string of the Container Application. |
description | string |
Optional. A human readable description of the Container Application. This may contain information for the deployer of the containerapp. |
license | License Object |
Optional. The license information for the containerapp. |
arbitrary_data | string |
Optional. Arbitrary key: value pair(s) of metadata. May contain nested objects. |
metadata:
name: myapp
appversion: 1.0.0
description: description of myapp
foo: bar
othermetadata:
foo: bar
files: file://path/to/local/file
...
License information for the Container Application.
Field Name | Type | Description |
---|---|---|
name | string |
Required. The human readable license name used for the Container Application, no format imposed. |
url | string |
Optional. A URL to the license used for the API. MUST be in the format of a URL. |
license:
- name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
The graph is a list of items (containerapps) the Container Application depends on.
Field Name | Type | Description |
---|---|---|
name | string |
Required. The name of the depending Container Application. |
source | docker:// |
Optional. docker:// source location of the Container Application, the source MUST be prefixed by docker:// . If source is present, all other fields SHALL be ignored. |
params | Params Object |
Optional. A list of Params Objects that contain provider specific information. If params is present, source field SHALL be ignored. |
artifacts | Artifact Object |
Optional. A list of Artifact Objects that contain provider specific information. If artifacts is present, source field SHALL be ignored. |
params:
- name: mariadb-centos7-atomicapp
source: docker://projectatomic/mariadb-centos7-atomicapp
...
If no artifacts
are specified, then an external Atomic App is pulled and installed from the docker://
source.
A list of Parameters the containerapp requires. Defaults may be set, otherwise user input is required.
Field Name | Type | Description |
---|---|---|
name | string |
Required. The name of the parameter. |
description | string |
Required. A human readable description of the parameter. |
default | string |
Optional. An optional default value for the parameter. |
params:
- name: image
description: wordpress image
default: wordpress
...
The list of requirements of the Container Application.
Field Name | Type | Description |
---|---|---|
persistentVolume | Persisent Volume Object |
Optional. An object that holds an array of persistent volumes. |
This describes a requirement for persistent, read-only or read-write storage that should be available to the containerapp on runtime. The name of this object MUST be "persistentVolume"
.
Despite the name, within Kubernetes and OpenShift this acts as a PersistentVolumeClaim.
Persistent Volume is only available for the following providers: kubernetes
Field Name | Type | Description |
---|---|---|
name | string |
Required. A name associated with the storage requirement. |
accessMode | string |
Required. Must be either: ReadWriteOnce, ReadOnlyMany or ReadWriteMany. |
size | integer |
Required. Size of the volume claim. |
requirements:
- persistentVolume:
name: "var-log-http"
accessMode: "ReadWriteOnce"
size: 4
- persistentVolume:
name: "var-log-https"
accessMode: "ReadOnlyMany"
size: 4
...
The Artifacts Object describes a list of provider specific artifact items. These artifact items will be used during the installation of the containerapp to deploy to the provider. Each provider key contains a list of artifacts.
Each artifact is a file location relative to the Nulecule
file.
Optionally, you may inherit from another compatible provider.
graph:
...
artifacts:
docker:
- file://artifacts/docker/hello-apache-pod_run
kubernetes:
- file://artifacts/kubernetes/hello-apache-pod.json
openshift:
- inherit:
- kubernetes
...
This is a full example of all features of the Nulecule file. This is only used as an example and does not necessarily work as intended.
---
specversion: 0.0.2
id: helloworld
metadata:
name: Hello World
appversion: 0.0.1
description: Hello earth!
license:
- name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
foo: bar
othermetadata:
foo: bar
files: file://path/to/local/file
graph:
- name: mariadb-centos7-atomicapp
source: docker://projectatomic/mariadb-centos7-atomicapp
- name: helloapache-app
params:
- name: image
description: The webserver image
default: centos/httpd
- name: hostport
description: The host TCP port as the external endpoint
default: 80
artifacts:
docker:
- file://artifacts/docker/hello-apache-pod_run
kubernetes:
- file://artifacts/kubernetes/hello-apache-pod.json
openshift:
- inherit:
- kubernetes
marathon:
- file://artifacts/marathon/helloapache.json
requirements:
- persistentVolume:
name: "var-log-httpd"
accessMode: "ReadWriteOnce"
size: 4