Skip to main content

Specification

Organization types

There are three basic organization types:

  1. Provider: an organization that provides edge nodes
  2. Deployer: an organization that installs nodes at the edge
  3. User: an organization that deploys applications to edge nodes

Note that a deployer could be its own provider, the user could also be the deployer, etc.

Workspace

For gitops, the starting point is git repositories. The following lists the three primary repositories and the objects usually found in them.

  1. Provider repository.
    • Node
    • Node type
    • Shipment
  2. Deployer repository.
    • Placement
    • Placement rule
    • Schedule
    • Schedule plan
  3. User repository
    • Helm registry
    • Helm release

It is not required that the objects be in separate repositories. This organization is only a recommendation.

Objects

We follow the Kubernetes format for defining API objects. The general format is as follows:

apiVersion: edgecell.io/v1
kind: # the object type
metadata:
name: # identifier for this object
namespace: # in which the name is unique
uuid: # globally unique id
labels:
foo: bar # queriable name-value pairs
annotations:
goo: mar # see k8s docs for difference between labels and annotations
spec:
someproperty: somevalue # the spec is the object itself
status:

note

We use the format of Kubernetes objects because it is familiar and easy to use. These object types do not actually directly apply to a Kubernetes cluster.

Elements

  • apiVersion: Publisher and version of the object schema. Must be edgecell.io/v1
  • kind: the object type. See the child pages in this section.
  • labels: name-value pairs used to query and select objects
  • annotations: human readable values to provide details on objects
  • spec: the specification properties of the object
  • status: the status properties of the object

Object IDs

We refer to object with the combination of the namespace and name. If the namespace is mcdougals and the name is pilot-1 then the object ID is mcdougals/pilot-1.

The combination of namespace and name should be unique. The combination of namespace, name and kind must be unique.

The Edgecell VSCode extensions track and link the IDs across your workspace and check for duplicates and missing objects.

The tools automatically generate a UUID for each object, which is useful for some infrastructure, but a user does not need to worry with them.

References

More can be read here: