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

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

Toshinori Sugita

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

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