Remote node
Use kind: Agent to install Edgelet on a remote host over SSH and register that Edgelet node with the Controller.
Use this kind for a production host you can reach with SSH. Use Local node when Edgelet should run on the machine where potctl is running. Use AgentConfig when you only need to create or update the Controller record. The system Edgelet node on a Controller host belongs in control plane YAML, not in this kind. See Edgelet nodes.
A control plane must already be in the namespace. Host preparation is in Setup Edgelet nodes.
What deploy -f does
potctl deploy -f remote-agent.yaml -n my-ecn
- The namespace must already contain a control plane with a reachable Controller API.
- AgentConfig is applied first. That document is either explicit or synthesized from
spec.config. See Deploy phases. - potctl resolves
package, airgap, and WASM scope, merges optionalspec.scripts, and runs bootstrap on the host. - When
spec.configis set, AgentConfig may be updated again after bootstrap. - potctl provisions the node:
edgelet configwith the Controller URL, thenedgelet provision. - The node spec (SSH, UUID, timestamps) is stored under
~/.iofog/v3for the namespace.
Prerequisites
- Passwordless sudo on the remote host for bootstrap.
spec.host,spec.ssh.user, andspec.ssh.keyFile. Port defaults to 22.spec.config.archwhen you use airgap, WASM, or an architecture-specific package. Set it on every production node.metadata.nameis lowercase alphanumeric.default-routeris reserved.
potctl rejects a non-system Agent on the same hostname as the Controller public URL, except the reserved local name used for a vanilla local layout. Do not place fleet workloads on the Controller host by deploying this kind there. Use the control plane systemAgent block.
Controller endpoint
| Source | Used for |
|---|---|
spec.controllerEndpoint | Provision URL when set |
| Control plane in the namespace | Default endpoint from the stored control plane |
Examples
Minimal SSH install. Router and NATS roles default to edge and leaf when you omit them.
apiVersion: datasance.com/v3
kind: Agent
metadata:
name: edge-node-1
spec:
host: 10.0.0.50
ssh:
user: ubuntu
keyFile: ~/.ssh/id_rsa
package:
version: "1.1.0"
config:
arch: amd64
host: 10.0.0.50
Air-gapped host with explicit fabric roles and resource limits. Stage binaries and images before deploy. See Offline images and Airgap deployment.
apiVersion: datasance.com/v3
kind: Agent
metadata:
name: edge-airgap-1
spec:
host: 10.0.0.51
ssh:
user: ubuntu
keyFile: ~/.ssh/id_rsa
airgap: true
package:
version: "1.1.0"
config:
description: Air-gapped plant node
arch: amd64
host: 10.0.0.51
deploymentType: native
containerEngine: edgelet
memoryLimit: 4096
cpuLimit: 80
upstreamRouters:
- default-router
routerConfig:
routerMode: edge
messagingPort: 5671
upstreamNatsServers:
- default-nats-hub
natsConfig:
natsMode: leaf
natsServerPort: 4222
upstreamRouters and upstreamNatsServers are Edgelet node names. The named nodes must already exist on the Controller. Omit the lists to accept the default hub attachments. See Networking.
Custom install layers use spec.scripts. See Bootstrap.