Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix containerd connection #52

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
defaults: &defaults
docker:
- image: circleci/golang:1.10
- image: circleci/golang:1.11
working_directory: /go/src/github.com/ernoaapa/eliot

version: 2
Expand Down
5 changes: 3 additions & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
image: golang:1.10-stretch
image: golang:1.11-stretch

variables:
REPO_NAME: github.com/ernoaapa/eliot
Expand All @@ -25,7 +25,8 @@ build:
- arm64
script:
- ./build/install-build-tools.sh
- goreleaser --snapshot
- mkdir $(pwd)/.tmp
- TMPDIR="$(pwd)/.tmp" goreleaser --snapshot
artifacts:
paths:
- dist/
Expand Down
2 changes: 1 addition & 1 deletion .goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ nfpm:
- deb

dependencies:
- containerd (>= 1.1.0)
- containerd (>= 1.1.3)

files:
"build/etc/systemd/system/eliotd.service": "/etc/systemd/system/eliotd.service"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Eliot is built from following components

### Prerequisites
- [Install Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [Install Golang 1.10](https://golang.org/doc/install)
- [Install Golang 1.11](https://golang.org/doc/install)
- [Install Docker](https://docs.docker.com/install/)
- [Install Linuxkit](https://github.com/linuxkit/linuxkit#build-the-linuxkit-tool)
- [Install goreleaser](https://goreleaser.com/#introduction.installing_goreleaser) (for building `eliotd`)
Expand Down
2 changes: 1 addition & 1 deletion cmd/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,8 +194,8 @@ func GetRuntimeClient(clicontext *cli.Context, hostname string) runtime.Client {
return runtime.NewContainerdClient(
context.Background(),
clicontext.GlobalDuration("timeout"),
clicontext.GlobalString("containerd"),
clicontext.String("containerd-snapshotter"),
clicontext.GlobalString("containerd"),
hostname,
)
}
Expand Down
2 changes: 1 addition & 1 deletion deps/build-containerd.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

set -eu

CONTAINERD_VERSION="v1.1.0"
CONTAINERD_VERSION="v1.1.3"
RUNC_DEP_VERSION="1.0.0-rc4+a618ab5a"
BUILD_DIR=/tmp/build
ELIOT_SRC_DIR=$(pwd)
Expand Down
6 changes: 3 additions & 3 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
```description
Eliot is, Kubernetes and Docker inspired, a open source system for managing containerized applications on top of the IoT device with an emphasis to usability, simplicity, security and stability.
Eliot is lightweight Kubernetes like system to manage containerized applications on IoT devices with an emphasis on simplicity, minimalicity and usability
```
```keywords
IoT,container,Kubernetes,Docker,Eliot,containerd,runc,linuxkit,connected devices,devops,security
Expand All @@ -8,9 +8,9 @@ IoT,container,Kubernetes,Docker,Eliot,containerd,runc,linuxkit,connected devices
![Eliot](https://raw.githubusercontent.com/ernoaapa/eliot/master/docs/eliot-logo-medium.png)
> This is early alpha version! There are not all features yet implemented, not heavily tested with different devices and code might get large breaking changes until the first release.

[Eliot](https://github.com/ernoaapa/eliot) is an open source system for managing containerized applications on top of the IoT device with an emphasis on usability, simplicity, security, and stability. Eliot gives simplified app delivery, isolation and additional security to traditional installations.
[Eliot](https://github.com/ernoaapa/eliot) is lightweight Kubernetes like system to manage containerized applications on IoT devices with an emphasis on simplicity, minimality, and usability. The goal is to give a simple way to develop, deploy and manage applications running in IoT device. Comparing to other traditional platforms, Eliot takes modern technologies from cloud to enable more DevOps way of working in IoT world.

[Docker](https://www.docker.com) and [Kubernetes](https://www.kubernetes.io) have inspired heavily and if you're familiar with those, you find really easy to get started with Eliot.
Eliot re-uses technologies and concepts from [Docker](https://www.docker.com) and [Kubernetes](https://www.kubernetes.io). So if you're familiar with those, you find really easy to get started with Eliot.

## See it in action!
!INCLUDE "asciinema-demo.html"
Expand Down
24 changes: 11 additions & 13 deletions docs/introduction.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@

# Who?

[Eliot](https://github.com/ernoaapa/eliot) is an open source system for managing containerized applications on top of the IoT device with an emphasis on usability, simplicity, and security. Eliot gives simplified app deployment, isolation and additional security to connected device solutions.
[Eliot](https://github.com/ernoaapa/eliot) is lightweight Kubernetes like system to manage containerized applications on IoT devices with an emphasis on simplicity, minimality, and usability. The goal is to give a simple way to develop, deploy and manage applications running in IoT device. Comparing to other traditional platforms, Eliot takes modern technologies from cloud to enable more DevOps way of working in IoT world.

In consideration of connected device limitations like unstable connection, limited computing resources, hardware connectivity, Eliot connects devices to single easy to use platform where you can manage devices and applications easily and safely.

[Cloud Native technologies](https://www.cncf.io/), like [Docker](https://www.docker.com) and [Kubernetes](https://www.kubernetes.io), have inspired heavily and if you're familiar with those, you find really easy to get started with Eliot.
Eliot re-uses technologies and concepts from [Cloud Native technologies](https://www.cncf.io/), like [Docker](https://www.docker.com) and [Kubernetes](https://www.kubernetes.io). So if you're familiar with those, you find really easy to get started with Eliot.

## Motivation

I was building modern connected device product what users are located around the world.
I was building modern connected device product what were distributed around the world.
I have over 10 years of software engineer experience with five years of DevOps and faced the problem that there's no state-of-the-art solution for managing connected devices a way that is common nowadays in cloud solutions.
Most platforms and services focus heavily to the cloud connectivity, data processing, and analysis, but I needed a solution to manage device Operating System and application deployment to build easy to use, modern service for our customers.

Key features needed:
- Quick realtime in-device development
- Simple and fast application deployment
- No network connectivity requirement
- Simple in-device development
- Fast application deployment
- Over-The-Air device management
- Resource allocation and restriction
- Security and software isolation
Expand All @@ -26,31 +25,30 @@ And that's the day when [Eliot](https://github.com/ernoaapa/eliot) were born ❤
## Use cases

Eliot has a small footprint and minimal requirements why it's suitable for a wide range or use cases.
Linux is used nowadays everywhere; info screens, sensors, factories, home IoT, security, cars, etc. and Eliot can support most of them as long as there are enough resources and new enough Linux kernel. Thanks to Golang, there's releases available to wide range of architectures.
Linux is used nowadays everywhere; info screens, sensors, factories, home IoT, security, cars, etc. and Eliot can support most of them. And thanks to Golang, there's releases available to wide range of architectures.

## Eliot vs. Other

### Docker

[Docker](https://www.docker.com) is a software technology providing containers, promoted by the company [Docker, Inc.](http://www.docker.com/company), and provides full-blown container platform for the cloud environment, taking care of container distribution, orchestration, authentication, infrastructure, etc. Docker has been playing a big role pushing out the container technology.
[Docker](https://www.docker.com) is a software technology providing containers, promoted by the company [Docker, Inc.](http://www.docker.com/company), and provides full-blown container platform for the cloud environment, taking care of container distribution, orchestration, authentication, infrastructure, etc. Docker has been playing a big role in pushing out the container technology.

At the heart ❤︎ of Docker is [containerd](https://containerd.io), which provides an additional layer of abstraction and automation of operating-system-level virtualization on Windows and Linux. Docker extracted and open sourced to accelerate the innovation across the ecosystem and donated it to open foundation. _And Eliot is based on the containerd!_

Eliot and Docker are not competing against each other; they are working together, in Open Source, to take the ecosystem forward.

### Kubernetes

[Kubernetes](https://www.kubernetes.io) is a great platform for orchestrating containerized software in the cloud environment. Kubernetes have been one of the fastest growing open source project in past years and new integrations and 3rd party support are popping out every day.
[Kubernetes](https://www.kubernetes.io) is a great platform for orchestrating containerized software in the cloud environment. Kubernetes have been one of the fastest growing open source projects in past years and new integrations and 3rd party support are popping out every day.

Keys to Kubernetes great success, addition to the great community, are simple concepts and consistent APIs.
That's why Eliot is following the great leader and picks many great concepts that work in IoT domain and implements them the same way!
Keys to Kubernetes great success, addition to the great community, are simple concepts and consistent APIs. That's why Eliot is following the great leader. Goal is to re-use Kubernetes code as much as possible, but at the same time keep focus tightly in IoT limitations and requirements.
Kubernetes is pushing the boundaries of cloud computing and Eliot is working on in IoT.

### AWS, Azure, Google, IBM
All cloud IoT solutions ([AWS](https://aws.amazon.com/iot/), [Azure](https://azure.microsoft.com/en-us/suites/iot-suite/), [Google](https://cloud.google.com/solutions/iot/), [IBM](https://www.ibm.com/internet-of-things)) base to the same practice, you use SDK to implement software that collects data from the sensor and send it to the cloud where data gets processed and analyzed. Analysis result can send a message back to the device to trigger some action.

Eliot doesn't try to provide this kind of features at all, actually, you can use any cloud service with Eliot.
Eliot provides an easy way to deliver your cloud integration to the device and gives you a way to update the software across thousands of devices safely and easily.
Eliot provides an easy way to deliver your cloud integration to the device and gives you a way to update the software safely and easily.

Even better, might be that you don't need to code anything! There might be available open source implementation made by someone in Docker community or you can share your code with the thousands of Docker users around the world with a single command.

Expand Down
2 changes: 1 addition & 1 deletion pkg/api/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ func (s *Server) Exec(server containers.Containers_ExecServer) error {
return fmt.Errorf("You must define 'args' metadata")
}

log.Debugf("Execute command [%s](tty: %s) in container [%s] in namespace [%s]", strings.Join(args, " "), tty, containerID, namespace)
log.Debugf("Execute command [%s](tty: %t) in container [%s] in namespace [%s]", strings.Join(args, " "), tty, containerID, namespace)
return s.client.Exec(
namespace,
containerID,
Expand Down
4 changes: 2 additions & 2 deletions vendor.conf
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
github.com/stretchr/testify v1.1.4
github.com/davecgh/go-spew v1.1.0
github.com/pmezard/go-difflib v1.0.0
github.com/containerd/containerd v1.1.0
github.com/containerd/containerd v1.1.3
github.com/sirupsen/logrus v1.0.3
golang.org/x/crypto 49796115aa4b964c318aad4f3084fdb41e9aa067
golang.org/x/sys 314a259e304ff91bd6985da2a7149bbf91237993 https://github.com/golang/sys
Expand All @@ -21,7 +21,7 @@ google.golang.org/genproto d80a6e20e776b0b17a324d0ba1ab50a39c8e8944
golang.org/x/text 19e51611da83d6be54ddafce4a4af510cb3e9ea4
github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9
golang.org/x/sync 450f422ab23cf9881c94e2db30cac0eb1b7cf80c
github.com/containerd/continuity 3e8f2ea4b190484acb976a5b378d373429639a1a
github.com/containerd/continuity a60600ad77f38aaa70165825f61e2ea72e51c9b1
gopkg.in/go-playground/validator.v9 v9.9.4
github.com/go-playground/universal-translator v0.16.0
github.com/go-playground/locales v0.11.2
Expand Down
11 changes: 11 additions & 0 deletions vendor/github.com/containerd/containerd/cio/io.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/containerd/containerd/client.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions vendor/github.com/containerd/containerd/container.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions vendor/github.com/containerd/containerd/oci/spec_opts_unix.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions vendor/github.com/containerd/containerd/oci/spec_unix.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 7 additions & 4 deletions vendor/github.com/containerd/containerd/platforms/database.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 10 additions & 1 deletion vendor/github.com/containerd/containerd/platforms/platforms.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 28 additions & 2 deletions vendor/github.com/containerd/containerd/remotes/docker/fetcher.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions vendor/github.com/containerd/containerd/vendor.conf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading