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

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

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

C000f292a92b894afabbb352e8709667?s=128

Toshinori Sugita

December 13, 2019
Tweet

Transcript

  1. Knativeで作るDIY FaaS
 @toshi0607


  2. ※https://fukuoka.serverlessdays.io/

  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ソースコードリーディング入門』
 ◦ 『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. ワークショップで登場するリソース
 • Pod(Workload)
 ◦ 1つ以上のコンテナから成る最小実行単位
 • ReplicaSet(Workload)
 ◦ Podの数量管理
 •

    Deployment(Workload)
 • ReplicaSet、Podのデプロイ戦略管理
 • Service(LB)
 ◦ Podへのロードバランシングとエンドポイントの提供
 • 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, Ambassador or Kourier 
 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