Knative
黒と青の背景
Knative

Knativeを使用すると、Kubernetesクラスターでサーバーレス・ワークロードを実行でき、Kubernetesでのコンテナの構築とオーケストレーションをより迅速かつ簡単に行うことができます。

注目の製品

Red Hat OpenShift on IBM Cloud

IBM Cloud Code Engine

IBM Cloud Satellite

IBM Cloud Kubernetes Service


Knativeとは

Knative ( ケイネイティブと発音します)は、Kubernetesクラスターでサーバーレス・ワークロードの実行を可能にする、 Kubernetes コンテナ・オーケストレーション・プラットフォームです。Kubernetes内のコンテナ化されたアプリケーションの構築、導入、管理を、よりシンプルでより「Kubernetesに固有」の体験にする(それで名前が「Kubernetes」のK + nativeとなっています)、ツールとユーティリティーを提供します。    

Kubernetes と同様に、 Knative はオープンソース・ソフトウェアです。   元はGoogleによって、 IBM、 Pivotal、 Red Hat、 SAP、その他50近くの企業とコラボレーションして開発されました。  現在、Knativeオープンソース・プロジェクトは、Cloud Native Computing Foundation(CNCF)によってホストされています。  


KubernetesにKnativeが必要な理由

Kubernetes は コンテナ の導入、管理、拡大を自動化し、スケジュールします。コンテナとは、任意の環境でコードを実行するために必要なすべてのオペレーティング・システム(OS)ライブラリーと依存関係にソースコードを組み合わせる、軽量で実行可能なアプリケーション・コンポーネントです。   

仮想マシン(VM) でアプリケーションが単一の物理コンピューターのリソースを共有できるのとほぼ同じ方法で、コンテナではアプリケーション・コンポーネントがOSの単一インスタンスのリソースを共有することができます。  コンテナはVMよりも小さくてリソース効率が高く、アジャイルと DevOps の開発方法論の増分リリース・サイクルにより適しているため、最新のクラウドネイティブ・アプリケーションの事実上のコンピュート・ユニットとなっています。 コンテナを使用している企業は、アプリケーションの品質の向上、イノベーションのレベルの向上などを含む、その他のメリットを報告しています。 

レポート全文のダウンロード:「Containers in the enterprise」 (PDF、1.4 MB)

 クラウドネイティブ 開発が人気になり、コンテナの利用が組織で急増する際に、Kubernetesの コンテナ・オーケストレーション 機能(スケジューリング、ロード・バランシング、正常性モニターなど)によって、その急増を管理するのが非常に容易になりました。  しかし、 Kubernetes は複雑なツールで、開発者は多くの反復タスクを実行またはテンプレート化する必要があります。 リポジトリーからのアプリケーションの ソースコード の取得、コードに関連する コンテナ・イメージ の構築とプロビジョニング、 ネットワーク接続 の構成などを、 Kubernetes の外部でさまざまなツールを使用して行わなければなりません。   そして Kubernetesで管理されたコンテナを自動化された 継続的インテグレーション/継続的デリバリー (CI/DC)パイプラインに組み込むには、特別なツールとカスタム・コーディングが必要です。

Knative はこれらのタスクを自動化するツールによって、 Kubernetes からこの複雑さをなくします。 開発者はコンテナのコンテンツと構成を単一の YAML マニフェスト・ファイルで定義でき、 Knative が残りを行い、コンテナを作成してネットワーク・プログラミングを実行して、ルーティング、 イングレス、 ロード・バランシング などをセットアップします。 (Knative は Knative CLIというコマンド・ライン・インターフェースも提供します。それにより開発者は YAML ファイルを編集せずに Knative 機能にアクセスできます。)


コンテナをサーバーレスにする

サーバーレス ・コンピューティングは、アプリケーションをさらに開発しやすく、実行の費用対効果をより高くする、 クラウドネイティブ 実行モデルです。 サーバーレス・コンピューティング・モデルには以下の特徴があります。  

  • コンピューティング・リソースをオンデマンドでプロビジョンし、要求に基づいて容易にスケーリングします。要求が行われなくなったらゼロに縮小します。 
  • すべてのインフラストラクチャー管理タスク(スケーリング、スケジューリング、パッチング、プロビジョニングなど)をクラウド・プロバイダーにオフロードして、開発者が自分の時間と労力を開発とイノベーションに集中できるようにします。
  • クラウドの顧客が、使用しているリソースに対してのみ支払うようにできます。使用されていない容量に対して支払うことはありません。

 Kubernetes は単独では、 Kubernetes を特定のクラウド・プロバイダーのサーバーレス・プラットフォームと統合する特殊なソフトウェアなしでサーバーレス・アプリケーション を実行できません。   Knative では コンテナが サーバーレス 機能で構築されているか、または他のアプリケーション・コード(たとえば マイクロサービス)で構築されているかに関わらず、コードを取り除き、ネットワーク ・ルーティング、イベント・トリガー、自動スケーリングを処理することにより、あらゆるコンテナを任意の Kubernetes クラスターで サーバーレス・ワークロードとして実行することができます。  


