Volumes
A volume stages a directory from the machine running potctl onto Edgelet nodes named in spec.agents. The record lives in CLI namespace config (~/.iofog/v3), not in the Controller API.
The short map is Config, secrets, and volumes. Fields are on Volume fields. Directory staging from the node side is also described in Volume distribution.
A volume mount publishes a Secret or ConfigMap. Attach applies to that object. A Volume lists its Edgelet nodes in its own spec.
When to use it
Use a Volume when the files already exist as a directory on the operator machine and should be copied onto specific Edgelet nodes. Enroll those nodes first.
For remote nodes, spec.source must be a directory on the operator machine, and SSH must be configured on the node. A loopback host on the remote path fails: volume deployment is not supported for local agents on that path.
A local Edgelet node records the volume and uses the host filesystem directly. The CLI warns that the copy is unnecessary. If source and destination differ, it also warns about bind confusion.
What deploy does
potctl deploy -f volume.yaml -n my-ecn
For each remote Edgelet node, deploy copies spec.source to spec.destination over SSH, then saves the volume in namespace config. There is no attach. Re-deploy updates that local record and copies again.
apiVersion: datasance.com/v3
kind: Volume
metadata:
name: model-weights
namespace: my-ecn
spec:
name: model-weights
agents:
- edge-01
source: /data/models-src
destination: /var/lib/iofog/volumes/model-weights
permissions: "0755"
metadata.name and spec.name should match. The CLI sets spec.name from metadata when you deploy from a file.
How a microservice uses it
Set type: volume and hostDestination to the volume name. scope is private or shared and applies only to this type. The mapping table is on Microservice fields.
apiVersion: datasance.com/v3
kind: Microservice
metadata:
name: line-monitor/reader
spec:
container:
volumes:
- type: volume
hostDestination: model-weights
containerDestination: /models
accessMode: rw
scope: private
CLI
potctl get volumes -n my-ecn
potctl describe volume model-weights -n my-ecn
potctl delete volume model-weights -n my-ecn
describe volume reads namespace config. delete volume removes staged data on the nodes (best effort per node) and drops the config entry. Deleting an Edgelet node removes that node from volume agent lists, or deletes a volume that only named that node.
Console
Volumes are a CLI flow. The console chapter has no Volume screen.