Edgelet deployment
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=…).
After install on linux, /usr/share/edgelet/ holds:
| Path | Role |
|---|---|
install.sh, uninstall.sh | OTA lifecycle copies |
edgelet-config.yaml.sample | Default config template |
edgelet-controller-ca.crt.sample | Lab bootstrap CA sample |
Init units and edgelet-shutdown are written directly to system paths at install time.
Product model
| Platform | Binary | Embedded engine | containerEngine | Default engine |
|---|---|---|---|---|
| linux | Thin wrapper (~30 MB) + fat in zstd embed | Yes | edgelet, docker, podman | edgelet |
| darwin | Monolithic | No | docker, podman | docker |
| windows | Monolithic .exe | No | docker, podman | docker |
Linux thin path: /usr/local/bin/edgelet → lazy extract → /var/lib/edgelet/data/current/bin/edgelet (fat).
Prerequisites
| Platform | Requirements |
|---|---|
| linux | Root/sudo; Ubuntu 20.04+, RHEL 8+, Debian 11+ (or equivalent); network to Controller for online install |
| darwin | Admin for /usr/local/bin; Docker or Podman for containerEngine |
| windows | Admin; Docker or Podman |
| edgelet engine (linux) | No external container runtime |
| docker / podman | Docker 26.10+ or Podman 3.0+ on host |
potctl contract
Orchestrators must not pass provision keys to install.sh.
- SSH to the edge host.
- Online: run
install.shon the remote (see Installation). - Airgap: verify
SHA256SUMSon the orchestrator → SCP binary →install.sh --airgap --bin-path=…. - Provision: SSH
edgelet provision <key>(andedgelet 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
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)
| Path | Role |
|---|---|
/var/lib/edgelet/data/<hash>/ | Content-addressed fat bundle extract |
data/current | Symlink to active hash |
data/previous | Last current before rotation (manual / coordinated rollback) |
Operator CLI (edgelet ms, edgelet deploy, …) runs in the thin process and does not trigger extract.
Thin-binary and fat-bundle OTA: Installation.
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 prune cycles
watchdogEnabled: true # orphan container cleanup
arch: auto
upgradeScanFrequency: 24 # hours between OTA readiness scans
containerEngine | Linux extract? | Host requirement |
|---|---|---|
| edgelet | Yes (first daemon start) | None |
docker | No | Docker socket |
podman | No | Podman socket |
Verify:
edgelet --version
edgelet system version -o json | jq '{embeddedEngine, allowedEngines, containerEngine}'
Full config reference: Configuration.
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
In Controller YAML you still declare kind: Agent. In UI prose the enrolled host is an Edgelet node.
Container image (linux)
| Item | Value |
|---|---|
| Image | ghcr.io/datasance/edgelet:1.0.0 (multi-arch manifest) |
| Entrypoint | edgelet daemon |
| Env | EDGELET_DAEMON=container |
| Volumes | /var/lib/edgelet, /etc/edgelet (optional override) |
| OTA | Orchestrator replaces image tag (not install.sh) |
Architectures (arch)
| Name | archId |
|---|---|
| auto | 0 |
| amd64 | 1 |
| arm64 | 2 |
| riscv64 | 3 |
| arm (32-bit, armv7) | 4 |
Config arch values: auto, amd64, arm64, arm, riscv64.
See also
- Installation -
install.sh, OTA, readiness, upgrade/rollback - Architecture - thin/fat model
- Control plane on node - local Controller via
kind: ControlPlane - Setup Edgelet Nodes - fleet provisioning with potctl