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.
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) | archId | Architecture |
|---|---|---|
amd64 | 1 | 64-bit x86 (linux/amd64) |
arm64 | 2 | 64-bit ARM (linux/arm64) |
riscv64 | 3 | 64-bit RISC-V (linux/riscv64) |
arm | 4 | 32-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
| Field | Description |
|---|---|
metadata.name | Unique catalog item name (lowercase alphanumeric). |
spec.id | Assigned by the Controller. Read only after create. |
spec.description | Human-readable description. |
spec.amd64 | Container image for amd64 Edgelet nodes. |
spec.arm64 | Container image for arm64 Edgelet nodes. |
spec.riscv64 | Container image for riscv64 Edgelet nodes. |
spec.arm | Container image for 32-bit ARM Edgelet nodes. |
spec.registry | Image source: local, remote, or a registry ID number. |
spec.configExample | Example 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.