Slide 1

Slide 1 text

Knativeで実現する
 Kubernetes上のサーバーレスアーキテクチャ
 @toshi0607
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 2

Slide 2 text

※https://cloudnativedays.jp/cndt2019/ #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 3

Slide 3 text

自己紹介
 ● 杉田 寿憲
 ○ Toshinori Sugita
 ○ toshi0607
 ● Software Engineer@メルペイ
 ○ Go、gPRC、GKEなマイクロサービスのバックエンド開発
 ● 本
 ○ 『Knativeの歩き方 KubernetesからServerlessを訪ねて』
 ○ 『GoとSAMで学ぶAWS Lambda』
 ○ 『Extensive Xamarin(共著)』
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 4

Slide 4 text

#ふわふわくん #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 5

Slide 5 text

今日のお話
 ● Knativeの概要
 ● KnativeとKuberentes
 ● KubernetesとServerless
 ● Knativeのユースケース
 ● まとめ
 ● 参考資料
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 6

Slide 6 text

今日のお話
 ● Knativeの概要
 ● KnativeとKuberentes
 ● KubernetesとServerless
 ● Knativeのユースケース
 ● まとめ
 ● 参考資料
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 7

Slide 7 text

Knativeとは?
 Kubernetes-based platform to build, deploy, and manage modern serverless workloads
 ※https://github.com/knative #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 8

Slide 8 text

Knativeとは?
 ● Kubernetesのリソースを抽象化する
 ○ 開発者から見てよりシンプルに
 ● 独自のPaaS/FaaSを構築するためのパーツを提供
 ○ Serving、Build、Eventingから構成される
 ● よくあるが難しい課題を解決
 ○ コンテナのデプロイ
 ○ ソースコードからURLでアクセスできるアプリケーションへ
 ○ ブルー/グリーンデプロイを伴うルーティングとトラフィック管理
 ○ オートスケーリングと需要に基づくワークロードのサイズ設定
 ○ 実行中のサービスをイベントエコシステムに結び付ける
 ※https://github.com/knative/docs #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 9

Slide 9 text

Knativeの構成要素
 ※https://github.com/knative/docs/tree/master/docs Kubernetes
 Istio or Gloo
 Serving
 Build
 Eventing
 Platform
 Gateway
 Primitives


Slide 10

Slide 10 text

Servingの役割
 ※https://github.com/knative/docs/tree/master/serving ● コンテナの迅速なデプロイ
 ● オートスケールアウト・イン(0まで)
 ● Istio向けのトラフィック・ネットワーク設定
 ● コードと設定のバージョン管理
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 11

Slide 11 text

Servingの構成要素
 ※https://github.com/knative/docs/tree/master/serving ● Revision: コードと設定のスナップショット
 ● Configuration: 最新のRevision
 ● Route: Revisionにルーティング
 ● Service: RouteとConfigurationを管理。k8s のServiceとは別
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 12

Slide 12 text

REVISION Servingの構成要素
 ※https://github.com/knative/serving/blob/master/docs/scaling/DEVELOPMENT.md ● Autoscaler: Revisionの同時リクエスト数を監視、調整
 ● Activator: RevisionがReserve State時リクエストを受ける
 ROUTE Istio Route
 Activator
 Pods
 Deployment
 Autoscaler
 metrics
 resize
 active route
 inactive route
 activate
 create
 watch
 first


Slide 13

Slide 13 text

Istioは必須?
 ※https://knative.dev/docs/install/index.html 代替手段はあるがKnative全コンポーネントを利用するには今のところ必須
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 14

Slide 14 text

Buildの役割と構成要素
 ※https://github.com/knative/docs/tree/master/build ● ソースコードをコンテナイメージに変換する
 ● ビルドパイプラインは複数のstepで構成される
 ○ 各stepはコンテナイメージ
 ○ クラスタのコンテナ内で実行される
 ● BuildTemplateでテンプレート化・再利用できる
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 15

Slide 15 text

BuildTemplate
 ※https://github.com/knative/build-templates #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 16

Slide 16 text

