This repository demonstrates the capabilities of ioFog. It spins up the ioFog stack (Agent, Controller, and Connector) on a local machine in a Docker Compose environment. This basic ioFog stack setup constitutes a small, but fully configured Edge Compute Network (ECN).
Optionally, this demo also creates a sample application (microservices deployed on the ioFog stack).
This demo repository is used as supplementary materials for ioFog quickstart and ioFog tutorial guides.
The ioFog demo requires one of the following systems and tools to be installed. The scripts in this demo do not install any of these tools, but they check for sufficient versions.
Supported operating systems:
- Linux (kernel v3.10+)
- macOS 10.12+
Requires tools:
- Docker 1.10+ (installation instructions)
- iofogctl 1.3.0+ (installation instructions)
The main interaction with this demo repository is encapsulated into a set of simple scripts: start.sh
, test.sh
and stop.sh
. Interactions with the ioFog components can be done using a command line interface available in all the services of the stack, or using a REST API.
Spin up the blank ioFog stack (Agent, Controller, and Connector) on the local machine.
./start.sh
Verify the iofog stack is provisioned correctly. The automated tests run a smoke test suite on the blank ioFog stack, testing basic operations.
./test.sh
You can also verify manually that the ioFog stack containers are correctly started.
docker ps --filter "name=iofog"
When you are finished, tear down the ioFog stack and all services deployed on it.
./stop.sh
If you have a local image version of the Agent, Controller and Connector, you can chose to build the containers using those local images.
To do so, you will need a docker image for the Agent, the Connector and the Controller.
You can provide start.sh
with an option for each local package you want to use.
Command:
./start.sh -a gcr.io/focal-freedom-236620/agent:latest -cn gcr.io/focal-freedom-236620/connector:latest -ct gcr.io/focal-freedom-236620/controller:latest
./status.sh # Will show you all iofog-related containers currently running.
The simplest way to interact with Agent, Controller, and Connector deployed on a machine you have access to is to use the command line interface iofogctl
.
iofogctl help
For the purpose of this demo, all ioFog components are spun up in separate Docker containers. The Controller's container is called iofog-controller
.
Names for all the containers created in the demo are iofog-agent
, iofog-controller
and iofog-connector
.
The initialization scripts used to setup the ioFog stack / ECN are using the CLI interface. Feel free to refer to these for more inspiration.
Full reference of the CLI is available at the iofogctl github repository:
Full reference of the REST API for all ioFog stack components is available at the ioFog website:
- https://iofog.org/docs/1.0.0/controllers/rest-api.html
- https://iofog.org/docs/1.0.0/agents/local-api.html
- https://iofog.org/docs/1.0.0/connectors/api-reference.html
You can try using the REST API directly on your machine with the ioFog stack running.
curl --url 'http://0.0.0.0:51121/api/v3/status'
Apart from creating just the ioFog stack, we can also deploy an ioFog application on the stack. Here we demonstrate it on the tutorial application from the ioFog website.
First, create all services for a tutorial ioFog application. You don't have to start the iofog stack manually, it will be created if necessary.
./start.sh tutorial
When you are done with the tutorial, you can tear down the sample application together with the ioFog stack.
./stop.sh
if you only wish to delete the tutorial application:
iofogctl delete application tutorial
* services # Service Dockerfiles and customization files
- iofog
+ iofog-agent # Agent service files - part of the iofog stack
+ iofog-connector # Connector service files - part of the iofog stack
+ iofog-controller # Controller service files - part of the iofog stack
* init
- iofog # plain ioFog stack initialization yaml file
- tutorial # tutorial initialization yaml file
* test
+ conf # generated test configuration files
* azure-pipelines.yml
* docker-compose-iofog.yml
* docker-compose-tutorial.yml
* docker-compose-test.yml
* start.sh
* stop.sh
* test.sh
* utils.sh