Search documentation
karat

+

K

The Apollo Product Spec and Definition

The Apollo Product Specification defines a way of describing the properties, requirements and expectations of an Apollo product. The specification provides a simple, concise way to configure a Product that abstracts universal application requirements away from the underlying infrastructure platform (such as Kubernetes).

The specification includes a set of required components which define the intrinsic properties of an application and a set of optional (opt-in) extensions that enable more capabilities of the Spoke Control Plane.

An Apollo Product Definition is the definition of a service or application which conforms to the Apollo Product Specification. An Apollo Product Definition is intended to be versioned alongside a release of an Apollo Product and should be immutable for that Apollo Product Release.

Apollo Product Definitions are organized into different files, each of which have a specific purpose and enumerated Specification traits:

  • [Required] manifest.yml: Declares the intrinsic properties of an Apollo Product Release. The values of the specification attributes are immutable and cannot be changed later. This file is required for every Apollo Product Definition.

The individual components of an Apollo Product Definition are packaged into a compressed tarball and sent to Apollo as part of the Apollo Product Release registration process. Once published, the Apollo Product Definition will be represented as an Apollo Product Release within the Apollo Hub.

Declaring product traits

Based on their intended functions, services have different traits which describe their behavior or requirements. Traits represent required Product attributes (e.g. required memory allocations, service ports, certs for TLS-based communication) and the implementation of these traits is deferred to the Spoke Control Plane.

The Apollo Product Specification defines a small set of required properties to be defined in all Apollo Product Definitions in the Product's manifest.yml, regardless of Product type. These properties allow Apollo to understand how to model a Product Release. See the manifest specification docs for further details.