Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Draft で作る k8s 上 Rails 開発環境 / Rails Development Environment built on Draft

Draft で作る k8s 上 Rails 開発環境 / Rails Development Environment built on Draft

TokyuRuby会議12 発表資料

https://tokyurubykaigi.github.io/tokyu12/

Fumiaki MATSUSHIMA

July 29, 2018
Tweet

More Decks by Fumiaki MATSUSHIMA

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. #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.”

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide