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

Knativeで作るDIY FaaS / serverless days tokyo 2019 knative workshop

Knativeで作るDIY FaaS / serverless days tokyo 2019 knative workshop

ServerlessDays Tokyo 2019の1日目ワークショップ「Knativeで作るDIY FaaS」です。
https://tokyo.serverlessdays.io/
https://github.com/toshi0607/build-your-own-platform-with-knative

Toshinori Sugita

October 21, 2019
Tweet

More Decks by Toshinori Sugita

Other Decks in Technology

Transcript

  1. Knativeで作るDIY FaaS
 • ワークショップ
 ◦ https://bit.ly/35SATGr
 ◦ GitHub toshi0607
 •

    スライド
 ◦ https://bit.ly/2P9SWls
 ◦ SpeakerDeck toshi0607

  2. ワークショップの楽しみ方
 • 自分のペースでやりたい方
 ◦ どんどん進めて行ってください!
 ◦ 各Stepに「参考」セクション
 ◦ いますぐ着手しても大丈夫です!
 •

    解説を聞きながらじっくり進めたい方
 ◦ 僕と一緒に手を動かしていきましょう!
 ◦ ゆっくり目にやります
 ◦ ワークショップの前にKubernetes、Knativeの概要説明します

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

    Software Engineer@メルペイ
 ◦ Go、gPRC、GKEなマイクロサービスのバックエンド開発
 • 本
 ◦ 『Knativeソースコードリーディング入門』(new!)
 ◦ 『Knativeの歩き方 KubernetesからServerlessを訪ねて』
 ◦ 『GoとSAMで学ぶAWS Lambda』
 ◦ 『Extensive Xamarin(共著)』

  4. メルペイでのマイクロサービス開発
 各機能を実現する マイクロサービス開発チーム • バックエンドエンジニア • フロントエンドエンジニア • iOS/Androidエンジニア •

    デザイナー • PM 共通基盤とサービス全体を 見る横串チーム • SRE • アーキテクトチーム • Microservices Platformチーム • Data platformチーム • ソリューションチーム
  5. Kubernetesとは?
 Kubernetes (K8s) is an open-source system for automating deployment,

    scaling, and management of containerized applications.
 ※https://kubernetes.io/
  6. ワークショップで登場するリソース
 • Service(LB)
 ◦ Podへのロードバランシングとエンドポイントの提供
 • Deployment(Workload)
 ◦ ReplicaSet、Podのデプロイ戦略管理 


    • ReplicaSet(Workload)
 ◦ Podの数量管理
 • Pod(Workload)
 ◦ 1つ以上のコンテナから成る最小実行単位
 • Secret(Config)
 ◦ Podが参照する機密情報
 ※https://kubernetes.io/docs/concepts/
  7. Kubernetesのアーキテクチャ
 worker node2
 worker 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/ master node
  8. カスタムリソース
 • 独自のリソースを追加できる
 ◦ CustomResourceDefinition
 ◦ API server aggrigation
 •

    バリデーションやその他メタ情報を定 義
 • CRDで定義したカスタムリソースに対 するCRUDが可能になる
 ※https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
  9. Kubernetesでのアプリケーション開発
 • コードを書く
 • Dockerfileを書く
 • Dockerイメージをビルドする
 • Dockerイメージをレジストリにプッシュする
 •

    サービスをデプロイする
 • サービスをインターネットに公開する
 • モニタリングの設定
 • オートスケールの設定
 →開発者はビジネスロジックの実装により集中したい

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

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

  11. Knativeスタック
 ※https://github.com/knative/docs/tree/master/docs Kubernetes
 Istio, Gloo or Ambassador 
 Serving
 Build


    Eventing
 Platform
 Gateway
 Primitives
 GitLab Serverless
 Your Own!
 Pivotal Function Service
 Cloud Run
 SAP Kyma
 Knative Lambda Runtimes
 Products

  12. ワークショップの構成
 ※https://github.com/toshi0607/build-your-own-platform-with-knative Step コンテンツ 想定ロール 0 クラスタの構築 プラットフォーム 1 各コンポーネントの理解

    プラットフォーム 2 Knativeベースのプラットフォーム利用 開発者 3 DIY FaaS Platform プラットフォーム 4 Knativeベースのマネージドサービス利用 開発者 5 参考情報 -