Skip to content

List of apps and helm charts used for cluster provisioning

Argo CD

Tailscale operator

Akri

Overview

Akri docs.akri.sh is a Kubernetes framework that discovers and exposes heterogeneous devices (such as USB devices, cameras, GPIO, etc.) as cluster resources. Instead of hard-coding host paths like /dev/ttyUSB0 in your pods, Akri:

  • Discovers devices based on attributes such as idVendor and idProduct.
  • Registers them as custom resources (e.g. akri.sh/zigbee).
  • Exposes them via Akri Instances that pods can request and consume.

This allows USB devices (for example Zigbee sticks) to be consumed by pods via Akri Instances instead of hard-coding /dev/tty* paths.

How Akri works (high level)

  • Akri agent runs as a DaemonSet on each node.
  • It watches udev events and device attributes (e.g. USB idVendor/idProduct).
  • When a device matches an Akri Configuration, the agent:
  • Registers the device as an Akri resource on the node.
  • Creates an Akri Instance representing that specific device.
  • Pods can then:
  • Request the Akri resource in their resources.requests/limits.
  • Optionally mount the device path exposed via the Instance.

This model is especially useful in multi-node clusters where devices may appear on different nodes or be hot-plugged.

Key concepts

  • Akri Configuration
    Defines how to discover devices (e.g. by udev rules, idVendor/idProduct, etc.) and how to represent them in Kubernetes.

  • Akri Instance
    A concrete representation of a discovered device. Each physical device that matches a Configuration becomes an Instance.

  • Akri resource
    The custom resource name (e.g. akri.sh/zigbee) that appears in node capacity/allocatable and can be requested by pods.

Why use Akri instead of direct /dev mounts?

  • Portability: Pods request a logical device resource instead of a specific host path.
  • Scheduling: Kubernetes can schedule pods to nodes that actually have the device.
  • Hot-plug support: Devices can be added/removed and Akri will update Instances accordingly.
  • Multi-device abstraction: Multiple similar devices can be managed uniformly via Configurations.