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.

image

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?

image

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.

image

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.

image

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

image

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

image

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

image

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

ssh

Then the master needs to be initialized.

init master

And then the minions.

init minions

We setup kubectl to communicate to our new Kubernetes cluster.

setup kubectl

Create Kubernetes manifest specific to our deploy of gitlab.

install gitlab on kubernetes

The end result is a gitlab instance running on kubernetes!

kubectl pods

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

kubectl ingress

Start developing in your community on a local cloud

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

gitlab running

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.