SlideShare a Scribd company logo
1 of 32
Download to read offline
CI/CD with Kubernetes,
Helm & Wercker
#madScalability

Madrid

30/11/2016
About me:
Javier Cuevas 

@javier_dev
AIRBNB FOR DOGS
“MAJESTIC” RAILS 3.2 MONOLITH
RUBY ON RAILS SHOP 

WHO EMBRACED ELIXIR
previously now full time!
First things first:

My review of the new
MacBook Pro with Touch Bar:
Meh 😔
Disclaimers
1. I learned Docker while learning
Kubernetes. I ain’t no expert.
2. Gudog is not at unicorn scale.
We’re just at dog scale.
NOW LET’S
GET STARTED
A LOOK BACK
TO DEVOPS 

@ Gudog
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.
KUBERNETES 101
(IN 3 MINS)
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.
More about Kubernetes
https://www.youtube.com/watch?v=K_Kh4LMiiqQ
HOW WE USE
KUBERNETES
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
HELM 101
(IN 3 MINS)
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
More about Helm
https://www.youtube.com/watch?v=zBc1goRfk3k
https://speakerdeck.com/michellen/delivering-kubernetes-applications-with-helm
HOW WE USE
HELM
File structure & code
!"" app
!"" config
!"" db
!"" deploy
!"" lib
!"" log
!"" public
!"" script
!"" spec
!"" vendor
!"" Gemfile
!"" Gemfile.lock
!"" Procfile
!"" Rakefile
!"" config.ru
#"" wercker.yml
deploy
!"" kubernetes-chart
$   !"" templates
$   $   !"" _helpers.tpl
$   $   !"" cron.yaml
$   $   !"" db.yaml
$   $   !"" memcached.yaml
$   $   !"" redis.yaml
$   $   !"" secrets.yaml
$   $   !"" web.yaml
$   $   #"" worker.yaml
$   !"" Chart.yaml
$   !"" README.md
$   !"" production-values.yaml
$   !"" rails_env.yaml
$   !"" staging-values.yaml
$   #"" values.yaml
!"" nginx.conf
#"" unicorn.rb
https://gist.github.com/javiercr/fa4335e6bc67147b1e12523b0282a18a
WERCKER 101
(IN 3 MINS)
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)
HOW WE USE
WERCKER
install nodejs, phantomjs
bundle install
rake db:create
rspec
install nodejs, nginx, cron
copy nginx.conf
copy unicorn.rb
bundle install
rake assets:precompile
hipchat notification
install kubectl
install helm
helm upgrade
hipchat notification
build
build-container
deploy-staging
Gudog’s Wercker Workflow
note that we decided to only automate deployments to staging. env.
however deploying to production it’s just one click 

(executing the deploy-production pipeline from wercker ui)
docker push to GCR
Gudog’s Wercker Workflow
Our wercker.yml:
https://gist.github.com/javiercr/fa4335e6bc67147b1e12523b0282a18a#file-wercker-yml
http://blog.wercker.com/Dockerfiles-considered-harmful
THANK YOU
Questions?
Special thanks to @LachlanEvenson from Deis
for helping me get started with Helm and the k8s community.

More Related Content

What's hot

Kubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes: An Introduction to the Open Source Container Orchestration PlatformKubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
Michael O'Sullivan
 

What's hot (20)

Kubernetes security
Kubernetes securityKubernetes security
Kubernetes security
 
Layer 7 Observability and Centralized Configuration with Consul Service Mesh
Layer 7 Observability and Centralized Configuration with Consul Service MeshLayer 7 Observability and Centralized Configuration with Consul Service Mesh
Layer 7 Observability and Centralized Configuration with Consul Service Mesh
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive Overview
 
Kubernetes in Docker
Kubernetes in DockerKubernetes in Docker
Kubernetes in Docker
 
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes: An Introduction to the Open Source Container Orchestration PlatformKubernetes: An Introduction to the Open Source Container Orchestration Platform
Kubernetes: An Introduction to the Open Source Container Orchestration Platform
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
Ingress overview
Ingress overviewIngress overview
Ingress overview
 
Helm - Application deployment management for Kubernetes
Helm - Application deployment management for KubernetesHelm - Application deployment management for Kubernetes
Helm - Application deployment management for Kubernetes
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
NGINX Ingress Controller for Kubernetes
NGINX Ingress Controller for KubernetesNGINX Ingress Controller for Kubernetes
NGINX Ingress Controller for Kubernetes
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
 
