Slide 1

Slide 1 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 Draft で作る k8s 上 Rails 開発環境 @mtsmfm Fumiaki Matsushima TokyuRuby会議12 #tqrk12

Slide 2

Slide 2 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 ➔ Web Dev at Quipper ➔ Ruby と麻雀と DbD が好き ➔ 西日暮里.rb 主催 ➔ GraphQL Tokyo 主催 @mtsmfm.inspect #tqrk12 Draft で作る k8s 上 Rails 開発環境

Slide 3

Slide 3 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://studysapuri.jp/ #tqrk12 Draft で作る k8s 上 Rails 開発環境

Slide 4

Slide 4 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境

Slide 5

Slide 5 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://nishinipporirb.doorkeeper.jp/events/77847 #tqrk12 Draft で作る k8s 上 Rails 開発環境

Slide 6

Slide 6 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://twitter.com/mtsmfm/status/1022166525644398593 #tqrk12 Draft で作る k8s 上 Rails 開発環境

Slide 7

Slide 7 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://www.meetup.com/ja-JP/GraphQL-Tokyo/ #tqrk12 Draft で作る k8s 上 Rails 開発環境

Slide 8

Slide 8 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 Draft で作る k8s 上 Rails 開発環境 @mtsmfm Fumiaki Matsushima TokyuRuby会議12 #tqrk12

Slide 9

Slide 9 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 開発環境 どうしてますか

Slide 10

Slide 10 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 docker-compose

Slide 11

Slide 11 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://speakerdeck.com/mtsmfm/qall-development-env-on-docker-for-quipper

Slide 12

Slide 12 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 k8s 使ってますか

Slide 13

Slide 13 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 本番は k8s 開発は docker-compose

Slide 14

Slide 14 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 それでいいのか???

Slide 15

Slide 15 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 “本番となるべく同じに”

Slide 16

Slide 16 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 Docker Swarm 使ってないでしょ?

Slide 17

Slide 17 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 d4m に k8s 到来 https://blog.docker.com/2018/01/docker-mac-kubernetes/

Slide 18

Slide 18 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 どうやって作るか

Slide 19

Slide 19 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 どうやっても 開発環境との 差異はある

Slide 20

Slide 20 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 本番と開発環境との差異 ➔ RAILS_ENV ➔ DB接続情報 ➔ 外部接続先 ➔ 開発用プロセスの有無 ◆ Webpack とか

Slide 21

Slide 21 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 最低限 差異の管理と k8s への適用が必要

Slide 22

Slide 22 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://blog.hasura.io/draft-vs-gitkube-vs-helm-vs-ksonnet-vs-metaparticle-vs-s kaffold-f5aa9561f948

Slide 23

Slide 23 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 関連ツール 多すぎ

Slide 24

Slide 24 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 とりあえず Draft 素振ってみた

Slide 25

Slide 25 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://draft.sh/

Slide 26

Slide 26 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 “Draft makes it easy to build applications that run on Kubernetes. Draft targets the "inner loop" of a developer's workflow: as they hack on code, but before code is committed to version control.”

Slide 27

Slide 27 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 Draft とは ➔ 開発中のループ、コードを書いてコミットするま での間にフォーカスしたツール ◆ 多分ここを狙ったツールはこいつと skaffold くらい ● 他に知ってたら教えてください ➔ 中では Docker で Image をビルドし、Helm で デプロイ

Slide 28

Slide 28 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 Helm とは ➔ k8s 用パッケージマネージャ ◆ YAML を束ねられる ◆ YAML にテンプレートも提供

Slide 29

Slide 29 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 Draft とは ➔ draft create するとテンプレを生成 ◆ 使用言語を検出してくれる ● GitHub の言語検出の仕組み (linguist) を使用 ➔ draft up するとデプロイされる ◆ docker build ◆ helm install --set

Slide 30

Slide 30 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 構成 ➔ /draft.toml ➔ /Dockerfile ➔ /charts/rails/templates ◆ deployment.yaml ◆ service.yaml ◆ …

Slide 31

Slide 31 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 構成 ➔ /draft.toml ➔ /Dockerfile ➔ /charts/rails/templates ◆ deployment.yaml ◆ service.yaml ◆ … Draft の設定ファイル 本番との差異を吸収

Slide 32

Slide 32 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 構成 ➔ /draft.toml ➔ /Dockerfile ➔ /charts/rails/templates ◆ deployment.yaml ◆ service.yaml ◆ … Helm のファイル郡 k8s に展開

Slide 33

Slide 33 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 本番との 差異の書き方

Slide 34

Slide 34 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/mtsmfm/gh-deck/blob/3c3983b479b775e39b4b7507314ac40e d3386cf3/draft.toml.example

Slide 35

Slide 35 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/mtsmfm/gh-deck/blob/3c3983b479b775e39b4b7507314ac40e d3386cf3/draft.toml.example set は Helm の values の上書きになる

Slide 36

Slide 36 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/mtsmfm/gh-deck/blob/3c3983b479b775e39b4b7507314ac40e d3386cf3/draft.toml.example 手元の変更を即座に 反映させるために マウントしたい

Slide 37

Slide 37 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/mtsmfm/gh-deck/blob/3c3983b479b775e39b4b7507314ac40e d3386cf3/charts/rails/templates/deployment.yaml

Slide 38

Slide 38 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/mtsmfm/gh-deck/blob/3c3983b479b775e39b4b7507314ac40e d3386cf3/draft.toml.example 開発中は webpack-dev-server 欲しい

Slide 39

Slide 39 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/mtsmfm/gh-deck/blob/3c3983b479b775e39b4b7507314ac40e d3386cf3/charts/rails/templates/deployment.yaml#L55-L61

Slide 40

Slide 40 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 やってみての感想 ➔ docker build して再起動したい draft up vs docker build も再起動もしたくない Rails ◆ ファイル変更して即座に反映されるというのが Rails の 売りの一つだったような... ◆ 開発時に assets:precompile いらないでしょ ◆ Dockerfile わけたくなっちゃう

Slide 41

Slide 41 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 やってみての感想 ➔ draft create 無力 ◆ 言語を検出 == 無から create できない ◆ 結局全部自分で書いたわ~ ➔ デプロイしようとしたら結局本番との差異でハマる ◆ ingress-nginx と GKE ingress の挙動の違い ◆ 本番との差異をなくすとは...

Slide 42

Slide 42 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 やってみての感想 ➔ Helm だけでよくないか? ◆ Values の差し替えは Helm でできる ◆ 実質 docker build やってくれるだけのためにツール増 やすか?

Slide 43

Slide 43 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/Azure/draft/tree/e657813f23d23b967ec99a6363533fc3f1253312

Slide 44

Slide 44 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 コントリビュート チャンス

Slide 45

Slide 45 text

#tqrk12 Draft で作る k8s 上 Rails 開発環境 Happy Helming! (for now)