Skip to main content
Version: v3.9.0

Deployment

This page is the host install. You use install.sh and the edgelet CLI. Joining a cluster with potctl and kind: Agent is documented in Edgelet nodes.

Production deployment topology for Edgelet on linux, darwin, and windows.

Installation, upgrade, rollback, and OTA readiness: see Installation.

Install script distribution​

install.sh and uninstall.sh are self-contained monoliths. Online install, airgap staging, and GitHub Releases need only those scripts plus the platform binary (or install.sh --bin-path=…). No co-located helper directories (scripts/lib/, packaging/init/, or similar) are required beside the scripts.

After install on linux, /usr/share/edgelet/ holds:

PathRole
install.sh, uninstall.shOTA lifecycle copies (same self-contained monoliths)
edgelet-config.yaml.sampleDefault config template
edgelet-controller-ca.crt.sampleLab bootstrap CA sample

Init units and edgelet-shutdown are written directly to system paths (/etc/systemd/system/, /usr/libexec/edgelet/, etc.) at install time. Not stored under /usr/share/edgelet/lib/ or /usr/share/edgelet/init/.

Product model​

PlatformBinaryEmbedded enginecontainerEngineDefault engine
linuxThin wrapper (~30 MB) + fat in zstd embedYesedgelet, docker, podmanedgelet
darwinMonolithicNodocker, podmandocker
windowsMonolithic .exeNodocker, podmandocker

Linux thin path: /usr/local/bin/edgelet → lazy extract → /var/lib/edgelet/data/current/bin/edgelet (fat).

Prerequisites​

PlatformRequirements
linuxRoot/sudo; Ubuntu 20.04+, RHEL 8+, Debian 11+ (or equivalent); network to Controller for online install
darwinAdmin for /usr/local/bin; Docker or Podman for containerEngine
windowsAdmin; Docker or Podman
edgelet engine (linux)No external container runtime
docker / podmanDocker 26.10+ or Podman 3.0+ on host

Controller CLI contract​

Orchestrators must not pass provision keys to install.sh.

  1. SSH to the edge host.
  2. Online: run install.sh on the remote (see Installation).
  3. Airgap: verify SHA256SUMS on the orchestrator → SCP binary → install.sh --airgap --bin-path=….
  4. Provision: SSH edgelet provision <key> (and edgelet config … as needed).

When deploying a local ControlPlane controller on a system fog, create that fog on Controller with isSystem: true so Edgelet can register the controller microservice after provision.

Daemon and systemd​

Production linux uses the thin binary as the service entry point:

edgelet daemon # extract fat bundle if needed → exec runtime
systemctl start edgelet # ExecStart=/usr/local/bin/edgelet daemon

Unit templates: packaging/init/systemd/edgelet.service. Init matrix: Init systems.

For docker or podman, systemd installs a drop-in After=docker.service (or podman). The daemon retries socket connection with backoff before staying in WARNING.

Embedded runtime layout (containerEngine: edgelet)​

PathRole
/var/lib/edgelet/data/<hash>/Content-addressed fat bundle extract
data/currentSymlink to active hash
data/previousLast current before rotation (manual / coordinated rollback). Older hash directories are pruned after a successful extract

Operator CLI (edgelet ms, edgelet deploy, ...) runs in the thin process and does not trigger extract.

Thin-binary and fat-bundle OTA: Installation. Workload impact: Workload continuity.

Runtime engine selection​

# /etc/edgelet/config.yaml
currentProfile: production
profiles:
production:
containerEngine: edgelet # linux default
containerEngineUrl: unix:///run/edgelet/containerd.sock
pruningFrequency: 24 # hours between image + unused-local-model prune cycles (not persistent VOLUME data)
watchdogEnabled: true # orphan container cleanup; also disables local models
arch: auto
upgradeScanFrequency: 24 # hours between OTA readiness scans
containerEngineLinux extract?Host requirement
edgeletYes (first daemon start)None
dockerNoDocker socket
podmanNoPodman socket

Verify:

edgelet --version
edgelet system version -o json | jq '{embeddedEngine, allowedEngines, containerEngine}'

Engine details: Container engines.

EdgeletAPI PKI​

Daemon creates /etc/edgelet/edgelet-api and TLS material on first start. CLI uses bearer token + edgeletapi-ca.crt.

Provisioning​

edgelet provision <provisioning-key>
edgelet system status
edgelet deprovision

Container image (linux)​

ItemValue
Imageghcr.io/datasance/edgelet:<tag> (multi-arch)
DockerfileRoot Dockerfile (scratch + CA certs layer)
Entrypointedgelet daemon
EnvEDGELET_DAEMON=container
Volumes/var/lib/edgelet, /etc/edgelet (optional override)
OTAOrchestrator replaces image tag (not install.sh)

Local IT tag: edgelet:local (EDGELET_IMAGE=edgelet:local in nested-docker smokes).

FogType (provision.type)​

IDArchitecture
1amd64
2arm64
3riscv64
4arm (32-bit)

Config arch values: auto, amd64, arm64, arm, riscv64.

See also​

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