Linux Internals - Kernel/Core
Linux Internals - Kernel/CoreLinux Internals - Kernel/Core
Linux Internals - Kernel/Core
 
CloudInit Introduction
CloudInit IntroductionCloudInit Introduction
CloudInit Introduction
 
Azure Advisor: Optimization in the best way
Azure Advisor: Optimization in the best wayAzure Advisor: Optimization in the best way
Azure Advisor: Optimization in the best way
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Scaling Microservices with Kubernetes
Scaling Microservices with KubernetesScaling Microservices with Kubernetes
Scaling Microservices with Kubernetes
 
Kubernetes dealing with storage and persistence
Kubernetes  dealing with storage and persistenceKubernetes  dealing with storage and persistence
Kubernetes dealing with storage and persistence
 
Federated Learning with TensorFlow
Federated Learning with TensorFlowFederated Learning with TensorFlow
Federated Learning with TensorFlow
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 

Similar to CI/CD with Kubernetes, Helm & Wercker (#madScalability)

Similar to CI/CD with Kubernetes, Helm & Wercker (#madScalability) (20)

Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)Build Your Own CaaS (Container as a Service)
Build Your Own CaaS (Container as a Service)
 
Using Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous DeliveryUsing Kubernetes for Continuous Integration and Continuous Delivery
Using Kubernetes for Continuous Integration and Continuous Delivery
 
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2daysUsing Kubernetes for Continuous Integration and Continuous Delivery. Java2days
Using Kubernetes for Continuous Integration and Continuous Delivery. Java2days
 
Kubernetes Kops - Automation Night
Kubernetes Kops - Automation NightKubernetes Kops - Automation Night
Kubernetes Kops - Automation Night
 
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, OrchestrationThe Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
The Docker "Gauntlet" - Introduction, Ecosystem, Deployment, Orchestration
 
Containers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific TrioContainers, Docker, and Microservices: the Terrific Trio
Containers, Docker, and Microservices: the Terrific Trio
 
What Is AWS Elastic Kubernetes Service
 What Is AWS Elastic Kubernetes Service What Is AWS Elastic Kubernetes Service
What Is AWS Elastic Kubernetes Service
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
 
Kubernetes for Java Developers
Kubernetes for Java DevelopersKubernetes for Java Developers
Kubernetes for Java Developers
 
Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !
 
Kubernetes and Hybrid Deployments
Kubernetes and Hybrid DeploymentsKubernetes and Hybrid Deployments
Kubernetes and Hybrid Deployments
 
TDC2017 | São Paulo - Trilha Cloud Computing How we figured out we had a SRE ...
TDC2017 | São Paulo - Trilha Cloud Computing How we figured out we had a SRE ...TDC2017 | São Paulo - Trilha Cloud Computing How we figured out we had a SRE ...
TDC2017 | São Paulo - Trilha Cloud Computing How we figured out we had a SRE ...
 
A 60-minute tour of AWS Compute (November 2016)
A 60-minute tour of AWS Compute (November 2016)A 60-minute tour of AWS Compute (November 2016)
A 60-minute tour of AWS Compute (November 2016)
 
Docker kubernetes fundamental(pod_service)_190307
Docker kubernetes fundamental(pod_service)_190307Docker kubernetes fundamental(pod_service)_190307
Docker kubernetes fundamental(pod_service)_190307
 
Containerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesContainerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with Kubernetes
 
Resilient microservices with Kubernetes - Mete Atamel
Resilient microservices with Kubernetes - Mete AtamelResilient microservices with Kubernetes - Mete Atamel
Resilient microservices with Kubernetes - Mete Atamel
 
ProxySQL on Kubernetes
ProxySQL on KubernetesProxySQL on Kubernetes
ProxySQL on Kubernetes
 
Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017Deliver Docker Containers Continuously on AWS - QCon 2017
Deliver Docker Containers Continuously on AWS - QCon 2017
 
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
(DVO305) Turbocharge YContinuous Deployment Pipeline with Containers
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
 

More from Diacode

Presentación de Kogi
Presentación de KogiPresentación de Kogi
Presentación de Kogi
Diacode
 

More from Diacode (13)

Phoenix for Rails Devs
Phoenix for Rails DevsPhoenix for Rails Devs
Phoenix for Rails Devs
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to Elixir
 
Startup nomads
Startup nomadsStartup nomads
Startup nomads
 
Ruby on Rails & TDD con RSpec
Ruby on Rails & TDD con RSpecRuby on Rails & TDD con RSpec
Ruby on Rails & TDD con RSpec
 
Hacking your bank with Ruby and reverse engineering (Madrid.rb)
Hacking your bank with Ruby and reverse engineering (Madrid.rb)Hacking your bank with Ruby and reverse engineering (Madrid.rb)
Hacking your bank with Ruby and reverse engineering (Madrid.rb)
 
TLKR.io @ Betabeers Madrid
TLKR.io @ Betabeers MadridTLKR.io @ Betabeers Madrid
TLKR.io @ Betabeers Madrid
 
Métricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyectoMétricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyecto
 
Métricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyectoMétricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyecto
 
Presentación de Kogi
Presentación de KogiPresentación de Kogi
Presentación de Kogi
 
Educación: The Next Big Thing
Educación: The Next Big ThingEducación: The Next Big Thing
Educación: The Next Big Thing
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overview
 
Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)
 
