elemental

Release Manifest Guide

The Release Manifest serves as a component-level descriptor of a solution’s system. It specifies the underlying components, their specific versions and pull locations, and bundles all this into a single manifest that can be versioned by consumers and leveraged by users to deploy as a unified, single version.

Ultimately, there are two types of release manifests:

Solution Release Manifest

NOTE: Elemental is in active development and the Solution manifest API may change over time.

IMPORTANT: The Solution Release Manifest is intended to be created, maintained and supported by the consumer.

Enables consumers to extend a specific Core Platform release with additional components tailored to their solution, bundling everything into a single versioned file called a Solution Release Manifest. Users will utilize this manifest to describe a new image base at build time, or upgrade a target during day 2 operations.

Solution Release Manifest API

Consumers who wish to create a release manifest for their solution should refer to the below API reference for information.

metadata:
  name: "SUSE Solution"
  version: "4.2.0"
  creationDate: "2025-07-10"
corePlatform:
  image: "registry.suse.com/elemental/rke2/rke2-manifest:1.35"
components:
  helm:
    charts:
    - chart: "cert-manager"
      version: "v1.17.2"
      namespace: "cert-manager"
      repository: "jetstack"
      values:
        crds:
          enabled: true
    - chart: "rancher"
      version: "2.11.1"
      namespace: "cattle-system"
      repository: "rancher"
      values:
        replicas: 1
      dependsOn:
      - "cert-manager"
      images:
      - name: "rancher"
        image: "registry.rancher.com/rancher/rancher:v2.11.1"
    repositories:
    - name: "rancher"
      url: "https://releases.rancher.com/server-charts/stable"
    - name: "jetstack"
      url: "https://charts.jetstack.io"

Bundle into an OCI image

As mentioned in the release.yaml configuration file, consumers can refer to a Solution Release Manifest from an OCI image. This section outlines the minimum steps needed for consumers and/or users to set up said image, while also outlining any caveats and recommendations for the process.

Steps:

  1. Create a solution release manifest YAML file by using the Solution Release Manifest API reference. Make sure you provide only components relevant to your solution and remove the example components from the reference.
  2. Using your build tool of choice, build your image with the created manifest copied inside of it.
    • Caveat: To be able to find the release manifest, Elemental’s tooling requires that the copied manifest’s name conforms to the release_manifest*.yaml glob pattern and that it is copied either under the root of the OS (/), or under /etc.
    • Recommendation: Since this image will only hold this file, it is advisable for the image to be as small as possible. Consider using base images such as scratch, or similar for your OCI image.

Core Platform Release Manifest

NOTE: Elemental is in active development and the Core Platform manifest API may change over time.

IMPORTANT: This manifest is maintained and provided by the Elemental team and is intended to act as a base for all Solution Release Manifests.

Defines the set of components that make up a specific Core Platform release version.

Core Platform Release Manifest API

IMPORTANT: This section is for informational purposes only. Consumers should always refer to a Core Platform release manifest provided by the Elemental team.

# The values shown in this example are for illustrative purposes only
# and should not be used directly
metadata:
  name: "SUSE Core Platform"
  version: "0.0.2"
  creationDate: "2025-07-14"
components:
  operatingSystem:
    image:
      base: "registry.suse.com/elemental/base-os-kernel-default:16.0"
      iso: "registry.suse.com/elemental/base-os-kernel-default-iso:16.0"
  kubernetes:
    version: "v1.35.5+rke2r1"
    image: "registry.suse.com/elemental/rke2/rke2:1.35.5_rke2r1"
  helm:
    charts:
    - name: "MetalLB"
      chart: "metallb"
      version: "0.15.0"
      namespace: "metallb-system"
      repository: "metallb-repo"
    repositories:
    - name: "metallb-repo"
      url: "https://metallb.github.io/metallb"

The manifest’s structure is similar to that of the Solution Release Manifest, with the key difference being the inclusion of components unique to the Core Platform (e.g. operatingSystem and kubernetes).

This reference focuses only on the unique to the Core Platform component APIs. Any components not mentioned here share the same description as those in the Solution Release Manifest.