Skip to main content
Version: v3.8.0

Catalog Item YAML Specification

potctl manages the Controller microservice catalog. Each catalog item can list up to four container images, one per architecture. See Microservice Registry and Catalog Management for workflow context.

v3.8.0: multi-arch catalog images

Legacy x86 and arm fields are removed. Use amd64, arm64, riscv64, and arm (32-bit) under spec. Set at least one image. The Controller stores them as images[] with { containerImage, archId }.

Single-architecture example

---
apiVersion: datasance.com/v3
kind: CatalogItem
metadata:
name: alpine-amd64
spec:
description: Alpine Linux for amd64 Edgelet nodes
amd64: ghcr.io/datasance/alpine:3.20
registry: remote
configExample: '{"key": "value"}'

Multi-architecture example

Provide one image reference per architecture your microservices need. Omit architectures you do not use.

---
apiVersion: datasance.com/v3
kind: CatalogItem
metadata:
name: my-multiarch-microservice
spec:
description: Alpine Linux across four architectures
amd64: ghcr.io/datasance/alpine:3.20
arm64: ghcr.io/datasance/alpine:3.20
riscv64: ghcr.io/datasance/alpine:3.20
arm: ghcr.io/datasance/alpine:3.20
registry: remote
configExample: '{"key": "value"}'

Deploy with:

potctl deploy -f catalog-item.yaml

Architecture IDs

Each YAML key maps to a Controller archId when the catalog item is stored:

YAML key (spec)archIdArchitecture
amd64164-bit x86 (linux/amd64)
arm64264-bit ARM (linux/arm64)
riscv64364-bit RISC-V (linux/riscv64)
arm432-bit ARM (linux/arm)

auto (archId 0) is valid on Edgelet nodes but not on catalog image entries.

On the Controller REST API, each entry becomes one element in images[]:

{ "containerImage": "ghcr.io/datasance/alpine:3.20", "archId": 1 }

Field reference

FieldDescription
metadata.nameUnique catalog item name (lowercase alphanumeric).
spec.idAssigned by the Controller. Read only after create.
spec.descriptionHuman-readable description.
spec.amd64Container image for amd64 Edgelet nodes.
spec.arm64Container image for arm64 Edgelet nodes.
spec.riscv64Container image for riscv64 Edgelet nodes.
spec.armContainer image for 32-bit ARM Edgelet nodes.
spec.registryImage source: local, remote, or a registry ID number.
spec.configExampleExample microservice config as a YAML map. Stored as JSON on the Controller.

At least one of amd64, arm64, riscv64, or arm is required.

The configExample field is a YAML map of key-value pairs. The Controller stores it as a stringified JSON object, similar to microservice configuration payloads.

Group 3See anything wrong with the document? Help us improve it!