Knativeとは?

スコットランドのフォルカークホイールで撮影された写真

Knativeとは?

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

Knative(ケイ・ネイティブと読みます)は、Kubernetesコンテナ・オーケストレーション・プラットフォームの拡張です。Kubernetes内のコンテナ化されたアプリケーションの構築、デプロイ、管理をよりシンプルで、よりKubernetesらしいエクスペリエンスにするツールとユーティリティーを提供します(こうしたことから、「Kubernetes」+「ネイティブ」を合わせた名前となっています)。

Kubernetesのように、Knativeはオープンソース・ソフトウェアです。Google社はもともと、IBM®、Pivotal社、RedHat社、SAP社をはじめとする50社近くの企業と協力して、これを開発しました。今日、クラウドネイティブ・コンピューティング・ファンデーション(CNCF)がKnativeオープンソース・プロジェクトをホストしています。

ビジネス街をバックにスマホを持つ手

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

KubernetesにKnativeが必要な理由

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

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

クラウドネイティブの開発がより一般的になり、コンテナが組織を増殖させるにつれて、スケジューリング、ロード・バランシング、ヘルス監視などを含むKubernetesのコンテナ・オーケストレーション機能により、増加の管理がはるかに容易になります。ただし、Kubernetesは複雑なツールであり、開発者は、リポジトリーからアプリケーションのソースコードをプルしたり、コードの周りにコンテナ・イメージを組み込んでプロビジョニングしたり、さまざまなツールを使用してKubernetesの外部でネットワーク接続を構成したりするなど、多くの反復的なタスクを実行またはテンプレート化する必要があります。Kubernetesマネージド・コンテナを自動的に継続的インテグレーション継続的デリバリー(CI/DC)パイプラインに組み込むには、特別なツールとカスタム・コーディングが必要です。

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

AI Academy

ハイブリッドクラウドでAI対応を実現

IBMのエキスパートが主催するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資に優先順位を付けるために必要な知識を習得できます。

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

サーバーレス・コンピューティング・モデルは、アプリケーションを開発しやすく、費用対効果を高めるクラウドネイティブ実行モデルです。サーバーレス・コンピューティング・モデル

  • コンピューティングリソースをオンデマンドでプロビジョニングし、リクエストに基づいて透過的にスケーリングし、リクエストがなくなるとゼロにスケーリングします。

  • スケーリング、スケジュール設定、パッチ適用、プロビジョニングなど、すべてのインフラストラクチャー管理タスクをクラウド・プロバイダーにオフロードすることで、開発者は開発とイノベーションに時間と労力を集中できるようになります。

  • クラウドの顧客は、使用されたリソースに対してのみ料金を支払うことができ、アイドル状態の容量に対しては料金を支払う必要がありません。

Kubernetesを特定のクラウド・プロバイダーのサーバーレス・プラットフォームと連携する専用ソフトウェアがなければ、Kubernetesだけではサーバーレス・アプリケーションを実行できません。Knativeを使用すると、コードを抽象化し、ネットワーク・ルーティング、イベント・トリガー、自動スケーリングを処理することで、コンテナがサーバーレス関数またはその他のアプリケーション・コード(マイクロサービスなど)を中心に構築されているかどうかに関係なく、任意のKubernetesクラスター上でコンテナをサーバーレス・ワークロードとして実行できるようになります。

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

KnativeはKubernetes上に配置され、Build、Serving、Eventingという3つの主要コンポーネントまたはプリミティブを追加します。

Build

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

  • GitHubなどのコード・リポジトリーからソースコードをプルする
  • コードを実行する必要がある環境変数やソフトウェア・ライブラリーなどの基礎となる依存関係をインストールする
  • コンテナを積み上げる画像
  • Kubernetesや他の開発者が見つけられるレジストリーにコンテナ・イメージを配置します。

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

Serving

Servingコンポーネントは、スケーラブルなKnativeサービスとしてコンテナをデプロイおよび実行します。Servingは、次の重要な機能を提供します。

  • 構成はサービスの状態を定義および維持します。また、バージョン管理も提供します。構成を変更するたびにサービスの新しいバージョンが作成され、以前のバージョンが保存されます。

  • インテリジェント・サービス・ルーティングを使用すると、開発者はトラフィックをサービスのさまざまなバージョンにルーティングできます。例えば、新しいサービス・バージョンを作成したものの、すべてのユーザーを移行する前に、それをユーザーのサブセットにデプロイしたいとします。インテリジェントなサービス・ルーティングを使用すると、ユーザー・リクエストの一部を新しいサービスにルーティングし、残りを以前のバージョンにルーティングできます。新しいサービスに対する信頼が高まってきたら、より多くのトラフィックを新しいサービスにルーティングできます。

  • 自動スケーリング。Knativeは、サービスを数千のインスタンスにスケールアップできます。また、コンテナのインスタンスがまったく存在しない状態にスケールダウンすることもできます。これは、サーバーレス・アプリケーションをサポートする上でクリティカルです。