BuildとTeketon
 ※https://github.com/knative/build/issues/614 ● knative/build-pipelineとしてはじまった knative/build強化プロジェクトのTekton Pipelineに移行の議論中
 ● v0.7でServingがBuildを利用していた機能 (DockerイメージにBuild自体を指定する)を 廃止
 ● BuildのREADME上でもdeplicationへの feedback受付中を明記
 ● v1.0でknative/buildをアーカイブするスケ ジュール
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 17

Slide 17 text

BuildとTeketon
 ※https://github.com/knative/build/issues/614 ● 2019/7/12にKnative BuildをTektonに移行 するためのドキュメントPRが tektoncd/pipelineにマージされる
 ● K8sリソースの対応関係、差異、 BuildTemplate -> TaskとBuild -> TaskRun の移行例がまとまっている
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 18

Slide 18 text

BuildとTeketon
 ※https://github.com/triggermesh/tm/releases/tag/v0.0.12 ● Knative活用プロジェクトにも移行が完了し たものがある
 ● knative/buildの互換性は維持
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 19

Slide 19 text

Eventingの役割
 ※https://github.com/knative/docs/tree/master/eventing ● イベントドリブンなアーキテクチャをサポート
 ● イベントの発行元と受け手を抽象化
 ● 既存の発行元、受け手の変更なく他サービスを接続
 ● CNCF Serverless WGのCloudEventsに則りサービス間の相互 運用性を保証
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 20

Slide 20 text

Eventingの構成要素
 ※https://github.com/knative/docs/tree/master/eventing ● Source: イベントソース。種類毎にリソースを定義
 ● Broker: イベントを受け取り、フィルタリングされたものをService(subscriber)に渡す
 ● Trigger: subscriberにわたすイベントのフィルター
 Broker
 Service
 Trigger
 ✓ ✓ ✓ filter
 subscriber
 broker
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 21

Slide 21 text

Eventingの構成要素(〜v0.3)
 ※https://github.com/knative/docs/tree/master/eventing ● Source: イベントソース。種類毎にリソースを定義
 ● Channel: イベントのバッファリング、Serviceへの到達保証
 ● Subscription: ChannelからイベントをServiceに渡す
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 22

Slide 22 text

Event Source
 ※https://github.com/knative/docs/tree/master/docs/eventing/sources ContainerSource Event Sourceとして独自に作成することも可能
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 23

Slide 23 text

今日のお話
 ● Knativeの概要
 ● KnativeとKuberentes
 ● KubernetesとServerless
 ● Knativeのユースケース
 ● まとめ
 ● 参考資料
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 24

Slide 24 text

Kubernetesとは?
 Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.
 ※https://kubernetes.io/ #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 25

Slide 25 text

Kubernetesのコンセプト
 ● 「あるべきリソースの状態」を宣言的 に定義した設定を適用
 ● K8sのコントローラーがリソースを監 視し、「あるべきリソースの状態」を維 持し続ける
 →故障時の復旧や高負荷時のオートス ケールなどで運用負荷を低減できる
 ※https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 26

Slide 26 text

Kubernetesのアーキテクチャ
 node2
 node1
 kubectl
 etcd
 kube-
 apiserver
 kube-
 scheduler
 kube-
 controller-
 manager
 kube-proxy
 kubelet
 kube-proxy
 kubelet
 Docker etc...
 Docker etc...
 ・・・ ※https://kubernetes.io/docs/concepts/architecture/cloud-controller/ #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 27

Slide 27 text

カスタムリソース
 ● 独自のリソースを追加できる
 ○ CustomResourceDefinition
 ○ API server aggrigation
 ● バリデーションやその他メタ情報を定 義
 ● CRDで定義したカスタムリソースに対 するCRUDが可能になる
 ※https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 28

Slide 28 text

カスタムコントローラー
 ● 独自のコントローラーを追加できる
 ● 既存のリソースやカスタムリソースの変更を検知し、理想状態にな るよう調整する
 ● カスタムコントローラーのDockerイメージをDeploymentでK8sクラス ター上にデプロイする
 ※https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

Slide 29

Slide 29 text

Kubernetes nativeなKnative
 ※https://github.com/knative/serving/tree/master/config ● Knativeもカスタムリソースとカスタムコント ローラーで構成されている
 ● KnativeのインストールはCRD(左図青枠が knative/servingのもの)に加え、カスタムコ ントローラーのDeploymentなど必要なコン ポーネントのyamlをkubectl applyすることが 主な作業になる
 ● K8s nativeな手法でプラットフォームを拡張 する
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 30