Knativeの仕組み:Knativeコンポーネント

Knative は Kubernetes の上に位置し、3つのメイン・コンポーネント( プリミティブ)であるBuild、Serving、Eventingを追加します。   

ビルド


Knative Build コンポーネントは、ソースコード をコンテナに変えるプロセスを自動化します。 このプロセスには一般に以下を含む複数のステップが含まれます。

  • ソースコード を GitHub などのコード・リポジトリーから取得する
  • コードの実行に必要な基盤となる依存関係(環境変数やソフトウェア・ライブラリーなど)をインストールする
  • コンテナ・イメージを構築する 
  • Kubernetes(および他の開発者)が見つけられるレジストリーにコンテナ・イメージを置く  

Knative は Kubernetes API や他のツールをBuildプロセスに使用します。 開発者はすべての変数(ソースコードのロケーション、必要な依存関係など)を指定する単一のマニフェスト(通常は YAML ファイル)を作成することができ、 Knative はそのマニフェストを使用してコンテナ作成を自動化します。  

Serving


Servingコンポーネントは拡張が容易な Knative サービスとしてコンテナをデプロイして実行します。 Servingは、以下の重要な機能を提供します。

  • 構成 はサービスの状態を定義して保守します。 また、バージョン管理も提供します。構成へのそれぞれの変更によって、サービスの新しいバージョンが作成され、以前のバージョンが保存されます。 
  • インテリジェント・サービス・ルーティング は開発者がトラフィックをサービスの別バージョンにルーティングできるようにします。  サービスの新しいバージョンを作成したが、すべてのユーザーを移行する前に、ユーザーのサブセットにそれをデプロイしたいと仮定します。 インテリジェント・サービス・ルーティングでは、ある割合のユーザー要求を新しいサービスに、残りの要求を以前のバージョンにルーティングすることができます。新しいサービスへの自信が高まるにつれ、より多くのトラフィックをそちらにルーティングすることができます。   
  • 自動スケーリング。 Knative はサービスを何千ものインスタンスに拡大することができます。また、ゼロに縮小すること、つまりコンテナのインスタンスがまったくないようにすることもできます。これはサーバーレス・アプリケーションをサポートするために重要です。  

Knative Serving は、Kubernetes エコシステムの別のアプリケーションである Istioからインテリジェント・サービス・ルーティングを借用しています。   Kubernetes 用のオープンソースの サービス・メッシュ である Istio はまた、サービス要求の 認証 、サービス間の安全な通信のための自動トラフィック暗号化、インフラストラクチャーの最適化のために開発者と管理者が使用できるマイクロサービスとサーバーレス機能の操作に関する詳細なメトリックも提供します。 (Knative が Istio を使用する方法の詳細については、「Istio と Knative: Kubernetes の新しい 開発者体験への拡張」をお読みください。)

Eventing


Knative の Eventing コンポーネントは、 さまざまなイベントがコンテナ・ベースのサービスや機能をトリガーできるようにします。 Knative はそれらのイベントをキューに入れて適切なコンテナに提供するので、その機能のためにスクリプトを作成したり ミドルウェア を実装したりする必要はありません。 Knative はまた、チャネル(開発者がそこから選択できるイベントのキュー)と、バス(イベントをコンテナに提供するメッセージング・プラットフォーム)も処理します。 また、コンテナが実行するアクションにイベントを接続するフィードを、開発者がセットアップできるようにします。

Knative Event ソースは、開発者がサード・パーティーのイベント・プロデューサーへの接続を容易に作成できるようにします。 Knative Eventing は、イベント・プロデューサーへの接続を自動的に作成し、生成されたイベントをルーティングします。 それをプログラマチックに行う方法を見つけ出す必要はありません。Knativeがすべての作業を行います。 


Knativeのユースケース

