Awesome
This is early alpha version! There's not all features yet implemented, not heavily tested with different devices and code might get large breaking changes until the first release.
Eliot is a open source system for managing containerized applications on top of the IoT device with an emphasis to usability, simplicity, security and stability. Eliot gives simplified app delivery, isolation and additional security to traditional installations.
Docker and Kubernetes have inspired heavily and if you're familiar with those, you find really easy to get started with Eliot.
<sub>Built with ❤︎ by Erno Aapa and contributors</sub>
Usage
Eliot is based on top of the containerd to provide simple, Kubernetes like API for managing containers.
Eliot is built from following components
eli
- Command line tool for managing the deviceeliotd
- Daemon for the device to manage containers
Features
- Manage running containers in the device
- Attach to container process remotely for debugging
- Fast develop-in-device development start
Let us know what would be the next awesome feature :)
Getting started
See the documentation how to get started with Eliot.
Rest of this document is about developing Eliot itself, not how to develop on top of the Eliot.
Development
Prerequisites
- Install Git
- Install Golang 1.10
- Install Docker
- Install Linuxkit
- Install goreleaser (for building
eliotd
) - Get Eliot source code
git clone https://github.com/ernoaapa/eliot && cd eliot
Developing eli
cli
If you're making changes to the eli
command line tool, you can just build and run the command
go run ./cmd/eli/* get nodes
Developing eliotd
daemon
To develop eliotd
there's two different ways; latter is not tested
- run
eliotd
in EliotOS with Linuxkit - run
eliotd
daemon locally
Run EliotOS locally
For development purpose, you can build and run the EliotOS locally, but keep in mind that the environment is amd64 not arm64 so container images what work in this environment might not work in RaspberryPI if the images are not multi-arch images.
- Build
eliotd
binary and Docker imagegoreleaser --snapshot --rm-dist
- Get EliotOS linuxkit configuration
curl https://raw.githubusercontent.com/ernoaapa/eliot-os/master/rpi3.yml > rpi3.yml
- Update
rpi3.yml
- Check from
goreleaser
theamd64
container image name - Edit the
rpi3.yml
and update theeliotd
image tag to match with the previous value
- Check from
- Build EliotOS image:
linuxkit build rpi3.yml
- Start image:
- MacOS:
sudo linuxkit run hyperkit -cpus 1 -mem "1048" -disk size=10G -networking vmnet moby
- MacOS:
- Test connection
eli get nodes
Run eliotd
locally
This is not tested, but should go roughly like this:
- Install runc
- Install containerd
- Run
go run ./cmd/eliotd/* --debug --grpc-api-listen 0.0.0.0:5000