Bringing the cloud to your community

creating local clouds should not be hard #

It should be easy to deploy complex cloud infrastructure onto real hardware without having to be an IT guru. We want to use a $9 C.H.I.P flashed from the web with a paperclip to setup the same open source cloud infrastructure used by Google.

Several years ago we demoed a Banana Pi powering on and installing different cloud operating systems to real hardware.

The advent of Docker and IoT provisioning platforms that utilize containers like Resin are democratizing access to deploy and manage complex infrastructure.

Resin and IoT hardware can create and manage your local cloud #

It just takes a few steps:

  • flash a C.H.I.P. (or Raspberry Pi) with Resin OS via the web
  • connect the Resin device to some computers set to netboot PXE
  • watch your Resin console as your computers are turned into a cloud (Kubernetes running GitLab or OpenStack)

Flash a CHIP (or Raspi) with Resin OS #

We have recently pulled together a Docker build that we push to our resin project.

Connect the Resin device to some computers configured to netboot #

Once the Resin + ii device is connected to our network we power on the servers. This could be done manually, but what fun would that be?

We use some software that listens to the network boot requests and orchestrates the installation of the OS installs called Hanlon.

When the servers power up they register with the Hanlon. This process is fairly complex but allows us to save information about the server hardware and the servers wait to be told what to do next via the Hanlon API.

Watch your Resin console as your computers are turned into a cloud #

Once we have enough nodes, we use Hanlon info about the hardware (number of cores for now) to select the right hardware for the Kubernetes master (the one with the least cores) and allocate the rest as minions.

This allows us to generate a local ssl Certificate Authority and create signed certificates for all our nodes.

Now we tie it all together with Hanlon tags, models, and policies per node that deploy CoreOS.

We wait for all the CoreOS nodes to be provisioned and available, logging the state changes along the way.

Next we use chef-provisioning-ssh to ensure each CoreOS node is ready.

Then the master needs to be initialized.

And then the minions.

We setup kubectl to communicate to our new Kubernetes cluster.

Create Kubernetes manifest specific to our deploy of gitlab.

The end result is a gitlab instance running on kubernetes!

We can looking up our service ip, which we can add to DNS.

Start developing in your community on a local cloud #

Yes… that’s gitlab, deployed from any resin device, to real hardware running kubernetes.

Why is this important? #

GitLab published a blog post detailing how quickly you can take your ideas to production using a local cloud

There are so many places to go from here. We are looking for funding and people who share our passion for creating instant infrastructure that is easy for others to use, change, and replicate. Send us an email or give us a ring at +64 22 646 1502.