Skip to main content
Version: v3.8.0

Configuration reference

Edgelet stores settings in /etc/edgelet/config.yaml under profiles. Use edgelet config to update the active profile, or edit the file and send SIGHUP to reload.

For quick setup, see Configuration.

YAML vs CLI key names

The config file and edgelet config use slightly different names for some keys:

Config file keyedgelet config flag key
diskLimitdiskLimitGiB (--disk-limit-gib, -d)
memoryLimitmemoryLimitMiB (--memory-limit-mib, -m)
cpuLimitcpuLimitPercent (--cpu-limit-percent, -p)
logLimitlogLimitGiB (--log-limit-gib, -l)
changeFrequencychangeFrequencySeconds (--change-frequency-seconds, -cf)
statusFrequencystatusFrequencySeconds (--status-frequency-seconds, -sf)

Legacy aliases logDiskDirectory and logDiskLimit map to logDirectory and logLimit.

Controller push overrides

When provisioned, the Controller can push config changes via the field agent config/changes feed. Pushed values override local profile keys until changed again from the Controller or locally.

Reload behavior

CategoryHot reload (SIGHUP / edgelet system reload)Restart required
Frequencies, limits (monitor), log levelYes
logDirectoryYes
containerEngine, containerEngineUrlYes (cold engine change)
diskDirectoryYes

Embedded engine: data plane log settings also reload via systemctl kill -s HUP edgelet-containerd.


CLI-managed keys

Every key accepted by edgelet config:

KeyAliasTypeAllowed valuesDefaultNotes
controllerUrlastringURLhttp://localhost:54421/api/v3/Controller REST base
controllerCertacstringPEM file path/etc/edgelet/cert.crtController CA
containerEnginecestringedgelet, docker, podmanedgelet (linux)Platform validated
containerEngineUrlcustringsocket URLunix:///run/edgelet/containerd.sockExternal engine socket
networkInterfacenstringinterface namedynamicHost network binding
diskLimitGiBdfloatGiB10Monitor only — disk usage alert threshold
diskDirectorydlstringpath/var/lib/edgelet/SQLite + volume data root
memoryLimitMiBmfloatMiB4096Monitor only — not cgroup-enforced
cpuLimitPercentpfloatpercent80Monitor only — not cgroup-enforced
logLimitGiBlfloatGiB10Combined daemon log rotation budget
logDirectoryldstringpath/var/log/edgelet/Daemon log files
logFileCountlcintcount10Rotated files per series
logLevelllstringDEBUG, INFO, WARN, ERRORINFOHot reload
statusFrequencySecondssfintseconds10Status POST interval
changeFrequencySecondscfintseconds20Controller changes poll
deviceScanFrequencysdintseconds60Device scan interval
watchdogEnabledwdboolon/offtrueOrphan container cleanup
edgeGuardFrequencyegfintseconds00 disables Edge Guard; forced 0 when unprovisioned
gpsModegpsstringauto, dynamic, manual, offautoGPS integration
gpsCoordinatesgpscstringlat,lonemptyManual GPS
gpsDevicegpsdstringdevice path/dev/ttyUSB0NMEA device
gpsScanFrequencygpsfintseconds60GPS poll interval
archftstringauto, amd64, arm64, arm, riscv64autoNode architecture
secureModesecboolon/offoffSecure mode flag
pruningFrequencypfinthours0Image/volume prune cycle; 0 disables scheduled prune
availableDiskThresholddtintpercent20Low-disk prune trigger
upgradeScanFrequencyufinthours24OTA readiness scan
devModedevboolon/offoffDeveloper mode
timezonetzstringIANA zoneEurope/IstanbulNode timezone

Run edgelet config --help for the live flag list.


File-only keys (no edgelet config flag)

These appear in config.yaml or are set by provision/OTA:

KeyDefaultReloadNotes
iofogUuidemptySet by provision; empty when unprovisioned
shutdownPolicyleave-running (docker/podman), drain-all (embedded monolithic)partialleave-running or drain-all. See Workload continuity
shutdownGracePeriodSeconds90yesDrain timeout for maintenance stops
controllerRequestTimeoutSeconds30yesController HTTP client timeout
controllerPingTimeoutSeconds60yesConnectivity probe timeout
pingFrequencyderivedyesController ping worker interval (seconds)
logReconcileCycleEveryNTicks60yesReconcile log sampling
namespacedefaultAgent namespace metadata
timeZoneEurope/IstanbulSame as timezone

Private key material is stored in SQLite (agent_credentials), not in config.yaml.


Resource limits: monitor vs enforce

SettingScopeEnforced?
Node memoryLimit / cpuLimit / diskLimitEdgelet node hostMonitor only — status and alerts
Manifest spec.container.memoryLimitSingle microserviceEnforced by container engine (see Deploy manifests)

Profiles

currentProfile: production
profiles:
production:
controllerUrl: "http://localhost:51121/api/v3/"
containerEngine: edgelet
arch: auto

Switch without editing the file:

edgelet config switch production

See also

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