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

C000f292a92b894afabbb352e8709667?s=128

Toshinori Sugita

October 21, 2019
Tweet

Transcript

  1. Knativeで作るDIY FaaS
 @toshi0607


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

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

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

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

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

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

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

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

    scaling, and management of containerized applications.
 ※https://kubernetes.io/
  8. Kubernetesのコンセプト
 • 「あるべきリソースの状態」を宣言的 に定義した設定を適用
 • K8sのコントローラーがリソースを監 視し、「あるべきリソースの状態」を維 持し続ける
 →故障時の復旧や高負荷時のオートス ケールなどで運用負荷を低減できる


    ※https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
  9. ワークショップで登場するリソース
 • Service(LB)
 ◦ Podへのロードバランシングとエンドポイントの提供
 • Deployment(Workload)
 ◦ ReplicaSet、Podのデプロイ戦略管理 


    • ReplicaSet(Workload)
 ◦ Podの数量管理
 • Pod(Workload)
 ◦ 1つ以上のコンテナから成る最小実行単位
 • Secret(Config)
 ◦ Podが参照する機密情報
 ※https://kubernetes.io/docs/concepts/
  10. ワークショップで登場するリソース
 ※https://kubernetes.io/docs/concepts/ Deployment
 Service
 ReplicaSet
 Pod
 Pod
 Secret


  11. 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
  12. カスタムリソース
 • 独自のリソースを追加できる
 ◦ CustomResourceDefinition
 ◦ API server aggrigation
 •

    バリデーションやその他メタ情報を定 義
 • CRDで定義したカスタムリソースに対 するCRUDが可能になる
 ※https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/
  13. カスタムコントローラー
 • 独自のコントローラーを追加できる
 • 既存のリソースやカスタムリソースの変更を検知し、理想状態にな るよう調整する
 • カスタムコントローラーのDockerイメージをDeploymentでK8sクラス ター上にデプロイする
 ※https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

  14. Kubernetesでのアプリケーション開発
 • コードを書く
 • Dockerfileを書く
 • Dockerイメージをビルドする
 • Dockerイメージをレジストリにプッシュする
 •

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

  15. Knativeとは?
 Kubernetes-based platform to build, deploy, and manage modern serverless

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

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

  17. 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

  18. ロールによるメリットの違い
 ※https://github.com/knative/docs/tree/master/docs

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

    プラットフォーム 2 Knativeベースのプラットフォーム利用 開発者 3 DIY FaaS Platform プラットフォーム 4 Knativeベースのマネージドサービス利用 開発者 5 参考情報 -
  20. ※https://techbookfest.org/event/tbf07

  21. ご参加ありがとうございました!
 Knativeで作るDIY FaaS