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.
This section will explain key aspects of
iofogctl's design and functionality for the purposes of understanding the CLI in greater detail.
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 update Update an existing ioFog resource version Get CLI application version Flags: --config string CLI configuration file (default is ~/.iofog/config.yaml) -h, --help help for iofogctl --http-verbose Toggle for displaying verbose output of API client -n, --namespace string Namespace to execute respective command within (default "default") -v, --verbose Toggle for displaying verbose output of iofogctl Use "iofogctl [command] --help" for more information about a command.
You can also find all available commands, and a detailled documentation of their usage on our github repository.
Some commands have sub-commands. For example, the
deploy command has sub-commands
connector. You can use the
--help flag on every command, including sub-commands, to learn more. Go ahead and try some of the following:
iofogctl deploy --help iofogctl create --help iofogctl connect --help iofogctl deploy controller --help iofogctl get --help
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 map to a Kubernetes namespace when
iofogctl is used for a Kubernetes deployment of ioFog.
Try creating, listing, and deleting namespaces now with the following commands.
iofogctl create namespace zoo-1 iofogctl get namespaces iofogctl delete namespace zoo-1
Next, we will use the default namespace while exploring
iofogctl allows you to deploy entire Edge Compute Networks ('ECN') from a single command.
iofogctl deploy -f ecn.yaml
iofogctl also allows you to deploy indvidiual components of an ECN from various subcommands.
iofogctl deploy controlplane -f controlplane.yaml iofogctl deploy controller -f controller.yaml iofogctl deploy connector -f connector.yaml iofogctl deploy agent -f agent.yaml iofogctl deploy application -f application.yaml
iofogctl deploy commands are designed to be idempotent. Feel free to spam these commands as much as you like - the end result will always be the same. If anything goes wrong with your deployment, run the relevant deploy commands again and you should be good to go.
Instead of deploying our own ECN, we can connect to an existing one.
Note that we must always specify an empty or non-existent namespace when we use the connect command. This is because each cluster should be in its own namespace. Don't forget that not specifying the namespace default to
iofogctl connect alpaca-1 --controller 126.96.36.199 --email firstname.lastname@example.org --pass h9g84q
Or for Kubernetes Controllers, we can use
--kube-config to specify the ioFog deployment to connect to. Keep in mind that in
iofogctl --namespace parameter must match the Kubernetes namespace where the Controller is deployed, otherwise
iofogctl is unable to find the service.
iofogctl connect alpaca-2 --kube-config ~/.kube/config --email email@example.com --pass h9g84q
Once we are connected to a live ECN, 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 connectors iofogctl get agents iofogctl get applications iofogctl get microservices iofogctl get all
To get more detailed information, we can use the describe command:
iofogctl describe controlplane iofogctl describe controller alpaca-1 iofogctl describe connector meerkat-2 iofogctl describe agent kiwi-1 iofogctl describe application health-care-app iofogctl describe microservice health-care-ui
When we are finished working with the cluster, we can disconnect from it and release the corresponding namespace from
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 alpaca-1 iofogctl delete connector meerkat-2 iofogctl delete agent kiwi-1 iofogctl delete application health-care-app iofogctl delete microservice health-case-ui
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
or, if we also want to delete the namespace, we can run:
iofogctl delete namespace zoo-1 --force