In this tutorial, we'll go through the basic functionality of iofogctl
. This tutorial will get us up and running with iofogctl
and show how to deploy and operate a live cluster.
iofogctl
is a CLI tool for installation, configuration, and operation of ioFog Edge Compute Networks (ECNs).
It can be used to remotely manage multiple different clusters from a single host. It is built for an ioFog user and a DevOps engineer who may want to manage ioFog clusters.
In order to use iofogctl
to deploy ioFog components on remote environments, we'll need to provide our own infrastructure. This infrastructure will involve a set of remote hosts and, optionally, a Kubernetes cluster.
For Kubernetes clusters, all you need is a valid Kubernetes config file on the machine that iofogctl
is running.
For remote hosts, please follow these instructions.
Mac users can use Homebrew:
brew tap eclipse-iofog/iofogctl
brew install iofogctl@1.2
Linux users can use deb or rpm packages:
curl -s https://packagecloud.io/install/repositories/iofog/iofogctl/script.deb.sh | sudo bash
sudo apt-get install iofogctl=1.2.5
curl -s https://packagecloud.io/install/repositories/iofog/iofogctl/script.rpm.sh | sudo bash
sudo yum install iofogctl-1.2.5-1.x86_64
For developers and users aiming for the latest features, iofogctl
can be installed in the usual Go fashion directly from its GitHub repository.
go get -u github.com/eclipse-iofog/iofogctl/cmd/iofogctl
Let's verify if iofogctl
has been installed successfully. Run iofogctl version
to check if the binary is up to date.
To list all available commands, just run iofogctl
without any arguments. The available commands should look something like this:
$ iofogctl
_ ____ __ __
(_)___ / __/___ ____ _____/ /_/ /
/ / __ \/ /_/ __ \/ __ `/ ___/ __/ /
/ / /_/ / __/ /_/ / /_/ / /__/ /_/ /
/_/\____/_/ \____/\__, /\___/\__/_/
/____/
Welcome to the cool new iofogctl CLI!
Use `iofogctl version` to display the current version.
Usage:
iofogctl [flags]
iofogctl [command]
Available Commands:
connect Connect to an existing ioFog cluster
create Create a resource
delete Delete an existing ioFog resource
deploy Deploy ioFog platform or components on existing infrastructure
describe Get detailed information of existing resources
disconnect Disconnect from an ioFog cluster
get Get information of existing resources
help Help about any command
legacy Execute commands using legacy CLI
logs Get log contents of deployed resource
version Get CLI application version
Flags:
--config string CLI configuration file (default is ~/.iofog.yaml)
-h, --help help for iofogctl
-n, --namespace string Namespace to execute respective command within (default "default")
Use "iofogctl [command] --help" for more information about a command.
All actions performed with iofogctl
are scoped to a single namespace. The default namespace ('default') is used if the user does not specify a namespace explicitly in the command. Note that namespaces in iofogctl
do not have to correspond with namespaces in Kubernetes cluster.
Try creating, listing, and deleting namespaces now with the following commands.
iofogctl create namespace mynamespace
iofogctl get namespaces
iofogctl delete namespace mynamespace
Next, we will use the default namespace to create new ioFog resources in it.
iofogctl
allows you to deploy entire Edge Compute Networks ('ECN') from a single command.
iofogctl deploy -f ecn.yaml
Specifications of the YAML types can be found here
Instead of deploying our own ECN, we can connect to an existing one.
iofogctl connect Controller-1 --controller <ip address> --email <email address> --pass <password>
Or for Kubernetes Controllers:
iofogctl connect Controller-1 --kube-config <~/.kube/config> --email <email address> --pass <password>
Note that we must specify an empty or non-existent namespace when we use the connect command. This is because each cluster should be in its own namespace.
Now that we are connected to a live ioFog cluster, we can go ahead and do some introspection.
Try to display individual resources or all resources within a namespace with the get command:
iofogctl get controllers
iofogctl get agents
iofogctl get all
To get more detailed information, we can use the describe command:
iofogctl describe controller <Controller Name>
iofogctl describe agent <Agent Name>
When we are finished working with the cluster, we can disconnect from it and release the corresponding namespace from iofogctl
.
iofogctl disconnect
We can delete resources that we have deployed to free up any associated infrastructure. Deleting resources like Control Planes, Controllers, Connectors, and Agents will cause any corresponding daemons to be terminated on the remote hosts.
iofogctl delete controller <Name>
iofogctl delete agent <Name>
To undo a deletion, we can simply re-run the corresponding deploy command for the deleted resource.
If we want to wipe an entire ECN, we can run:
iofogctl delete all