Taller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on RailsTaller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on Rails
 

Recently uploaded

Recently uploaded (20)

How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...How to Choose the Right Laravel Development Partner in New York City_compress...
How to Choose the Right Laravel Development Partner in New York City_compress...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 

CI/CD with Kubernetes, Helm & Wercker (#madScalability)

  • 1. CI/CD with Kubernetes, Helm & Wercker #madScalability
 Madrid
 30/11/2016
  • 2. About me: Javier Cuevas 
 @javier_dev AIRBNB FOR DOGS “MAJESTIC” RAILS 3.2 MONOLITH RUBY ON RAILS SHOP 
 WHO EMBRACED ELIXIR previously now full time!
  • 3. First things first:
 My review of the new MacBook Pro with Touch Bar: Meh 😔
  • 4. Disclaimers 1. I learned Docker while learning Kubernetes. I ain’t no expert. 2. Gudog is not at unicorn scale. We’re just at dog scale.
  • 5.
  • 7. A LOOK BACK TO DEVOPS 
 @ Gudog
  • 8. 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
  • 9. 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.
  • 10. 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.
  • 11. 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.
  • 13. What is Kubernetes? • Open-source system for container orchestration and more. • Works with many cloud providers (Google Cloud, AWS, etc.) and bare metal.
  • 14. 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.
  • 17. 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
  • 18. HELM 101 (IN 3 MINS)
  • 19. 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.
  • 20. 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
  • 23. File structure & code !"" app !"" config !"" db !"" deploy !"" lib !"" log !"" public !"" script !"" spec !"" vendor !"" Gemfile !"" Gemfile.lock !"" Procfile !"" Rakefile !"" config.ru #"" wercker.yml deploy !"" kubernetes-chart $   !"" templates $   $   !"" _helpers.tpl $   $   !"" cron.yaml $   $   !"" db.yaml $   $   !"" memcached.yaml $   $   !"" redis.yaml $   $   !"" secrets.yaml $   $   !"" web.yaml $   $   #"" worker.yaml $   !"" Chart.yaml $   !"" README.md $   !"" production-values.yaml $   !"" rails_env.yaml $   !"" staging-values.yaml $   #"" values.yaml !"" nginx.conf #"" unicorn.rb https://gist.github.com/javiercr/fa4335e6bc67147b1e12523b0282a18a
  • 25. 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)
  • 27.
  • 28.
  • 29. install nodejs, phantomjs bundle install rake db:create rspec install nodejs, nginx, cron copy nginx.conf copy unicorn.rb bundle install rake assets:precompile hipchat notification install kubectl install helm helm upgrade hipchat notification build build-container deploy-staging Gudog’s Wercker Workflow note that we decided to only automate deployments to staging. env. however deploying to production it’s just one click 
 (executing the deploy-production pipeline from wercker ui) docker push to GCR
  • 30. Gudog’s Wercker Workflow Our wercker.yml: https://gist.github.com/javiercr/fa4335e6bc67147b1e12523b0282a18a#file-wercker-yml
  • 32. THANK YOU Questions? Special thanks to @LachlanEvenson from Deis for helping me get started with Helm and the k8s community.