Knativeを使用すると、サーバーレス・ワークロードをKubernetesクラスター上で実行できるようになり、Kubernetesを使用したコンテナの構築とオーケストレーションがより迅速かつ容易になります。
Knative(ケイ・ネイティブと読みます)は、Kubernetesコンテナ・オーケストレーション・プラットフォームの拡張です。Kubernetes内のコンテナ化されたアプリケーションの構築、デプロイ、管理をよりシンプルで、よりKubernetesらしいエクスペリエンスにするツールとユーティリティーを提供します(こうしたことから、「Kubernetes」+「ネイティブ」を合わせた名前となっています)。
Kubernetesのように、Knativeはオープンソース・ソフトウェアです。Google社はもともと、IBM®、Pivotal社、RedHat社、SAP社をはじめとする50社近くの企業と協力して、これを開発しました。今日、クラウドネイティブ・コンピューティング・ファンデーション(CNCF)がKnativeオープンソース・プロジェクトをホストしています。
Kubernetesは、コンテナのデプロイメント、管理、スケーリングを自動化およびスケジュールします。コンテナは、ソースコードと、あらゆる環境でコードを実行するために必要なすべてのオペレーティング・システム(OS)ライブラリーおよび依存関係を組み合わせた、軽量の実行可能なアプリケーション・コンポーネントです。
コンテナを使用すると、アプリケーション・コンポーネントはOSの単一インスタンスのリソースを共有できます。これは、仮想マシン(VM)を使用してアプリケーションが単一の物理コンピュータのリソースを共有できるのとほぼ同じです。コンテナは、VMよりも小型でリソース効率が高く、アジャイルおよびDevOps開発手法の増分リリース・サイクルに適しているため、最新のクラウドネイティブ・アプリケーションの事実上のコンピューティング・ユニットになっています。コンテナを使用する企業からは、アプリの品質向上、イノベーションのレベル向上など、その他のメリットも報告されています。
クラウドネイティブの開発がより一般的になり、コンテナが組織を増殖させるにつれて、スケジューリング、ロード・バランシング、ヘルス監視などを含むKubernetesのコンテナ・オーケストレーション機能により、増加の管理がはるかに容易になります。ただし、Kubernetesは複雑なツールであり、開発者は、リポジトリーからアプリケーションのソースコードをプルしたり、コードの周りにコンテナ・イメージを組み込んでプロビジョニングしたり、さまざまなツールを使用してKubernetesの外部でネットワーク接続を構成したりするなど、多くの反復的なタスクを実行またはテンプレート化する必要があります。Kubernetesマネージド・コンテナを自動的に継続的インテグレーション/継続的デリバリー(CI/DC)パイプラインに組み込むには、特別なツールとカスタム・コーディングが必要です。
Knativeは、Kubernetes内でこれらのタスクを自動化するツールを使用して、この複雑さを解消します。開発者は単一のYAMLマニフェスト・ファイルでコンテナの内容と構成を定義でき、Knativeが残りの作業、つまりコンテナの作成と、ルーティング、イングレス、ロード・バランシングなどを設定するためのネットワーク・プログラミングを実行します。Knativeは、開発者がYAMLファイルを編集せずにKnative機能にアクセスできるようにするコマンドライン・インターフェースであるKnative CLIも提供します。
サーバーレス・コンピューティング・モデルは、アプリケーションを開発しやすく、費用対効果を高めるクラウドネイティブ実行モデルです。サーバーレス・コンピューティング・モデル
Kubernetesを特定のクラウド・プロバイダーのサーバーレス・プラットフォームと連携する専用ソフトウェアがなければ、Kubernetesだけではサーバーレス・アプリケーションを実行できません。Knativeを使用すると、コードを抽象化し、ネットワーク・ルーティング、イベント・トリガー、自動スケーリングを処理することで、コンテナがサーバーレス関数またはその他のアプリケーション・コード(マイクロサービスなど)を中心に構築されているかどうかに関係なく、任意のKubernetesクラスター上でコンテナをサーバーレス・ワークロードとして実行できるようになります。
KnativeはKubernetes上に配置され、Build、Serving、Eventingという3つの主要コンポーネントまたはプリミティブを追加します。
Knative Buildコンポーネントは、ソースコードのコンテナへの変換を自動化します。このプロセスには通常、以下を含む複数のステップが含まれます。
Knativeは、BuildプロセスにKubernetes APIやその他のツールを使用します。開発者は、すべての変数(ソースコード、必要な依存関係など)を指定する単一のマニフェスト(通常はYAMLファイル)を作成でき、Knativeはマニフェストを使用してコンテナ・ビルドを自動化します。
Servingコンポーネントは、スケーラブルなKnativeサービスとしてコンテナをデプロイおよび実行します。Servingは、次の重要な機能を提供します。
Knative Servingは、Kubernetesエコシステムの別のアプリケーションであるISTIOからのインテリジェント・サービス・ルーティングを借用しています。Kubernetes用のオープンソース・サービス・メッシュであるISTIOは、サービス・リクエストの認証、サービス間の安全な通信のための自動トラフィック暗号化、マイクロサービスとサーバーレス関数の操作に関する詳細なメトリクス、開発者と管理者がインフラストラクチャーを最適化するためのその他のツールも提供します。
Knative Eventingコンポーネントを使用すると、さまざまなイベントでコンテナベースのサービスと機能をトリガーできます。Knativeはこれらのイベントをキューに入れて適切なコンテナに配信するため、その機能のためにスクリプトを記述したり、ミドルウェアを実装したりする必要はありません。Knativeは、開発者が選択できるイベントのキューであるチャネルと、コンテナにイベントを配信するメッセージング・プラットフォームであるバスも処理します。また、開発者はフィードを設定して、コンテナが実行するアクションにイベントを連携することもできます。
Knative Eventソースにより、開発者はサードパーティーのイベント・プロデューサーに簡単に連携できます。Knative Eventingは、イベント・プロデューサーに自動的に連携し、生成されたイベントをルーティングします。プログラムでそれを行う方法を理解する必要はありません。Knativeがすべての作業を行います。
要約すると、Knativeは、コンテナ化されたアプリ開発を簡素化したり、コンテナを使用したりしたいKubernetesユーザーのいくつかのユースケースをサポートします。
Kubernetesを合理化する。繰り返しのビルドと構成のタスクを排除することにより、Kubernetesで作業する開発者がより生産的になります。Kubernetesクラスターの増加を管理するのに苦労している開発チームは、Knativeが特にお勧めです。
サーバーレスへの道を加速する。サーバーレス環境は、手動での設定や管理が困難になる場合がありますが、Knativeを使用することによりサーバーレス・ワークロードを素早く設定できます。開発者はただコンテナを組み込むだけで作業は終了です。後は、Knativeがサーバーレス機能として実行します。
アジャイルとDevOpsのライフサイクルをサポートする。Knativeを使用すると、開発者が新しいコンテナとコンテナ・バージョンをより迅速に作成できるため、アジャイルまたはDevOpsワークフローの一部として、コンテナ化されたアプリケーションを小さく高速な反復的なステップで簡単にデプロイできるようになります。Knativeサービスは、特別なソフトウェアやカスタム・プログラミングを必要とせずに、自動化されたCI/CDパイプラインに簡単に統合できます。
柔軟に新機能を展開する。顧客に新しいリリースを展開すると、ビジネスプロセスに影響を与える可能性のあるソフトウェアの問題を公開できます。Knativeの構成とルーティングにより、開発者は新しいコンテナのリビジョンをユーザーベースのサブセットに公開できます。その後、問題のトラブルシューティングを行ったり、必要に応じて古いバージョンに素早くロールバックしたりしながら、時間の経過とともに徐々に対象ユーザーを増やしていきます。
開発者がコーディングとイノベーションに集中できるようにする。DevOpsにより、開発者は独自の環境を管理できるようになります。しかし、結局のところ、開発者は、イベントトリガー用のメッセージ・バス・キューの構成やコンテナの拡張性の管理ではなく、バグのないソフトウェアと革新的な新機能の構築に重点を置きたいと考えています。Knativeを使用すると、開発者は得意なことに多くの時間を費やすことができます。
Red Hat OpenShift on IBM Cloudは、フルマネージドのOpenShiftコンテナ・プラットフォーム(OCP)です。
コンテナ・ソリューションは、セキュリティー、オープンソースのイノベーション、迅速なデプロイメントにより、コンテナ化されたワークロードを実行およびスケールアップします。
IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。