要約すると、 Knative は、コンテナ化アプリケーション開発をシンプルにしたい、またはコンテナの使用を次のレベルに進めたい Kubernetes ユーザー向けの、いくつかの ユースケース をサポートします。

  • Kubernetesの簡素化。  Knative は反復する構築と構成のタスクをなくすことによって、開発者が Kubernetes でより生産的に作業できるようにします。  増大する数の Kubernetes クラスター の管理に苦労している開発チームにとって、Knativeは理想的な候補です。 
  • サーバーレス へのジャーニーの加速。 サーバーレス 環境は、手動でセットアップして管理することが非常に大変な可能性があります。 Knative を使用すると、組織は迅速に サーバーレス・ワークロードをセットアップできます。  開発者に関する限り、彼らはただコンテナを構築しているだけです。 Knative が舞台裏でそれを サーバーレス 機能として実行します。
  • アジャイルと DevOps のライフサイクルのサポート。 開発者が新しいコンテナやコンテナのバージョンをより迅速に作成できるようにすることで、 Knative はアジャイルまたは DevOps のワークフローの一部として小さくて速い反復ステップでコンテナ化されたアプリケーションを簡単にデプロイできるようにします。 そして Knative サービスは、 特殊なソフトウェアやカスタム・プログラミングを必要とせずに、自動化CI/CDパイプラインに簡単に統合します。
  • 新機能のロールアウトの円滑化。 新しいリリースを顧客にロールアウトすることで、ビジネス・プロセスに影響する可能性があるソフトウェアの問題が明らかになることがあります。 Knativeの構成と ルーティング によって、開発者はコンテナの新しい改訂版をユーザー・ベースのサブセットに公開し、その後問題を トラブルシュート しながら時間をかけて対象者を徐々に増加し、または必要な場合には古いバージョンにすぐにロールバックすることができます。
  • 開発者がコーディングとイノベーションに集中し続けられるようにする。 DevOps では、開発者が自身の環境を管理することができます。 しかし、結局のところ開発者は、イベントのトリガーのためのメッセージ・バス・キューの 構成 やコンテナの拡張性の管理にではなく、バグのないソフトウェアと革新的な新機能の構築に集中したいのです。 Knative では、開発者は自分が最も得意とすることを行うためにより多くの時間を費やすことができます。

KnativeとIBM Cloud

コンテナはアプリケーションのモダナイズITインフラストラクチャーの最適化に適しています。 Kubernetes、Knative、Istioなどのオープンソース技術上に構築されたIBM Cloudのコンテナ・サービスは、クラウドネイティブ・アプリケーションの開発、そしてプライベートクラウドやパブリッククラウド、オンプレミスITインフラストラクチャーの最高の機能を統合したオープンなハイブリッドクラウドのアプローチへの道のりを推進し、加速することができます。

次のステップへ

  • Red Hat OpenShift on IBM Cloudを使用して、コンテナ化されたアプリケーションのために可用性が高く、完全に管理されたクラスターをシングル・クリックでデプロイする方法を学びましょう。
  • IBM Cloud Satelliteを使用して、コンテナ化されたアプリケーションをあらゆるベンダーのオンプレミス、エッジコンピューティング、パブリッククラウドの環境全体で一貫してデプロイ、管理します。
  • IBM Cloud Code Engineを使用して、コンテナ・イメージ、バッジ・ジョブまたはソースコードをサーバーレス・ワークロードとして実行します。サイジング、デプロイ、ネットワーキング、スケーリングは必要ありません。

Knativeの使用を今すぐ始めるには、IBM Cloudのアカウントに登録してください。


関連ソリューション

ハイブリッドクラウド

オープンなハイブリッドクラウド戦略を採用すると、ベンダーの囲い込みなしにあらゆる場所でワークロードを構築して管理できます。


オンプレミス・インフラストラクチャーのソリューション

適切なオンプレミスのクラウド・インフラストラクチャーを利用すると、平常時か障害発生時かを問わず、ハイブリッドクラウド環境にレジリエンシーとセキュリティーがもたらされます。その方法について詳しく説明します。


Red Hat OpenShift

Red Hat OpenShift on IBM Cloudは、パブリック環境やハイブリッド環境でOpenShiftを活用して、俊敏性、市場への即応性、拡張性、信頼性の向上を図ります。


IBM Cloud Satellite

IBM Cloud Satelliteでは、オンプレミス、エッジ、パブリッククラウドなどのあらゆる環境で、一貫したクラウド・サービスを利用できます。


IBM Cloud Code Engine

フルマネージド型のサーバーレス・プラットフォームであるIBM Cloud Code Engineは、Webアプリ、マイクロ・サービス、イベント駆動型機能などを含むコンテナー化されたワークロードを実行します。