Knative Servingは、Kubernetesエコシステムの別のアプリケーションであるISTIOからのインテリジェント・サービス・ルーティングを借用しています。Kubernetes用のオープンソース・サービス・メッシュであるISTIOは、サービス・リクエストの認証、サービス間の安全な通信のための自動トラフィック暗号化、マイクロサービスとサーバーレス関数の操作に関する詳細なメトリクス、開発者と管理者がインフラストラクチャーを最適化するためのその他のツールも提供します。

Eventing

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

Knative Eventソースにより、開発者はサードパーティーのイベント・プロデューサーに簡単に連携できます。Knative Eventingは、イベント・プロデューサーに自動的に連携し、生成されたイベントをルーティングします。プログラムでそれを行う方法を理解する必要はありません。Knativeがすべての作業を行います。

Knativeのユースケース

要約すると、Knativeは、コンテナ化されたアプリ開発を簡素化したり、コンテナを使用したりしたいKubernetesユーザーのいくつかのユースケースをサポートします。

Kubernetesを合理化する。繰り返しのビルドと構成のタスクを排除することにより、Kubernetesで作業する開発者がより生産的になります。Kubernetesクラスターの増加を管理するのに苦労している開発チームは、Knativeが特にお勧めです。

サーバーレスへの道を加速する。サーバーレス環境は、手動での設定や管理が困難になる場合がありますが、Knativeを使用することによりサーバーレス・ワークロードを素早く設定できます。開発者はただコンテナを組み込むだけで作業は終了です。後は、Knativeがサーバーレス機能として実行します。

アジャイルとDevOpsのライフサイクルをサポートする。Knativeを使用すると、開発者が新しいコンテナとコンテナ・バージョンをより迅速に作成できるため、アジャイルまたはDevOpsワークフローの一部として、コンテナ化されたアプリケーションを小さく高速な反復的なステップで簡単にデプロイできるようになります。Knativeサービスは、特別なソフトウェアやカスタム・プログラミングを必要とせずに、自動化されたCI/CDパイプラインに簡単に統合できます。

柔軟に新機能を展開する。顧客に新しいリリースを展開すると、ビジネスプロセスに影響を与える可能性のあるソフトウェアの問題を公開できます。Knativeの構成とルーティングにより、開発者は新しいコンテナのリビジョンをユーザーベースのサブセットに公開できます。その後、問題のトラブルシューティングを行ったり、必要に応じて古いバージョンに素早くロールバックしたりしながら、時間の経過とともに徐々に対象ユーザーを増やしていきます。

開発者がコーディングとイノベーションに集中できるようにする。DevOpsにより、開発者は独自の環境を管理できるようになります。しかし、結局のところ、開発者は、イベントトリガー用のメッセージ・バス・キューの構成やコンテナの拡張性の管理ではなく、バグのないソフトウェアと革新的な新機能の構築に重点を置きたいと考えています。Knativeを使用すると、開発者は得意なことに多くの時間を費やすことができます。

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

Red Hat OpenShift on IBM Cloudは、フルマネージドのOpenShiftコンテナ・プラットフォーム(OCP)です。

Red Hat OpenShiftの詳細はこちら
コンテナ・ソリューション

コンテナ・ソリューションは、セキュリティー、オープンソースのイノベーション、迅速なデプロイメントにより、コンテナ化されたワークロードを実行およびスケールアップします。

コンテナの詳細はこちら
クラウド・コンサルティング・サービス 

IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。

クラウド・サービス
次のステップ

IBMのコンテナ・ソリューションでインフラストラクチャーをモダナイズします。IBMの包括的なコンテナ・プラットフォームを使用して、柔軟性、セキュリティー、効率性を備えたコンテナ化されたワークロードを環境全体で実行、拡張、管理します。

コンテナ・ソリューションの詳細はこちら 無料のIBM Cloudアカウントを作成