ReductStore Charm

Anthony Publisher

Platform:

Channel Revision Published Runs on
latest/stable 19 27 Aug 2026
Ubuntu 22.04
latest/stable 18 27 Aug 2026
Ubuntu 22.04
latest/edge 22 30 Sep 2026
Ubuntu 22.04
latest/edge 21 30 Sep 2026
Ubuntu 22.04
juju deploy reductstore-k8s

High-performance, time-indexed object storage for robotics and industrial IoT

reductstore-k8s

Charmhub package name: reductstore-k8s
More information: https://charmhub.io/reductstore-k8s

This charm deploys ReductStore, a time-indexed object store for high-frequency unstructured data, on Kubernetes with Pebble, persistent storage, and optional ingress/COS catalogue integration.

Building

Install Charmcraft and run the tests before packing the charm:

tox
charmcraft pack --platform amd64

The pack command creates reductstore-k8s_amd64.charm in the repository root. Run it on an arm64 host with --platform arm64 to create an arm64 artifact.

To build all platforms declared in charmcraft.yaml using Launchpad builders, use:

charmcraft remote-build

Remote builds require a Launchpad account and download the resulting charm artifacts to the repository root.

Deploying

Deploy the stable charm from Charmhub into the current Kubernetes model:

juju deploy reductstore-k8s --channel latest/stable
juju status reductstore-k8s --watch 2s

To test the most recent development release, replace latest/stable with latest/edge.

For local development, deploy the packed charm and provide its OCI image resource explicitly:

juju deploy ./reductstore-k8s_amd64.charm reductstore-k8s \
  --resource reductstore-image=reduct/store:v1.20.11

Configure a stable ReductStore instance name when needed:

juju config reductstore-k8s instance-name=production-reductstore

Integrate optional ingress and Catalogue applications after they have been deployed:

juju integrate reductstore-k8s:ingress traefik-k8s:ingress
juju integrate reductstore-k8s:catalogue catalogue-k8s:catalogue

If reductstore-k8s already exists in the model, update it instead of deploying another application:

juju refresh reductstore-k8s --channel latest/edge

Refreshing preserves the application's configuration, relations, and persistent storage.

Publishing

Stable releases are published by GitHub Actions from strict final SemVer tags (vX.Y.Z) that point to a commit already merged into main. The release workflow runs workflow linting, Python linting, static typing, unit tests, MicroK8s integration tests, and native amd64/arm64 builds before requesting approval for the protected stable environment. It then publishes both architectures and their matching OCI resource revisions to latest/stable.

To release a merged commit:

git tag -a v1.2.3 -m "Release charm v1.2.3"
git push origin v1.2.3

To republish an existing release tag, use Actions > Publish stable release > Run workflow and enter the exact tag. This is intentionally limited to existing strict SemVer tags reachable from main; it cannot publish arbitrary commits or images.

Repository setup

Before enabling publication, a repository administrator must create the stable GitHub environment and configure a required reviewer. Create a package-scoped Charmhub token with package-manage permission limited to the reductstore-k8s package and latest/stable channel. Store it only as the CHARMHUB_TOKEN environment secret on stable, then rotate it before it expires. No other Actions secret is used for publication.

The release workflow derives the workload image from the tagged charmcraft.yaml and rejects floating latest images. The existing v1.0.0 tag is the sole compatibility exception: its source metadata is asserted to contain reduct/store:latest, but the runner temporarily uses reduct/store:v1.20.11 for testing and publication. Future releases must pin their reviewed image in charmcraft.yaml.

Recovery Commands

Use these commands only to inspect or recover a known Charmhub revision; normal publishing is performed by the release workflow:

charmcraft login
charmcraft status reductstore-k8s
charmcraft release reductstore-k8s \
  --revision=<CHARM_REVISION> \
  --channel=latest/stable \
  --resource=reductstore-image:<RESOURCE_REVISION>

Charm and resource revisions are independent. A rerun can safely recover a partial two-architecture release because Charmhub deduplicates matching uploads; confirm the final channel map with charmcraft status reductstore-k8s.

Other resources

See the Juju SDK documentation for more information about developing and improving charms.