Slide 30 text

今日のお話
 ● Knativeの概要
 ● KnativeとKuberentes
 ● KubernetesとServerless
 ● Knativeのユースケース
 ● まとめ
 ● 参考資料
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 31

Slide 31 text

サーバーレスとは
 ※https://martinfowler.com/articles/serverless.html ● サーバーレスアーキテクチャは、サードパー ティのBaaSサービスを組み込んだ、または FaaSプラットフォーム上の管理された一時的 なコンテナで実行されるカスタムコードを含 むアプリケーション設計
 ● ベンダー依存と比較的未成熟なサービスサ ポートと引き換えに運用コスト、複雑性、エン ジニアリングリードタイムを低減
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 32

Slide 32 text

サーバーレスとは
 ※https://medium.com/@PaulDJohnston/serverless-is-a-doctrine-not-a-technology-4193ccb66cfc ● (FaaSなどの)サービス自体はサーバーレス ではない。どのように構築されるかのアプ ローチがサーバーレスであり、サーバーレ スアプリケーションを生み出す。
 ● サーバーレスアプリケーションは、アプリ ケーションのライフサイクル全体にわたって 最大のビジネス価値を提供するものであ り、データストレージの費用を除いて、誰も 使用していないときに実行する必要はない というもの


Slide 33

Slide 33 text

サーバーレスとは
 ※https://github.com/cncf/wg-serverless/tree/master/whitepapers/serverless-overview ● サーバー管理を必要としないアプリケーション を構築および実行するという概念
 ● 必要とされている正確な需要に応じて実行、 拡張、請求を行うデプロイモデル
 ● サーバーレスコンピューティングの利用者は、 サーバーのプロビジョニング、メンテナンス、 アップデート、拡張、キャパシティプランニング に時間とリソースを費やす必要がなくなる
 ● 開発者がよりアプリケーションのビジネスロ ジック開発に集中できるようになる
 ● 運用者がよりビジネスクリティカルなタスクに 集中できる


Slide 34

Slide 34 text

Kubernetesとサーバーレス
 ※https://github.com/knative/serving/blob/master/docs/spec/motivation.md ● Knativeはステートレス、プロセススケールア ウトモデル、アプリケーションレベルのリクエ ストトラフィック駆動をサーバーレスワーク ロードを捉える
 ● それらのうちK8s自体で基本的なパーツは 提供している
 ● 共通インフラの自動化を一層推進するため の抽象度の高いパーツを標準化することで 「yamlをkubectlで更新」より使いやすいツー ルキットを提供できるはず
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 35

Slide 35 text

Knativeとは?
 ● Kubernetesのリソースを抽象化する
 ○ 開発者から見てよりシンプルに
 ● 独自のPaaS/FaaSを構築するためのパーツを提供
 ○ Serving、Build、Eventingから構成される
 ● よくあるが難しい課題を解決
 ○ コンテナのデプロイ
 ○ ソースコードからURLでアクセスできるアプリケーションへ
 ○ ブルー/グリーンデプロイを伴うルーティングとトラフィック管理
 ○ オートスケーリングと需要に基づくワークロードのサイズ設定
 ○ 実行中のサービスをイベントエコシステムに結び付ける
 ※https://github.com/knative/docs 開発者・運用者がよりビジネス価値に集中できるプラットフォームを構築する


Slide 36

Slide 36 text

Knativeによるプラットフォームの拡張
 ※https://github.com/knative/docs/tree/master/docs Kubernetes
 Istio or Gloo
 Serving
 Build
 Eventing
 Platform
 Gateway
 Primitives
 GitLab Serverless
 Your Own!
 Pivotal Function Service
 OpenFaaS functions
 Cloud Run
 Knative Lambda Runtimes
 Products


Slide 37

Slide 37 text

今日のお話
 ● Knativeの概要
 ● KnativeとKuberentes
 ● KubernetesとServerless
 ● Knativeのユースケース
 ● まとめ
 ● 参考資料
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 38

Slide 38 text

