Skip to main content

Control Plane YAML Specification

potctl allows users to deploy Edge Compute Networks ('ECNs'). The various resources which constitute an ECN are specified within YAML files for potctl to consume.

Kubernetes Control Plane

The Kubernetes Control Plane specifies all the resources required to deploy the ioFog Control Plane on a Kubernetes cluster.

apiVersion: datasance.com/v3
kind: KubernetesControlPlane
metadata:
name: buffalo
namespace: default
spec:
iofogUser:
name: Foo
surname: Bar
email: user@domain.com
password: g9hr823rhuoi
config: ~/.kube/config
FieldDescription
iofogUserCredentials registered against ioFog Controller REST API.
configPath to Kubernetes configuration file that potctl uses to install Controller service to Kubernetes cluster. (Note: The namespace used with potctl will be the kubernetes namespace to which your components will be deployed)

Remote Control Plane

The Remote Control Plane component specifies all the resources required to deploy the ioFog Control Plane on a set of remote hosts.

apiVersion: datasance.com/v3
kind: ControlPlane
metadata:
name: buffalo
namespace: default
spec:
iofogUser:
name: Foo
surname: Bar
email: user@domain.com
password: g9hr823rhuoi
controllers:
- name: vanilla
host: 30.40.50.3
ssh:
user: foo
keyFile: ~/.ssh/id_rsa
port: 22
FieldDescription
iofogUserCredentials registered against ioFog Controller REST API.
controllersList of Controller instances.
controller.nameUser-defined unique identifier of Controller instance within an potctl namespace. Must start and end with lowercase alphanumeric character. Can include '-' character.
controller.hostHostname of remote host that potctl must SSH into to install Controller service.
controller.ssh.userUsername of remote host that potctl must SSH into to install Controller service.
controller.ssh.keyFilePath to private SSH key that potctl must use to SSH into remote host to install Controller service.
controller.ssh.portPort to use with SSH. Optional (default: 22).

Local Control Plane

The Local Control Plane component specifies all the resources required to deploy the ioFog Control Plane as a local docker container.

apiVersion: datasance.com/v3
kind: LocalControlPlane
metadata:
name: buffalo
namespace: default
spec:
iofogUser:
name: Foo
surname: Bar
email: user@domain.com
password: g9hr823rhuoi
controller:
container:
image: iofog/controller:3.0.0
FieldDescription
iofogUserCredentials registered against ioFog Controller REST API.
controllerController specification.
controller.imageDocker image to use as the Controller.

Remote Controller

We can expand a Remote Control Plane by deploying a new Controller.

apiVersion: datasance.com/v3
kind: Controller
metadata:
name: alpaca
namespace: default
spec:
host: 30.40.50.5
ssh:
user: foo
keyFile: ~/.ssh/id_rsa
port: 22
FieldDescription
nameUser-defined unique identifier of Controller instance within an potctl namespace. Must start and end with lowercase alphanumeric character. Can include '-' character.
hostHostname of remote host that potctl must SSH into to install Controller service.
ssh.userUsername of remote host that potctl must SSH into to install Controller service.
ssh.keyFilePath to private SSH key that potctl must use to SSH into remote host to install Controller service.
ssh.portPort to use with SSH. Optional (default: 22)

Edge Compute Network

An entire ECN can be specified within a single YAML file.

Multiple resources can be incorporated into a single YAML file using --- as a separator.

---
apiVersion: datasance.com/v3
kind: ControlPlane
metadata:
name: buffalo
namespace: default
spec:
iofogUser:
name: John
surname: Doe
email: user@example.com
password: mysecretpw
controllers:
- name: alpaca-1
host: 30.40.50.3
ssh:
user: john
keyFile: ~/.ssh/id_rsa
- name: alpaca-2
host: 30.40.50.4
ssh:
user: john
keyFile: ~/.ssh/id_rsa
---
apiVersion: datasance.com/v3
kind: Agent
metadata:
name: hippo-1
namespace: default
spec:
host: 30.40.50.6
ssh:
user: john
keyFile: ~/.ssh/id_rsa
---
apiVersion: datasance.com/v3
kind: Agent
metadata:
name: hippo-2
namespace: default
spec:
host: 30.40.50.7
ssh:
user: john
keyFile: ~/.ssh/id_rsa