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

IBM Cloud Code Engine が GA される前に Knative を予習しよう / Pre-larning of IBM Cloud Code Engine

IBM Cloud Code Engine が GA される前に Knative を予習しよう / Pre-larning of IBM Cloud Code Engine

12/4 に IBM Cloud Festa Online 2020 で発表した資料です。

Yoshihiro Kishida

December 10, 2020
Tweet

More Decks by Yoshihiro Kishida

Other Decks in Technology

Transcript

  1. IBM Cloud Code Engine が GA される前に Knative を予習しよう 2020/12/04

    Cloud Platform Technical Sales 岸田 吉弘 © 2020 IBM Corporation
  2. Knative 3 © 2020 IBM Corporation 「モダンなサーバーレスワークロードをデプロイ、管理するためのKubernetes ベースのプラットフォーム」 ( Kubernetes-based

    platform to deploy and manage modern serverless workloads. ) - Kubernetesの上に構築し、Kubernetesを抽象化 - 開発者がコーディングに集中できるようにする - イベント駆動型のアプリを簡単にデプロイ・管理できる仕組みを提供 https://knative.dev/
  3. Knative 構成図 4 © 2020 IBM Corporation Ambassador, Contour, Gloo,

    Istio, Kong, Kourier Knative Kubernetes Serving Eventing Platform Gateway Primitive
  4. Knative の2つのコンポーネント 5 © 2020 IBM Corporation • ゼロスケール可能なHTTPリクエスト・ベースの コンピューティング機能を提供

    • コンテナアプリの実行とスケーリング、 トラフィックの管理を実施 • イベント駆動型アプリケーションを構築 するためのデリバリーとサブスクリプションの メカニズムを提供 • 外部のイベントとの連携 Knative Serving Knative Eventing
  5. • アプリのデプロイ • コンテナイメージと設定を 1つのバージョンとして管理 • 外部へのアプリ公開 • オートスケール •

    負荷やCPUに応じてスケール • 最小でゼロまで • アプリのバージョン管理 • 新バージョンがデプロイされる とトラフィックも自動で変更 • エンドポイントはそのまま • トラフィックの制御 • 専用のURLの付与 Knative Service Revision 1 Revision 1 App v1 Config Endpoint 90% 10% ユーザー Tag Tester Revision 1 Revision 1 Revision 1 Revision 1 App v2 Config App v3 Config Endpoint © 2020 IBM Corporation 6 Knative Serving でできること
  6. 裏側では様々な リソースが 作成されている • Deployment • ReplicaSet • Pod •

    Service • Podmetrics • Virtualservice • Pod Autoscaler • Revision • Route • Service (一部抜粋)
  7. アプリを修正してデプロイ 10 © 2020 IBM Corporation value の値を v1 →

    v2 に変更 エンドポイントは変わらず、 新バージョンのアプリにルーティングされる
  8. Revision 11 © 2020 IBM Corporation Knative ではアプリは Revision という単位でスナップショットがとられ、管理される

    アプリを修正してデプロイすると、Revision が新しく生成される v1をデプロイ v2に変更して 再デプロイ
  9. Knative Serving のしくみのまとめ 13 © 2020 IBM Corporation • Knative

    Service • ワークロードのライフサイクルを管理 • Route と Configuration を管理 • Configuration • Revision を管理 • 最新の Revision 情報をもつ • Revision • アプリコード(コンテナイメージ) と設定(環境変数など)のスナップショット • Route • Revisionに対するHTTPリクエストルーティング の状態を管理 https://knative.dev/docs/serving/
  10. Pod のゼロスケール 14 © 2020 IBM Corporation Knative Serviceをデプロイしたあと、しばらく経つと Pod

    の数が0になる アプリにアクセスすると、再び Pod が生成される
  11. オートスケール 15 © 2020 IBM Corporation • Queue Proxy •

    サイドカーコンテナ • リクエストをユーザーコンテナ (アプリ)に 転送 • リクエスト数と Concurrency の設定値を比較し アプリの処理量を調整 • Autoscaler • Queue Proxy や Activator からメトリクスを収集 • 収集したメトリクスから必要な Pod 数を計算し、 スケールを決定 • Activator • ゼロスケール時、リクエストはActivatorに転送され、 • リクエストが来たらPodを作成するようAutoscalerに 依頼 • Pod が準備できたらリクエストを転送 • Autoscaler と常時 websocket 接続 オートスケールを実現しているコンポーネント https://github.com/knative/serving/blob/master/docs/scaling/SYSTEM.md 定常時のデータの流れ
  12. Servingの機能:Podの最小数・最大数の設定 17 © 2020 IBM Corporation • アプリに対して実行する Pod の

    最小数と最大数を指定可能 • デフォルトの最小数はゼロ • 最小数を1にすることで、 アプリがスケールインした際に Pod 数がゼロになることを防げる
  13. Servingの機能:Podごとの同時処理可能数の設定 18 © 2020 IBM Corporation Pod が同時に処理可能なリクエスト数を指定できる(デフォルト:100) concurrency =

    1 concurrency = 10 3 同時リクエストがあった場合 Concurrency を変更することで実行するPod数を変更できる
  14. Servingの機能:リクエスト数やCPU使用率によるスケール 19 © 2020 IBM Corporation • デフォルトでは、アプリに対する 同時リクエストが1 Pod

    あたり 100 を超えると、自動でスケール • CPUの使用率(cpu)や、 1秒あたりのリクエスト数(rps)も メトリクスとして設定が可能
  15. Knative Eventing 20 © 2020 IBM Corporation • Broker :

    • イベントを受け取って、フィルタリングされたものをService(Subscriber)に渡す • Trigger : • Service(Subscriber)に渡したいイベントのフィルター https://knative.dev/docs/eventing/
  16. Knative Eventing Sample 21 © 2020 IBM Corporation Event Source

    Broker Trigger Trigger Trigger Service Service https://knative.dev/blog/2020/05/01/getting-started-with-knative-eventing-using-bitcoin-transaction-data/
  17. IBM Cloud Code Engine アーキテクチャ 25 © 2020 IBM Corporation

    Multi-Tenant Kubernetes (IBM Cloud) knative Istio Developer End Users Function App Container IBM Cloud Code Engine Batch Jobs ... Speed & Ease of Use Control Physical Machines Virtual Machines
  18. IBM Cloud Code Engine アーキテクチャ 26 © 2020 IBM Corporation

    Multi-Tenant Kubernetes (IBM Cloud) knative Istio Developer End Users Function App Container IBM Cloud Code Engine Batch Jobs ... Speed & Ease of Use Control Physical Machines Virtual Machines ???
  19. Tekton 27 © 2020 IBM Corporation Knative Build は Tekton

    に移行 Gitからソースコード取得、ソースコードのコンテナイメージへの変換、コンテナレジストリーへの格納 Build Strategy (build mechanism) Dockerfile FROM ... COPY ... RUN ... ENTRYPOINT ... $ docker build ... Buildpacks • コードを解析して 言語を検出 • 言語に合った ビルダーを選択 • ビルドして コンテナイメージ化
  20. Code Engine で使える2つのビルドツール 28 © 2020 IBM Corporation A collection

    of buildpacks - Cloud Native Buildpacks フレームワークを 活用して、イメージのビルドを簡単、 高性能、安全に実施 - 言語、ランタイム、フレームワークは継続 的にパッチが当てられ、脆弱性やアップ デートに対応 A tool to build container images - Dockerfile からコンテナイメージをビルド - Dockerfile 内の各コマンドをユーザ空間内 のみで実行 - Docker デーモンを簡単に、あるいは安全 に実行できない環境でのコンテナイメージ のビルドを可能にする (標準的なKubernetesクラスタなど) https://github.com/paketo-buildpacks https://github.com/GoogleContainerTools/kaniko
  21. まとめ 30 © 2020 IBM Corporation • Knative • モダンなサーバーレスワークロードをデプロイ、

    管理するためのKubernetes ベースのプラットフォーム • Serving • コンテナアプリの実行とスケーリング • ネットワーク制御 • Eventing • 外部イベントとの連携 • Knative のマネージド・サービスとして IBM Cloud Code Engine をリリース • Source-to-Image 機能を提供 • Buildpack (Paketo) • Dockerfile (Kaniko) • 現在ベータ版が提供中。無料で使えます!
  22. 31 © 2020 IBM Corporation ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独⾃の⾒解を反映したものです。それらは情報 提供の⽬的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助⾔を意図したものではなく、またそのような結果を⽣むも のでもありません。本講演資料に含まれている情報については、完全性と正確性を期するよう努⼒しましたが、「現状のまま」提供され、明⽰または暗 ⽰にかかわらずいかなる保証も伴わないものとします。本講演資料またはその他の資料の使⽤によって、あるいはその他の関連によって、いかなる損害 が⽣じた場合も、IBMは責任を負わないものとします。

    本講演資料に含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかな る保証または表明を引きだすことを意図したものでも、IBMソフトウェアの使⽤を規定する適⽤ライセンス契約の条項を変更することを意図したもので もなく、またそのような結果を⽣むものでもありません。 本講演資料でIBM製品、プログラム、またはサービスに⾔及していても、IBMが営業活動を⾏っているすべての国でそれらが使⽤可能であることを暗⽰ するものではありません。本講演資料で⾔及している製品リリース⽇付や製品機能は、市場機会またはその他の要因に基づいてIBM独⾃の決定権をもっ ていつでも変更できるものとし、いかなる⽅法においても将来の製品または機能が使⽤可能になると確約することを意図したものではありません。本講 演資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上⾼の向上、またはその他の結果が⽣じると述べる、または暗⽰すること を意図したものでも、またそのような結果を⽣むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使⽤し た測定と予測に基づいています。ユーザーが経験する実際のスループットやパフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラ ミングの量、⼊出⼒構成、ストレージ構成、および処理されるワークロードなどの考慮事項を含む、数多くの要因に応じて変化します。したがって、 個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありません。 記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使⽤したか、またそれらのお客様が達成した結果の実例として⽰された ものです。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。 IBM、IBM ロゴ、ibm.com、IBM Cloud、IBM Cloud Paksは、 世界の多くの国で登録されたInternational Business Machines Corporationの商標です。他 の製品名およびサービス名等は、それぞれIBMまたは各社の商標である場合があります。現時点での IBM の商標リストについては、 www.ibm.com/legal/copytrade.shtmlをご覧ください。 Red Hat, OpenShift, OpenShift Virtualization, Red Hat Marketplace は、Red Hat, Inc の商標または登録商標です。