Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Operating Rails in Kubernetes
Kir Shatrov
April 17, 2018
Programming
2
350
Operating Rails in Kubernetes
My talk at RailsConf 2018.
Kir Shatrov
April 17, 2018
Tweet
Share
More Decks by Kir Shatrov
See All by Kir Shatrov
Running Jobs at Scale
kirs
0
170
RailsClub 2016
kirs
2
280
Performance regressions in Ruby on Rails Core
kirs
0
180
Building a toolkit to detect performance regressions in Ruby on Rails core
kirs
3
4.3k
Развертывание веб-приложений и фреймворк Capistrano
kirs
1
250
Capistrano 3
kirs
4
2.3k
Other Decks in Programming
See All in Programming
Google I/O 2022 Android関連概要 / Google I/O 2022 Android summary
phicdy
0
380
Rに管理されてみる
kazutan
0
250
Isar勉強会
hoddy3190
0
400
段階的な技術的負債の解消方法.pdf
ko2ic
2
900
AWS Config Custom Rule、ノーコードでできるかな?
watany
0
250
FullStack eXchange, July 2022
brucel
0
200
クックパッドマートの失敗したデータ設計 Before / After 大放出
mokuzon
20
25k
NestJS_meetup_atamaplus
atamaplus
0
210
アジャイルで不確実性に向き合うための開発タスクの切り方
tanden
4
1.1k
フロントエンドエンジニアが変える現場のモデリング意識/modeling-awareness-changed-by-front-end-engineers
uggds
32
13k
僕が便利だと感じる Snow Monkey の特徴/20220723_Gifu_WordPress_Meetup
oleindesign
0
110
SAM × Dockerでサーバーレス開発が超捗った話
yu_yukk_y
1
210
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
21
1.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
269
12k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
19
1.2k
Happy Clients
brianwarren
89
5.6k
Designing for humans not robots
tammielis
241
24k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
Testing 201, or: Great Expectations
jmmastey
21
5.5k
Designing with Data
zakiwarfel
91
4k
Reflections from 52 weeks, 52 projects
jeffersonlam
337
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
18
40k
Transcript
Operating Rails in Kubernetes Kir Shatrov
1. Intro to Kubernetes 2. Rails in Kubernetes 3. Shopify’s
migration story
Containers are awesome! *
Containerizing Rails: Techniques, Pitfalls, & Best Practices by Daniel Azuma
Tomorrow 3:30pm
None
None
app01 app02 app03
app01 app02 app03
None
None
None
Smart container scheduling for better utilization
Smart container scheduling for better utilization
Smart container scheduling for better utilization
Kubernetes basics: Pod
Kubernetes basics: Deployment
web jobs Kubernetes basics: Deployment
None
None
web jobs Kubernetes basics: Deployment
web jobs Kubernetes basics: Deployment
web jobs Kubernetes basics: Deployment
Managing Resources
YAML
None
YAML apply when changed
YAML store in repository
None
Deploy process controlling servers
Deploy process sequentially applying commands by SSH
Capistrano sequentially applying commands by SSH
None
kubectl apply --file web.yml
kubectl apply --file jobs.yml
Controlling servers vs describing configuration
Controlling servers Describing configuration running commands remotely comparing output with
expected not prone to failures push configuration poll for it to apply abstracts from physical machines self-healing
Controlling servers Describing configuration running commands remotely comparing output with
expected not prone to failures push configuration poll for it to apply abstracts from physical machines self-healing
None
It's easy to run a container, but not Rails
The Twelve-Factor app
None
Disposability and termination
Web requests
Background Jobs
Long-running jobs
None
Abort and re-enqueue
Concurrency scale out via the process model
None
Assets
rake assets:precompile
Assets Shipped in container
Database Migrations
Migrations as a part of deploy
Migrations as a part of deploy
Asynchronous Migrations
1. Change code and add a migration 1. Add a
migration 2. Change code
1. Change code and add a migration 1. Add a
migration 2. Change code
Asynchronous Migrations
None
None
Secret Management
Secrets in the environment
Secrets in a container
Secrets in a container
Rails 5.2 Credentials
None
ENV[‘RAILS_MASTER_KEY’]
The Twelve Factors Let workers terminate gracefully Migrations as a
part of deploy can be fragile Rails 5.2 Credentials + Kubernetes Secrets
Kubernetes at Shopify
None
Resource specs in YAML
None
None
None
kubectl apply --file web.yml
None
None
Let robots help humans to migrate apps Developers don’t have
to write YAML configs kubernetes-deploy brings visibility into rollout progress
None
Kubernetes helps organizations to efficiently schedule workload and save resources
It’s not magic, it only schedules and runs your containers Things you need to know about Rails
None
None
Thanks! @kirs @kirshatrov