Skip to main content
Version: v3.9.0

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
deploy
  1. The namespace must already contain a control plane with a reachable Controller API.
  2. AgentConfig is applied first. That document is either explicit or synthesized from spec.config. See Deploy phases.
  3. potctl resolves package, airgap, and WASM scope, merges optional spec.scripts, and runs bootstrap on the host.
  4. When spec.config is set, AgentConfig may be updated again after bootstrap.
  5. potctl provisions the node: edgelet config with the Controller URL, then edgelet provision.
  6. The node spec (SSH, UUID, timestamps) is stored under ~/.iofog/v3 for the namespace.

Prerequisites​

  • Passwordless sudo on the remote host for bootstrap.
  • spec.host, spec.ssh.user, and spec.ssh.keyFile. Port defaults to 22.
  • spec.config.arch when you use airgap, WASM, or an architecture-specific package. Set it on every production node.
  • metadata.name is lowercase alphanumeric. default-router is 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​

SourceUsed for
spec.controllerEndpointProvision URL when set
Control plane in the namespaceDefault endpoint from the stored control plane

Examples​

Minimal SSH install. Router and NATS roles default to edge and leaf when you omit them.

remote-agent.yaml
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.

remote-agent-airgap.yaml
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.

Fields​

Agent fields

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