Pro Yearly is on sale from $80 to $50! »

Dockerfile書きたくないでござる

 Dockerfile書きたくないでござる

CloudNative Days Kansai 2019前夜祭のLTで発表した資料です。

発表の大筋は@makingの『Pack to the Future - SpringOne Platform 2019報告会』
https://docs.google.com/presentation/d/1rzaxReQ92WaWI24v-GsTwjtLCMq2YaFSTl9t6SEjPxQ/mobilepresent?slide=id.g6ad6e2f668_0_5

およびその元ネタの『Pack to the Future: Cloud-Native Buildpacks on k8s』
https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s

をベースにしています。

Cloud Native Buildpackの詳細については、CNDK2019の @pyama86 さんのセッション『CloudNative Buildpacksで創る、CloudNativeな開発体験』が参考になります。
https://speakerdeck.com/pyama86/cloudnative-buildpacksdechuang-ru-cloudnativenakai-fa-ti-yan

Cbc297b07593321e52c75a9ebcc0f843?s=128

Kazuto Kusama

November 27, 2019
Tweet

Transcript

  1. Dockerfile書きたくないでござる 絶対にDockerfile書きたくないでござる

  2. KAZUTO KUSAMA @jacopen 2 Senior Solutions Architect @

  3. https://www.atmarkit.co.jp/ait/series/16443/ @IT 草間一人×青山真也 クラウドネイティブ対談

  4. You love Containers? We love containers too! You love Kubernetes?

    We love Kubernetes too! You love Dockerfile? Hmm … https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/5
  5. Dockerの Build-Ship-Runモデル Build Ship Run $ docker build $ docker

    push $ docker run Dockerfile書いて イメージ作って どこかのレジストリに上げて 実行する
  6. Dockerの Build-Ship-Runモデル Build Ship Run $ docker build $ docker

    push $ docker run Dockerfile書いて イメージ作って どこかのレジストリに上げて 実行する 特にこのへんが大変
  7. 『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法 https://www.slideshare.net/jacopen/k8spaasserverless 考えることが増えて面倒くさい・・・

  8. Dockerfile Best Practices https://www.docker.com/blog/intro-guide-to-dockerfile-best-practices/

  9. https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/17 そういえば何年か前にこういう大きめの脆弱性が発見され たりしましたよね

  10. https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/18

  11. https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/19 たとえばベースイメージのほうに脆弱性があったとすると

  12. https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/20 500 Apps

  13. 500 Apps https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/21 アプリ数が多いと、影響範囲がとんでもないことになりま す。

  14. https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/22 あとアプリによってベースイメージが異なるなんてことも多 いですよね。こうなると、修正にかかる時間はさらに伸びて しまいます

  15. https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/6

  16. Life is too short for an app developer to write

    a Dockerfile
  17. PaaSが実現していた世界 cf push myapp -p app.jar git push heroku master

  18. $ cf push コマンド一発 あとは全部おまかせ

  19. https://twitter.com/onsijoe/status/598235841635360768 プラットフォームのある べき姿

  20. Buildpackがうまいことやってくれる Buildpack 実行 $ cf push

  21. Buildpackとは Herokuによって作られた、PaaS上で任意の言語や フレームワークを利用できるようにする仕組み アップロードされたアプリを処理して実行可能なイメージに してくれる

  22. BuildpackがあればDockerfile要らない

  23. 悲報: Heroku, Cloud Foundryでしか使えません

  24. 朗報: DockerやKubernetesで使えるようにしました

  25. Cloud Native Buildpacks 従来のBuildpackを発展させ、 ソースコードをOCI標準の コンテナイメージに変換可能にし たツール • OCI標準によるポータリビリティ •

    モジュラー性の向上 • ビルドの高速化 • ローカル環境で実行可能に。 トラブルシューティングが高速化 • HerokuとPivotalの協力で開発 • CNCF Sandobox project https://buildpacks.io
  26. Docker != Dockerfile

  27. DEMO

  28. デモ用のSpringBootアプリのディレクトリを表示していま す。 ここにはDockerfileはありません

  29. おもむろに pack build コマンドを実行します。 すると自動的に言語やフレームワークを検出してイメージ のビルドが始まります。

  30. できましたー。

  31. 作ったimageでdocker runします。 ちゃんと動いてますね

  32. つぎは別のディレクトリで試します。 これはshowKs企画で利用した、NodeJSのお絵描きア プリです。 Pack buildするとちゃんとnodeと認識されていることが 分かります。

  33. Pack CLI pack build <image name> [--builder <builder name>] [--publish]

    • brew tap buildpack/tap && brew install pack https://buildpacks.io/docs/install-pack/ • Platformの代表的な実装 • 手軽にCloud Native Buildpacksを使ってOCIイメージを作成可能 • Dockerが必要
  34. Rebase https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/33

  35. Rebase https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/34

  36. Rebase pack rebase <image name> [--publish] https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/35

  37. 500 Java Apps https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/39

  38. https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/40

  39. 500 Java Apps https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s/41

  40. Kpack https://github.com/pivotal/kpack KubernetesのCRD(Custom Resource Definition)としてBuilder / Imageを扱える。 apiVersion: build.pivotal.io/v1alpha1 kind:

    Image metadata: name: tutorial-image spec: tag: making/hello-jsug serviceAccount: tutorial-service-account builder: name: default-builder kind: ClusterBuilder cacheSize: "1.5Gi" source: git: url: https://github.com/making/hello-jsug.git revision: master apiVersion: build.pivotal.io/v1alpha1 kind: ClusterBuilder metadata: name: default-builder spec: image: cloudfoundry/cnb:bionic updatePolicy: polling
  41. DEMO

  42. kpackがインストールされたk8sで、Imageというリソー スを作成します。 Imageリソースにはgitリポジトリを指定しており、自動で このリポジトリをclone⇒イメージビルドを行ってくれます

  43. logsコマンドで進行中のビルドログを確認

  44. しばらくするとイメージがリポジトリに pushされます。

  45. こんな機能もあります。 まず、参照先のリポジトリを更新してみます。

  46. しばらくするとkpackがリポジトリの変更を検出し、自動的 にイメージのビルドを開始します。

  47. できましたー。 イメージのtagが増えていることが分かりますね。

  48. None
  49. None
  50. Pack to the Future https://www.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s

  51. 詳しくは @pyama86さんのセッションで https://speakerdeck.com/pyama86/cloudnative-buildpacksdechuang-ru-cloudnativenakai-fa-ti-yan

  52. 参考文献 資料 Buildpacks.io https://buildpacks.io/ Pack to the Future: Cloud-Native Buildpacks

    on k8s https://es.slideshare.net/SpringCentral/pack-to-the-future-cloudnative-buildpacks-on-k8s Cloud Native BuildpackでToil減らしていこうという話 https://speakerdeck.com/jacopen/cloud-native-buildpackdetoiljian-rasiteikoutoiuhua コンテナ標準化時代における次世代 Buildpack『Cloud Native Buildpack』について https://qiita.com/TakeshiMorikawa/items/c9d4eb3a866ed56a6efd CN Buildpacksが作る未来 https://speakerdeck.com/pyama86/cn-buildpacksgazuo-ruwei-lai