Scripts to build a Ubuntu image on Scaleway with the common used tools of CoreOS like fleet, etcd and flanneld (soon more to be added).
This image is built using Image Tools and depends on the official Docker image.
This image is meant to be used on a C1 server.
We use the Docker's building system and convert it at the end to a disk image that will boot on real servers without Docker. Note that the image is still runnable as a Docker container for debug or for inheritance, but really running Docker inside Docker?.
Build and write the image to /dev/nbd1 (see documentation)
$ make install
Full list of commands available at: scaleway/image-tools
To set up a cluster you need at least 3 nodes, this is required for etcd to work. Setting up these nodes is quite simple.
- Go create a new server and select this image.
- If you start a new cluster you need an etcd discovery link as start point. You can get one at https://discovery.etcd.io/new
- Add your discover link as a tag to your server in format
discover:https://discovery.etcd.io/secretkeyyougot
. Make sure it is the first tag! - Set a second tag with your Scaleway access key and token in format
api:accesskey:token
. - Repeat this at least 2 more times.
- Enjoy! You can just login as root and use fleet to manage your unit files.
Using DNS to bootstrap the cluster can have a few advantages like making it more scalable.
To do this use the official documentation on how to set up the DNS records and use discover:example.com
, for the servers not listed in the records add proxy:true
as third tag.
- Community: Docker Support
- Community: Getting started with Docker on C1 (armhf)
- Online Labs Blog - Docker on C1
Why not Gentoo? The main reason is that I don't have much experience with Gentoo to make a propper working image in a short time.
Why not port the CoreOS source? CoreOS doesn't seem to show interest in other architectures. Some dependencies even give a warning on compile time. Another argument is that their update system also manages the kernel and Scaleway does not support using your own kernel.
Why do you want my API keys? We use this to discover other nodes on your account and giving only those IPs access to sensitive ports as etcd.
Why do I need 3 servers? Becuase everything (including Docker) is dependend on etcd. Etcd needs at least 3 nodes by default. You can work this arround but if you need less than 3 you should reconsider if you need this.
A project by Innovate Technologies