I am taking on a new challenge; how to build a hybrid cloud. There is a ton of buzz in the market for “hybrid clouds”, but what does it really mean. To me it means, leveraging multiple cloud solutions as a single pool of resources. Like the saying “Horses for Courses”, different clouds have different advantages. This article is not meant to give an opinion on which cloud is better or cheaper than any other, but maybe one cloud provider has a more preferred geographical location, maybe they have cheaper rates for a specific instance size, maybe they have a service offering that the other does not (i.e. BigData or Machine Learning). I am also including private data centers that provide “cloud services” because they have unique capabilities as well.

My goal is to build a kubernetes based hybrid cloud. Why? To me, it’s the most open and flexible way to do this. There are many technologies that could help you build a hybrid cloud; most of them are very opinionated when it comes to the hyper-visor. For example: VMware has a hybrid offering with AWS, Nutanix has Xi, Microsoft has Azure and AzureStack. I am not a big fan of these solutions, because they lock you into a specific hyper-visor and limit you to the cloud providers of their choosing. Kubernetes is quickly emerging as the container orchestration of choice (a hyper-visor for containers to over simplify it). Every major cloud provider and infrastructure provider is jumping on the Kubernetes train. This will give a single common framework for your hybrid cloud and a consistent way to deploy and manage applications regardless of cloud.

What am I building?

Using AWS and Google Cloud Platform, using their native managed Kubernetes service (EKS & GKE) create a hybrid-cloud. Using VPN for basic IP connectivity and Istio to create the “Service Mesh”.

How am I building it?

Using terraform, I am setting up the entire environment on demand. This means that I am creating a new VPC in each cloud, a VPN between, deploy the Kubernetes master (EKS & GKE), and spin up the worker nodes in each cloud. Then I install Istio as the “service mesh”. This basically allows your two kubernetes clusters to act as a single pool of resources (a.k.a hybrid-cloud), with telemetry and visibility across both at the same time.

Logical Infrastructure Diagram

What am I running?

I am using a sample application called Bookinfo that is a container based multi-tier application. With the Reviews tier running on both clouds and load balanced equally between each version of the “reviews tier”.

Disclaimer: This is not a production grade system. There are limitations and lack of proper redundancy.

Warning: This will cost you money on each cloud.

If you want to try it for yourself, please checkout my github repo.