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

    @toshi0607


    View Slide

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

    View Slide

  3. Knativeで作るDIY FaaS

    ● ワークショップ

    ○ https://bit.ly/35SATGr

    ○ GitHub toshi0607

    ● スライド

    ○ https://bit.ly/2P9SWls

    ○ SpeakerDeck toshi0607


    View Slide

  4. ワークショップの楽しみ方

    ● 自分のペースでやりたい方

    ○ どんどん進めて行ってください!

    ○ 各Stepに「参考」セクション

    ○ いますぐ着手しても大丈夫です!

    ● 解説を聞きながらじっくり進めたい方

    ○ 僕と一緒に手を動かしていきましょう!

    ○ ゆっくり目にやります

    ○ ワークショップの前にKubernetes、Knativeの概要説明します


    View Slide

  5. 自己紹介

    ● 杉田 寿憲

    ○ Toshinori Sugita

    ○ toshi0607

    ● Software [email protected]メルペイ

    ○ Go、gPRC、GKEなマイクロサービスのバックエンド開発

    ● 本

    ○ 『Knativeソースコードリーディング入門』

    ○ 『Knativeの歩き方 KubernetesからServerlessを訪ねて』

    ○ 『GoとSAMで学ぶAWS Lambda』

    ○ 『Extensive Xamarin(共著)』


    View Slide

  6. メルペイでのマイクロサービス開発

    各機能を実現する
    マイクロサービス開発チーム
    ● バックエンドエンジニア
    ● フロントエンドエンジニア
    ● iOS/Androidエンジニア
    ● デザイナー
    ● PM
    共通基盤とサービス全体を
    見る横串チーム
    ● SRE
    ● アーキテクトチーム
    ● Microservices Platformチーム
    ● Data platformチーム
    ● ソリューションチーム

    View Slide

  7. Kubernetesとは?

    Kubernetes (K8s) is an open-source system for automating
    deployment, scaling, and management of containerized
    applications.

    ※https://kubernetes.io/

    View Slide

  8. Kubernetesのコンセプト

    ● 「あるべきリソースの状態」を宣言的
    に定義した設定を適用

    ● K8sのコントローラーがリソースを監
    視し、「あるべきリソースの状態」を維
    持し続ける

    →故障時の自動復旧や高負荷時のオー
    トスケールなどで運用負荷を低減

    ※https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

    View Slide

  9. ワークショップで登場するリソース

    ● Pod(Workload)

    ○ 1つ以上のコンテナから成る最小実行単位

    ● ReplicaSet(Workload)

    ○ Podの数量管理

    ● Deployment(Workload)

    ● ReplicaSet、Podのデプロイ戦略管理

    ● Service(LB)

    ○ Podへのロードバランシングとエンドポイントの提供

    ● Secret(Config)

    ○ Podが参照する機密情報

    ※https://kubernetes.io/docs/concepts/

    View Slide

  10. ワークショップで登場するリソース

    ※https://kubernetes.io/docs/concepts/
    Deployment

    Service

    ReplicaSet

    Pod

    Pod
 Secret


    View Slide

  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

    View Slide

  12. カスタムリソース

    ● 独自のリソースを追加できる

    ○ CustomResourceDefinition

    ○ API server aggrigation

    ● バリデーションやその他メタ情報を定
    義

    ● CRDで定義したカスタムリソースに対
    するCRUDが可能になる

    ※https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

    View Slide

  13. カスタムコントローラー

    ● 独自のコントローラーを追加できる

    ● 既存のリソースやカスタムリソースの変更を検知し、理想状態にな
    るよう調整する

    ● カスタムコントローラーのDockerイメージをDeploymentでK8sクラス
    ター上にデプロイする

    ※https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

    View Slide

  14. Kubernetesでのアプリケーション開発

    ● コードを書く

    ● Dockerfileを書く

    ● Dockerイメージをビルドする

    ● Dockerイメージをレジストリにプッシュする

    ● サービスをデプロイする

    ● サービスをインターネットに公開する

    ● モニタリングの設定

    ● オートスケールの設定

    →開発者はビジネスロジックの実装により集中したい


    View Slide

  15. Knativeとは?

    Kubernetes-based platform to build, deploy, and manage modern
    serverless workloads

    ※https://github.com/knative

    View Slide

  16. Knativeとは?

    ● Kubernetesのリソースを抽象化する

    ○ 開発者から見てよりシンプルに

    ● 独自のPaaS/FaaSを構築するためのパーツを提供

    ○ Serving、Eventingから構成される

    ● よくあるが難しい課題を解決

    ○ コンテナのデプロイ

    ○ ソースコードからURLでアクセスできるアプリケーションへ

    ○ ブルー/グリーンデプロイを伴うルーティングとトラフィック管理

    ○ オートスケーリングと需要に基づくワークロードのサイズ設定

    ○ 実行中のサービスをイベントエコシステムに結び付ける

    ※https://github.com/knative/docs
    開発者・運用者がよりビジネス価値に集中できるプラットフォームを構築する


    View Slide

  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


    View Slide

  18. ロールによるメリットの違い

    ※https://github.com/knative/docs/tree/master/docs

    View Slide

  19. ワークショップの構成

    ※https://github.com/toshi0607/build-your-own-platform-with-knative
    Step コンテンツ 想定ロール
    0 クラスタの構築 プラットフォーム
    1 各コンポーネントの理解 プラットフォーム
    2 Knativeベースのプラットフォーム利用 開発者
    3 DIY FaaS Platform プラットフォーム
    4 Knativeベースのマネージドサービス利用 開発者
    5 後片付けと参考情報 -

    View Slide

  20. ※https://techbookfest.org/event/tbf07

    View Slide

  21. ご参加ありがとうございました!

    Knativeで作るDIY FaaS


    View Slide