ユースケース① コンテナのデプロイ
 ※https://github.com/toshi0607/CNDT2019-Knative/tree/master/usecase1 ● 課題
 ○ URLでアクセスできるサービスをより楽に管理したい
 ○ Deployment、Service…
 ● knative/serving
 ○ Deployment、Service(K8s)リソースなどが抽象化されたService(Knative)リ ソースを適用してURLアクセスできるアプリケーションを楽にデプロイ
 ● Demo
 ○ TARGET環境変数にセットされた文字列を使ってHello worldを出力するアプリ ケーションをService(Knative)リソースの適用でデプロイ
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 39

Slide 39 text

ユースケース① コンテナのデプロイ
 Deployment
 k8s Service
 ReplicaSet
 Pod
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 40

Slide 40 text

ユースケース② オートスケール
 ※https://github.com/toshi0607/CNDT2019-Knative/tree/master/usecase2 ● 課題
 ○ リクエスト数に応じてオートスケールさせたい
 ○ スケール具合を可視化しながら調整したい
 ● knative/serving
 ○ Pod毎の並列リクエスト数を制御・設定
 ■ K8sのメモリベースのHPA(Horizontal Pod Autoscaler)に変更でき、カスタ ムメトリクス対応も目標の1つとされている
 ○ servingのReleasesにモニタリング系のyamlも含まれており、メトリクス、ログ、ト レースそれぞれ選択肢がある
 ■ kubectl apply --filename https://github.com/knative/serving/releases/download/v0.7.0/monitoring.yaml 
 ● Demo


Slide 41

Slide 41 text

ユースケース② オートスケール
 ※https://github.com/knative/docs/blob/master/docs/serving/configuring-the-autoscaler.md ● autoscalerの設定はConfigMapとして管理さ れている
 ● knative/servingのインストール(kubectl apply)時に適用するyamlにこのデフォルト設 定が含まれる
 ● Serviceリソースの spec.template.metadata.annotationsで設定 できるものもあるが詳細はConfigMapを変更 する


Slide 42

Slide 42 text

ユースケース③ トラフィック分割
 ※https://github.com/toshi0607/CNDT2019-Knative/tree/master/usecase3 ● 課題
 ○ 新実装へのトラフィックを徐々に増やし、影響を見ながら安全にデプロイしたい
 ● knative/serving
 ○ Routeを利用したブルーグリーンデプロイ
 ● Demo
 ○ Hello Worldアプリケーションに設定するTARGET環境変数を“blue”から “green”に変更(2つのRevisionを作成)
 ○ “green”のRevisionへのトラフィックを0 -> 50 -> 100%と大きくしていく
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 43

Slide 43 text

ユースケース④ イベントエコシステム
 ※https://github.com/knative/docs/tree/master/docs/eventing/samples/gcp-pubsub-source ● 課題
 ○ 特定のイベントが発生したときに処理を実行したい
 ● knative/eventing
 ○ イベントをServiceリソースへのリクエストに変換して処理を実行する
 ● Demo
 ○ Google Cloud PubSubをイベントソースとして利用
 ○ 必要な権限は事前に準備済み
 ■ eventing-contribのgcppubsub関連のリソースをapply
 ■ pubsub.editor権限付きservice accountを作成
 ■ service accountのJSONファイルからSecretリソース作成
 ○ 受け取ったイベントをフォーマットして出力するアプリケーション
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 44

Slide 44 text

ユースケース④ イベントエコシステム
 ※https://cloudevents.io/ #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 45

Slide 45 text

ユースケース⑤ ビルドパイプライン
 ● 課題
 ○ CI/CDもK8sの世界で済ませたい
 ○ ビルドパイプラインを共有したい
 ● knative/build -> tektoncd/pipeline
 ○ K8sのリソースでビルドパイプラインを定義する
 ○ テンプレート化できるので再利用できる
 ※https://github.com/tektoncd/pipeline #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 46

Slide 46 text

ユースケース⑤ ビルドパイプライン
 Pipeline
 Task
 Task
 PipelineResource(input)
 PipelineResource(output)
 PipelineResource(input)
 Pipeline
 Run
 Step
 Step
 Step
 Step
 ※https://github.com/tektoncd/pipeline

Slide 47

Slide 47 text

