Infrastructure – Actualités

A Containers Ecosystem Overview

13 mars 2018

At Camptocamp, we’ve been using containers for a few years now and have integrated them with the tools we’ve been using for a decade to automate our infrastructure.

Camptocamp’s Infrastructure Technological Stack in 2018

While we have had time to get used to this stack and see it grow, for most of our customers, containers are a new approach to solving their IT problems.

Visualizing the Stack

There are so many technologies in the containers ecosystem today that it’s easy to get lost. How does Docker relate to Kubernetes? Do I need Openshift in order to use them? Where does IaaS fit with this new stack?

Let’s start with IaaS

Ten years ago, it was very common to manage Virtualization manually. Sysadmins would pick a physical host and start Virtual Machines on it when they needed one. IaaS provided us way to dynamically provision Virtual Machines without the need to pick an hypervisor ourselves. The IaaS system manages a cluster of hypervisors and dialogues with them in order to start new VMs on demand. This was a great revolution for Systems Administration, and opened up whole new ways to automate node deployment.

Infrastructure as a Service revolutionized VM Provisioning 10 years ago

Then came Container Runtimes

About 5 years ago, when Container Runtimes such as Docker started to emerge as solutions to ship applications, they came out as standalone systems which could be used locally to start containers on the node they were running on.

Container Runtimes can schedule Containers on their local host

Enter Container Orchestrators

In a similar fashion to IaaS with Hypervisors, Container Orchestrators can be made to take control of multiple Container Runtime instances to set up a cluster and dynamically schedule containers across the nodes.

Orchestrators usually work with specific Runtimes. Docker has become very standard and is supported by most Orchestrators, while others such as rkt or cri-o are typically Kubernetes-specific.

A Container Orchestrator can control multiple Container Runtimes across several nodes

Container Platforms bring it all together

Container Orchestrators provide the base brick to deploy applications across multiple nodes using Containers. Orchestrators such as Kubernetes are full-featured, production-ready systems with support for complex deployment plans and advanced scheduling abilites. They do not however always provide all the features that might be necessary.

Container Platforms offer a distribution for a Container Orchestrator, along with additional features, such as advanced RBAC (user/rights management), CI/CD integration (shipping applications from code and keeping the images up-to-date with security patches) or Routing (dynamic routing to services by name or path).

Additionally, they can also serve as proxies to dynamically provision new cluster nodes by leveraging the underlying IaaS layer.

IaaS, Container Orchestration and Container Platforms

A simple example

Let’s take a simple example, using Rancher as a Container Platform, with Kubernetes as the Orchestrator and let’s pretend we want to add a new node to an existing cluster. The following animation shows the steps necessary to achieve this:

Adding a new node to a Rancher cluster

But wait, there is more!

Pulling everything together in Container Platforms is great, but one thing is missing though: Infrastructure as Code. Once all the components are there and orchestrated, we want to be able to control the full stack in a reproducible and well documented way. Where Puppet has been a great helper to automate node provisioning, Terraform has come to be a reference in managing cloud resources, in particular in controlling IaaS systems. So to pull it all together, Camptocamp has started using Terraform to control its full stack, from IaaS to Container Platforms.

Are you wondering about switching to containers for your applications? Would you like to know how Openshift and Rancher can help you set up production workflows with containers? Our team is available for any questions you might have!

  1. *
  2. *
  3. *
  4. *