Rootconf proposals for round the year in 2018

On DevOps, security, cloud and IT infrastructure

Rails Scale with Kubernetes

Submitted by Rahul Mahale (@rahulmahale) on Monday, 26 February 2018

videocam_off

Technical level

Intermediate

Section

Full talk

Status

Submitted

Vote on this proposal

Login to vote

Total votes:  +16

Abstract

There are lots of different ways to deploy/provision Rails Apps: Capistrano, Chef, Ansible, Fabric or using Heroku, EngineYard, etc. Kubernetes, a container orchestration tool, as an alternative to traditional Rails deployment tools, can be rewarding at scale.

Deploying a Rails app on kubernetes and making it ready for production isn’t that straightforward though. Let’s dive into the details and we will see how to automate Rails deployments on Kubernetes

We will explore how Kubernetes has been helping us at scale deployments, with savings on various metrics.

Description:

Last year we started building an automated Rails deployment tool on top of Kubernetes(planned to be open-sourced in future).

In this session, we will discuss our experiences and hurdles about the same, and build a generic Rails deployer on top of Kubernetes.

We will start by discussing how to deploy a Rails app on Kubernetes cluster and do rolling deployments. We will do a walk through the sample Rails app “wheel” and how to deploy it on Kubernetes.

We will talk in detail about:

  • Automatically building docker image for each commit.
  • Writing/modifying deployment templates for applications.
  • Grouping the app in different pods (web, background, etc.).
  • How to handle db:migrate, db:seed, etc tasks to run once in deployment flow.
  • Managing environment variables using Kubernetes Secrets
  • Ability to tweak some configurations such as Sidekiq queues using Kubernetes ConfigMaps.
  • Using persistent volume to store persistent data
  • Zero downtime deployment on rolling deployments.
  • Use of Ingress controllers to loadbalance and route the application traffic.
  • Handling Graceful shutdown of processes.
  • Horizontal and virtical autoscaling of applications.
  • Monitoring applications.

Outline

This talk details about the containerization of rails application and how the deployment process speeds up with containerization.

We will also do a comparison of before/after moving from server architecture to kubernetes deployments, and how we are saving on time and resources when scaling up/down our resources.

Speaker bio

Vipul Amler

Vipul is Director at BigBinary. He is part of Rails Team, and helps triaging issues.
His spare time is spent exploring and contributing to many Open Source ruby projects, when not dabbling with React JS or Kubernetes. Recently he authored ReactJS by Example, that does a deep walk-through of using ReactJS.
Vipul loves Ruby’s vibrant community and helps in building PuneRb. He also organizes DeccanRubyConf in Pune.
He helps in editing Rails-weekly and AllThingsDevops podcast.

Work

Linkedin

Twitter

Github

Rahul Mahale

A Open-Source Enthusiast, Currently working as Senior DevOps Engineer at BigBinary.
Strong believer of Infrastructure-as-a-code principal.Proficient in automating stuffs using Chef, Ansible and Terraform and usually uses Scripting languages like Bash, Ruby and Python.Recently working mostly on Containers and orchestration of containers in the Cloud environments and proficient in implementing Kubernetes Clusters. Hosts “All Things DevOps Podcast”. Loves attending and Speaking at Technical conferences. Organizes Digital Ocean Pune group and actively involved in Kubernetes/Docker Pune meetups.

Work

Linkedin

Twitter

Github

Links

Comments

Login with Twitter or Google to leave a comment