ユースケース⑥ FaaS イベントpull型
 ※https://github.com/triggermesh/knative-lambda-runtime ● 課題
 ○ イベントドリブンな関数をシュッとデプロイしたい
 ● knative/serving + knative/build (BuildTemplate)
 ○ triggermesh/knative-lambda-runtimeを利用するとユーザーはAWS Lambda互 換のfunctionだけ書いたらデプロイできるプラットフォームを構築できる
 ○ Serviceでリクエストを受けfunctionに受け渡す処理(aws-custom-runtime、 bootstrap)はBuildTemplateを活用してイメージビルド時に埋め込む
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 48

Slide 48 text

AWS Lambdaのfunction(Go)
 ※https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/go-programming-model-handler-types.html ● Handler: イベントを引数にそれをハンドリングするメイン処理を書く
 ● lambda.Start: rpcサーバーにhandlerを登録し、rpcサーバーを起動する


Slide 49

Slide 49 text

aws/aws-lambda-go
 AWS LambdaとRuntime Interface
 ※https://github.com/aws/aws-lambda-go Amazon API Gateway
 lambda.start(handler)
 container
 rpc server
 AWS Lambda Runtime 
 AWS Lambda Runtimeはrpcサーバーを含むコンテナを起動し、イベントを渡す
 request
 proxy
 event
 event
 http
 request
 S3
 event
 SQS
 event
 DynamoDB
 stream
 event


Slide 50

Slide 50 text

AWS LambdaとRuntime Interface
 ※https://qiita.com/toshi0607/items/39004c19d7361a837986 Amazon API Gateway
 container
 bootstrap
 AWS Lambda Custom Runtimes 
 bootstrapからRuntime APIにイベントを取得にし行くのでCOBOLも動く
 proxy
 event
 event
 http
 request
 S3
 event
 SQS
 event
 DynamoDB
 stream
 event
 Next Invocation API
 Invocation Response API
 Invocation Error API
 Initialization Error API
 response
 event
 error
 error


Slide 51

Slide 51 text

ユースケース⑥ FaaS イベントpull型
 ※https://github.com/triggermesh/knative-lambda-runtime ● aws-custom-runtimeがAWS Runtime Interfaceとタスクキューを実装
 ● bootstrapがイベントを取得し、functionをinvoke
 Route
 Service
 Build
 Build
 Template
 Pod
 aws/aws-lambda-go
 lambda.start(handler)
 tm/aws-custom-runtime
 bootstrap
 Configuratio n
 Revision
 get
 event
 exec
 bin
 exec
 bin
 rpc
 Server
 http
 request
 K8s
 request
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 52

Slide 52 text

BuildTemplateで生成するDockerfile
 ※https://github.com/triggermesh/knative-lambda-runtime/blob/master/go-1.x/buildtemplate.yaml

Slide 53

Slide 53 text

ユースケース⑦ FaaS イベントpush型
 ※https://github.com/openfaas ● 課題
 ○ イベントドリブンな関数をシュッとデプロイしたい
 ● knative/serving + knative/build (BuildTemplate)
 ○ OpenFaaSのwatchdogサーバーを利用するとユーザーはfunctionだけ書いたら デプロイできるプラットフォームを構築できる
 ○ Serviceでリクエストを受けfunctionに受け渡す処理(watchdog)は BuildTemplateを活用してイメージビルド時に埋め込む
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 54

Slide 54 text

OpenFaaSのfunction(Go)
 ※https://github.com/openfaas/faas/blob/master/sample-functions/BaseFunctions/golang/handler.go functionは標準入力経由でリクエスト・イベント情報を受け取って処理


Slide 55

Slide 55 text

OpenFaaSのアーキテクチャー
 ※https://docs.openfaas.com/architecture/gateway/ #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 56

Slide 56 text

Watchdogによるfunction制御
 ※https://docs.openfaas.com/architecture/watchdog/ ● functionの起動、モニタリングを責務とするGoで書かれたサーバー
 ● リクエストを標準入力経由でfunctionのプロセスに渡す
 ● watchdogとして再利用することでプラットフォームのユーザーはビジネスロジック (function)の実装に集中できる


Slide 57

Slide 57 text

ユースケース⑦ FaaS イベントpush型
 リクエストとfunctionのハンドリングにwatchdogを活用
 Route
 Service
 Build
 Build
 Template
 Configuratio n
 Revision
 http
 request
 K8s
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 58

