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/

Fb1b9f3d7332a7a7e262b70013b5f7dd?s=128

Fumiaki MATSUSHIMA

July 29, 2018
Tweet

Transcript

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

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

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

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

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

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

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

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

    上 Rails 開発環境 @mtsmfm Fumiaki Matsushima TokyuRuby会議12 #tqrk12
  9. #tqrk12 Draft で作る k8s 上 Rails 開発環境 開発環境 どうしてますか

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

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

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

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

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

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

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

  17. #tqrk12 Draft で作る k8s 上 Rails 開発環境 d4m に k8s

    到来 https://blog.docker.com/2018/01/docker-mac-kubernetes/
  18. #tqrk12 Draft で作る k8s 上 Rails 開発環境 どうやって作るか

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

  20. #tqrk12 Draft で作る k8s 上 Rails 開発環境 本番と開発環境との差異 ➔ RAILS_ENV

    ➔ DB接続情報 ➔ 外部接続先 ➔ 開発用プロセスの有無 ◆ Webpack とか
  21. #tqrk12 Draft で作る k8s 上 Rails 開発環境 最低限 差異の管理と k8s

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

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

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

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

  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.”
  27. #tqrk12 Draft で作る k8s 上 Rails 開発環境 Draft とは ➔

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

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

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

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

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

    ➔ /Dockerfile ➔ /charts/rails/templates ◆ deployment.yaml ◆ service.yaml ◆ … Helm のファイル郡 k8s に展開
  33. #tqrk12 Draft で作る k8s 上 Rails 開発環境 本番との 差異の書き方

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

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

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

    反映させるために マウントしたい
  37. #tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/mtsmfm/gh-deck/blob/3c3983b479b775e39b4b7507314ac40e d3386cf3/charts/rails/templates/deployment.yaml

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

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

  40. #tqrk12 Draft で作る k8s 上 Rails 開発環境 やってみての感想 ➔ docker

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

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

    だけでよくないか? ◆ Values の差し替えは Helm でできる ◆ 実質 docker build やってくれるだけのためにツール増 やすか?
  43. #tqrk12 Draft で作る k8s 上 Rails 開発環境 https://github.com/Azure/draft/tree/e657813f23d23b967ec99a6363533fc3f1253312

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

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

    now)