入門 Knative 〜KubernetesとServerlessとの出会い〜 / getting started with knative

入門 Knative 〜KubernetesとServerlessとの出会い〜 / getting started with knative

Serverless Meetup Tokyo #11の資料です。
https://serverless.connpass.com/event/119559/

C000f292a92b894afabbb352e8709667?s=128

Toshinori Sugita

March 06, 2019
Tweet

Transcript

  1. 2.

    自己紹介 • 杉田 寿憲 ◦ Toshinori Sugita ◦ toshi0607 ◦

    toshi0607 ◦ toshi0607 • Software Engineer@メルペイ ◦ Backend、Tech Lead • 本 ◦ 『GoとSAMで学ぶAWS Lambda』 ◦ 『Extensive Xamarin(共著)』 • OSS contribution(Serverless関連) ◦ serverless/serverless ◦ aws/aws-lambda-go ◦ aws/aws-lambda-dotnet
  2. 3.

    今日のお話 • 僕とServerlessとの出会い • 僕とKubernetesとの出会い • KubernetesとServerlessとの出会い • Knativeの構成要素 •

    Knativeの方向性 • 僕とKnativeの方向性 • 付録 ◦ Knativeの素敵資料 ◦ KnativeとCRDとOperator
  3. 4.

    今日のお話 • 僕とServerlessとの出会い • 僕とKubernetesとの出会い • KubernetesとServerlessとの出会い • Knativeの構成要素 •

    Knativeの方向性 • 僕とKnativeの方向性 • 付録 ◦ Knativeの素敵資料 ◦ KnativeとCRDとOperator
  4. 8.

    僕とServerlessとの出会い • プロビジョニングをそこまで気にしなくていい • サーバー自体のメンテナンスはプロバイダー任せ • 実行時のみサーバーリソースを使用 • 負荷に応じてスケール •

    イベントドリブンな非同期処理(FaaS) →今以上にインフラ知識のなかった自分にとって、ちょっとした設 定でここまで色々整った状態で機能・サービスを世に出せるのは 衝撃だった
  5. 9.

    今日のお話 • 僕とServerlessとの出会い • 僕とKubernetesとの出会い • KubernetesとServerlessとの出会い • Knativeの構成要素 •

    Knativeの方向性 • 僕とKnativeの方向性 • 付録 ◦ Knativeの素敵資料 ◦ KnativeとCRDとOperator
  6. 12.

    Kubernetesのある生活 • コードを書く • Dockerイメージをビルド • Dockerイメージをレジストリに登録 • デプロイ •

    インターネットに公開 • ロードバランシング設定 • スケール設定 • 監視設定
  7. 13.

    Kubernetesのある生活 • コードを書く • Dockerイメージをビルド • Dockerイメージをレジストリに登録 • デプロイ •

    インターネットに公開 • ロードバランシング設定 • スケール設定 • 監視設定 →開発 + 運用で実行環境を意識する割合が高い
  8. 14.

    Kubernetesのある生活 • コードを書く • Dockerイメージをビルド • Dockerイメージをレジストリに登録 • デプロイ •

    インターネットに公開 • ロードバランシング設定 • スケール設定 • 監視設定 →開発 + 運用で実行環境を意識する割合が高い →さらにコードを書くことに注力できないか?
  9. 15.
  10. 16.

    今日のお話 • 僕とServerlessとの出会い • 僕とKubernetesとの出会い • KubernetesとServerlessとの出会い • Knativeの構成要素 •

    Knativeの方向性 • 僕とKnativeの方向性 • 付録 ◦ Knativeの素敵資料 ◦ KnativeとCRDとOperator
  11. 18.

    Knativeとは? • Kubernetesのリソースを抽象化する ◦ 開発者から見てよりシンプルに • 独自のFaaSを構築するためのパーツを提供 ◦ Serving、Build、Eventingから構成される •

    よくあるが難しい課題を解決 ◦ コンテナのデプロイ ◦ ソースコードからURLでアクセスできるアプリケーションへ ◦ ブルー/グリーンデプロイを伴うルーティングとトラフィック管理 ◦ オートスケーリングと需要に基づくワークロードのサイズ設定 ◦ 実行中のサービスをイベントエコシステムに結び付ける ※https://github.com/knative/docs
  12. 19.

    今日のお話 • 僕とServerlessとの出会い • 僕とKubernetesとの出会い • KubernetesとServerlessとの出会い • Knativeの構成要素 •

    Knativeの方向性 • 僕とKnativeの方向性 • 付録 ◦ Knativeの素敵資料 ◦ KnativeとCRDとOperator
  13. 23.

    Servingの構成要素 ※https://github.com/knative/docs/tree/master/serving • Configuration: 最新のRevision • Revision: コードと設定のスナップショット • Route:

    Revisionにルーティング • Service: RouteとConfigurationを管理。k8sのServiceと別 Deployment k8s Service ReplicaSet Pod
  14. 31.

    僕とServerlessとの出会い • プロビジョニングをそこまで気にしなくていい • サーバー自体のメンテナンスはプロバイダー任せ • 実行時のみサーバーリソースを使用 • 負荷に応じてスケール •

    イベントドリブンな非同期処理(FaaS) →かつて出会ったServerlessな特徴をKubernetes上で実現できそ うな雰囲気があるけど自分たちで作らないといけない?
  15. 32.

    Knativeとは? • Kubernetesのリソースを抽象化する ◦ 開発者から見てよりシンプルに • 独自のFaaSを構築するためのパーツを提供 ◦ Serving、Build、Eventingから構成される •

    よくあるが難しい課題を解決 ◦ コンテナのデプロイ ◦ ソースコードからURLでアクセスできるアプリケーションへ ◦ ブルー/グリーンデプロイを伴うルーティングとトラフィック管理 ◦ オートスケーリングと需要に基づくワークロードのサイズ設定 ◦ 実行中のサービスをイベントエコシステムに結び付ける ※https://github.com/knative/docs
  16. 33.

    Knativeとは? • Kubernetesのリソースを抽象化する ◦ 開発者から見てよりシンプルに • 独自のFaaSを構築するためのパーツを提供 ◦ Serving、Build、Eventingから構成される •

    よくあるが難しい課題を解決 ◦ コンテナのデプロイ ◦ ソースコードからURLでアクセスできるアプリケーションへ ◦ ブルー/グリーンデプロイを伴うルーティングとトラフィック管理 ◦ オートスケーリングと需要に基づくワークロードのサイズ設定 ◦ 実行中のサービスをイベントエコシステムに結び付ける ※https://github.com/knative/docs
  17. 34.

    今日のお話 • 僕とServerlessとの出会い • 僕とKubernetesとの出会い • KubernetesとServerlessとの出会い • Knativeの構成要素 •

    Knativeの方向性 • 僕とKnativeの方向性 • 付録 ◦ Knativeの素敵資料 ◦ KnativeとCRDとOperator
  18. 38.
  19. 41.

    今日のお話 • 僕とServerlessとの出会い • 僕とKubernetesとの出会い • KubernetesとServerlessとの出会い • Knativeの構成要素 •

    Knativeの方向性 • 僕とKnativeの方向性 • 付録 ◦ Knativeの素敵資料 ◦ KnativeとCRDとOperator
  20. 42.

    僕とKnativeの方向性 • 『入門 Knative(仮)』@技術書典6 う46 ◦ 明日から本気出す! • Serverlessconf NYC

    2019にプロポーザル出す ◦ CFP closes 2019/6/3 ◦ https://nyc2019.serverlessconf.io/ • CloudNative Days Tokyo 2019にプロポーザル出しました ◦ ご興味ある方いいねやリツイートで応援お願いします!
  21. 43.

    今日のお話 • 僕とServerlessとの出会い • 僕とKubernetesとの出会い • KubernetesとServerlessとの出会い • Knativeの構成要素 •

    Knativeの方向性 • 僕とKnativeの方向性 • 付録 ◦ Knativeの素敵資料 ◦ KnativeとCRDとOperator
  22. 44.

    付録 Knativeの素敵資料 • 公式ドキュメント ◦ とても整理されていて図も豊富でわかりやすいです ◦ https://github.com/knative/docs • Getting Started

    with Knative (Compliments of Pivotal) ◦ Pivotalの方が執筆した81ページのebookが無料です ◦ https://content.pivotal.io/ebooks/getting-started-with-knative • Using Knative to deploy serverless applications to Kubernetes ◦ GKEを使ったServingとBuildのハンズオン ◦ Cloud Shell上でサクサク進められてよかったです ◦ https://codelabs.developers.google.com/codelabs/knative-intro/#0
  23. 45.

    付録 Knativeの素敵資料 • Hands on Knative — Part 1 ◦ Serving ◦ https://medium.com/google-cloud/hands-on-knative-part-1-f2d5ce89944e

    • Hands on Knative — Part 2 ◦ Eventing ◦ https://medium.com/google-cloud/hands-on-knative-part-2-a27729f4d756 • Hands on Knative — Part 3 ◦ Build ◦ https://medium.com/google-cloud/hands-on-knative-part-3-d8731ad2f23d
  24. 46.

    付録 Knativeの素敵資料 • Knative: Building serverless platforms on top of Kubernetes

    ◦ https://seattle.serverlessdays.io/media/slides/Kubernetes+Serverless=Knative.pd f • Beyond Kubernetes - Knative, riff, and Spring Cloud Function ◦ https://speakerdeck.com/saturnism/beyond-kubernetes-knative-riff-and-spring- cloud-function • サーバーレスからコンテナまで。Knativeのお話 ◦ https://speakerdeck.com/jacopen/sabaresukarakontenamade-knativefalseohua • Knative Serving 入門 ◦ https://speakerdeck.com/takaishi/kubernetes-meetup-13
  25. 47.

    付録 KnativeとCRDとOperator • Kubernetesは期待する状態を宣言的に記述したマニフェスト情報 をもとにリソースを登録する ◦ Deployment、ReplicaSet、Pod、Serviceなど • Kubernetesは現在の状態と期待する状態が異なれば期待する状 態になるように調整する ◦

    コントロールループ • リソースはユーザが独自に定義でき (CustomResourceDefinition)、その状態を調整するコントロー ラー(Operator)も実装できる • Knativeのコンポーネントの個々の構成要素(Service、Route、 Configration、Revisionなど)もCRD • KnativeはKubenetes nativeな機能で構成されている