Hosting / Cloud Provisioning
Continuos
Integration
Deployments
2013 DigitalOcean SSH all the things 🙀 Jenkins Capistrano
2014 AWS EC2 Rubber Shippable Capistrano
2015 AWS EC2 (OpsWorks) Chef (OpsWorks) Shippable Chef (OpsWorks)
2016
Google Container Engine
(GKE)
Kubernetes 💙 Wercker Kubernetes + Helm
Why we chose
Google Cloud
😱 Because we ran out of AWS credits and
we got new credits for Google Cloud.
💸 Because (now that we’re paying for it) is
cheaper than AWS.
👌 Because it has the best integration
available with Kubernetes.
Why we chose
Kubernetes
' Because the guy from Google Cloud
told us it was super cool.
🤔 Because we had no idea what that
Docker thing was about and we were
wondering.
Why we chose
Wercker
🚀 Because it was way faster than Shippable
running our Slow Rails Test Suite™ .
🤑 Because, as Shippable, it’s free.
✨ Because the UX/UI is so pretty.
What is Kubernetes?
• Open-source system for container
orchestration and more.
• Works with many cloud providers
(Google Cloud, AWS, etc.) and bare
metal.
Basic Kubernetes concepts
• Node: a VM or bare metal machine running
Kubernetes.
• Cluster: a bunch of nodes.
• Pod: a group of one or more containers.
• Deployment: defines how many replicas of a Pod
you want and how to perform updates (deploys).
• Service: exposes some pods in a given port.
Worker Deployment
…
Web
Service
DB
Service
Redis
Service
Memcached
Service
Memcached Deployment
Memcached Pod
memcached
Worker Pod
resque
Worker Pod
resque
Web Deployment
…Web Pod
nginx + unicorn
Web Pod
nginx + unicorn
Cron Deployment
Cron Pod
cron -f
Redis Deployment
Redis Pod
redis
DB Deployment
DB Pod
postgres
Web
Ingress
☁Internet
What is Helm?
• It’s a package manager for Kubernetes 🤔
• Charts are packages of pre-configured Kubernetes
resources.
• You can use public Charts to easily install apps
into your cluster (eg: postgresql, wordpress).
• … Or you can create a private Chart for your
application.
What is Helm?
• You can use templates to define your Charts 🙌
• Helm has two parts:
- helm: a CLI client
- tiller: A server (tiller) than runs in your Kubernetes
cluster as another pod. You can install tiller in your
cluster with: $ helm init
What is Wercker?
• It’s a Docker-Native CI/CD Automation platform for
Kubernetes & Microservice Deployments.
• With Wercker you define your CI/CD process as
Workflow composed by multiple Pipelines.
• Each Pipeline is defined by multiple Steps.
Wercker offers a Registry of shared steps
(eg: to install kubectl)