Slide 58 text

watchdogとfunction同梱のDockerfile
 ※https://github.com/openfaas/faas/blob/master/sample-functions/BaseFunctions/golang/Dockerfile

Slide 59

Slide 59 text

Knativeを使ったFaaS
 ● Serviceでデプロイするのはコンテナなので、functionの実装に 集中するためにリクエストをfunctionに渡すサーバーを準備す る必要がある
 ● サーバーからfunctionを独立させることでサーバーとfunction を同梱するイメージテンプレートを準備できる
 ● faas-cliやtmのようにCLIでmanifestとkubectlを意識させないデ プロイも実現できる
 ● イベントがcloudeventsに準拠していると各イベント用のライブ ラリを各言語で準備する手間も省ける
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 60

Slide 60 text

ユースケース⑧ コンテナサーバーレス
 ※https://cloud.google.com/run/ ● 課題
 ○ コンテナをシュッとデプロイしたい
 ● knative/serving + knative/build
 ○ Cloud RunやCloud Run on GKEを利用し、コンテナを手軽にデプロイし、負荷 に応じてスケールさせることができるプラットフォームを構築する
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 61

Slide 61 text

ユースケース⑧ コンテナサーバーレス
 ※https://twitter.com/ahmetb/status/1116041166359654400 ● Cloud Runマネージドサービスもあり、コンテ ナを動かすのにK8sの運用をなくす選択肢 もある
 ● Knative Serving APIと互換のAPIで操作す るので操作感も同じ
 ● GCPのコンソールからどちらも同じように状 態や生成されたRevisionのyamlを確認でき る
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 62

Slide 62 text

今日のお話
 ● Knativeの概要
 ● KnativeとKuberentes
 ● KubernetesとServerless
 ● Knativeのユースケース
 ● まとめ
 ● 参考資料
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 63

Slide 63 text

まとめ
 ● KnativeはK8s nativeな方法でK8sプラットフォームを拡張・抽象 化する
 ● K8s上でサーバーレスを実現する手段の1つがKnativeであり、 FaaSに限らず課題に応じて開発者の生産性向上、運用者の 負荷低減のための様々な使い方ができる
 ● FaaSを自分で構築することもできるし、Knativeを利用したプロ ダクトを利用することもできる
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 64

Slide 64 text

今日のお話
 ● Knativeの概要
 ● KnativeとKuberentes
 ● KubernetesとServerless
 ● Knativeのユースケース
 ● まとめ
 ● 参考資料
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 65

Slide 65 text

参考資料 Knative
 ● 公式ドキュメント
 ○ とても整理されていて図も豊富でわかりやすいです
 ○ 主なユースケースのサンプル・解説もある
 ○ https://github.com/knative/docs
 ● 『Getting Started with Knative』
 ○ Pivotalの方が執筆したebookが無料です
 ○ https://content.pivotal.io/ebooks/getting-started-with-knative
 ○ バージョンは古くなってしまったがそれでもユースケースまで載っていて楽しい
 ● 『Knativeの歩き方 KubernetesからServerlessを訪ねて』
 ○ 完全な手前味噌
 ○ https://booth.pm/ja/items/1309468
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 66

Slide 66 text

※https://techbookfest.org/event/tbf07 ● Knative既刊ユースケース + 書き直しの大幅パワーアップ!
 ● Knativeの実装を見ながらK8sのコントローラーを学ぶ新刊
 参考資料 Knative
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 67

Slide 67 text

参考資料 Knative
 ● 8/29 ServerlessDays Melbourne 2019
 ○ Build serverless application on the top of Kubernetes
 ● 10/21、22 ServerlessDays Tokyo 2019
 ○ Knativeのハンズオンをする可能性あり
 ○ プロポーザル募集中!
 ■ https://tokyo.serverlessdays.io/
 ● 12/13、14 ServerlessDays Fukuoka 2019
 ○ Knativeで作るDIY FaaSの話をすべく準備します
 #CNDT2019 #OSDT2019 #RoomE #1E3

Slide 68

Slide 68 text

ご清聴ありがとうございました!
 Knativeで実現する
 Kubernetes上のサーバーレスアーキテクチャ
 #CNDT2019 #OSDT2019 #RoomE #1E3