ホーム Topics Knativeとは Knativeとは
Knativeを使用することで、Kubernetesクラスターでサーバーレス・ワークロードを実行し、Kubernetesでのコンテナの構築とオーケストレーションをより迅速かつ簡単に行うことができます。
黒と青の背景画像
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 の開発方法の段階的なリリース・サイクルにより適しているため、最新のクラウドネイティブ・アプリケーションの事実上のコンピュート・ユニットとなっています。 コンテナを使用している企業は、アプリケーションの品質の向上、イノベーションのレベルの向上などを含む、その他のメリットについて報告しています。 

レポート全文をダウンロードする:「企業におけるコンテナ」 (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を追加します。   

Build


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 によって開発者は、最も得意なことに費やす時間を増やすことができます。

関連ソリューション
Red Hat OpenShift on IBM Cloud

Red Hat OpenShift on IBM Cloudの使用により、OpenShiftの開発者は、エンタープライズ・ワークロードをKubernetesクラスターにコンテナ化してデプロイするための高速で安全な方法を利用できます。

Red Hat OpenShiftの詳細はこちら
IBM Cloud Satellite

ツールチェーン、データベース、およびAIを含む一般的な一連のクラウド・サービスを使用して、ベンダーを問わずオンプレミス、エッジ・コンピューティング、およびパブリッククラウド環境全体にわたり、アプリケーションを一貫して導入および実行します。

IBM Cloud Satelliteの詳細はこちら
IBM Cloud Code Engine

フル・マネージド型のサーバーレス・プラットフォームであるIBM Cloud Code Engineを使用することで、コンテナ、アプリケーション・コード、またはバッチ・ジョブを完全管理型のコンテナ・ランタイムで実行することができます。

IBM Cloud Code Engineの詳細はこちら
参考情報 企業におけるコンテナ

新しいIBMの調査では、コンテナとKubernetesの採用が急増していることが明らかになっています。

サーバーレスとは

サーバーレスとは、開発者が、コードの構築および実行を、各サーバーの管理、または使用されていないクラウド・インフラストラクチャーへの支払いの必要なく実行できるクラウド・アプリケーション開発および実行モデルのことです。

ハイブリッドクラウドに適した柔軟で、レジリエントで安全なIT

コンテナは、どこからでもワークロードの構築と管理を可能にする、ハイブリッドクラウド戦略の一部です。

詳細情報はこちら

Red Hat OpenShift on IBM Cloudを使用することにより、OpenShiftの開発者は、エンタープライズ・ワークロードをKubernetesクラスターにコンテナ化してデプロイするための高速で安全な方法を利用できます。 可用性の高いフルマネージドのクラスターを、お客様のコンテナ化されたアプリケーションに、クリックするだけで導入できます。IBMがOpenShift Container Platform(OCP)を管理するため、お客様はコア・タスクに集中できる時間が増加します。

Red Hat OpenShift on IBM Cloudの詳細はこちら