Knative ( ケイネイティブと発音します)は、Kubernetesクラスターでサーバーレス・ワークロードの実行を可能にする、 Kubernetes コンテナ・オーケストレーション・プラットフォームです。Kubernetes内のコンテナ化されたアプリケーションの構築、導入、管理を、よりシンプルでより「Kubernetesに固有」の体験にする(それで名前が「Kubernetes」のK + nativeとなっています)、ツールとユーティリティーを提供します。
Kubernetes と同様に、 Knative はオープンソース・ソフトウェアです。 元はGoogleによって、 IBM、 Pivotal、 Red Hat、 SAP、その他50近くの企業とコラボレーションして開発されました。 現在、Knativeオープンソース・プロジェクトは、Cloud Native Computing Foundation(CNCF)によってホストされています。
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 は Kubernetes の上に位置し、3つのメイン・コンポーネント( プリミティブ)であるBuild、Serving、Eventingを追加します。
Knative Build コンポーネントは、ソースコード をコンテナに変えるプロセスを自動化します。 このプロセスには一般に以下を含む複数のステップが含まれます。
Knative は Kubernetes API や他のツールをBuildプロセスに使用します。 開発者はすべての変数(ソースコードのロケーション、必要な依存関係など)を指定する単一のマニフェスト(通常は YAML ファイル)を作成することができ、 Knative はそのマニフェストを使用してコンテナ作成を自動化します。
Servingコンポーネントは拡張が容易な Knative サービスとしてコンテナをデプロイして実行します。 Servingは、以下の重要な機能を提供します。
Knative Serving は、Kubernetes エコシステムの別のアプリケーションである Istioからインテリジェント・サービス・ルーティングを借用しています。 Kubernetes 用のオープンソースの サービス・メッシュ である Istio はまた、サービス要求の 認証 、サービス間の安全な通信のための自動トラフィック暗号化、インフラストラクチャーの最適化のために開発者と管理者が使用できるマイクロサービスとサーバーレス機能の操作に関する詳細なメトリックも提供します。 (Knative が Istio を使用する方法の詳細については、「Istio と Knative: Kubernetes の新しい 開発者体験への拡張」をお読みください。)
Knative の Eventing コンポーネントは、 さまざまなイベントがコンテナ・ベースのサービスや機能をトリガーできるようにします。 Knative はそれらのイベントをキューに入れて適切なコンテナに提供するので、その機能のためにスクリプトを作成したり ミドルウェア を実装したりする必要はありません。 Knative はまた、チャネル(開発者がそこから選択できるイベントのキュー)と、バス(イベントをコンテナに提供するメッセージング・プラットフォーム)も処理します。 また、コンテナが実行するアクションにイベントを接続するフィードを、開発者がセットアップできるようにします。
Knative Event ソースは、開発者がサード・パーティーのイベント・プロデューサーへの接続を容易に作成できるようにします。 Knative Eventing は、イベント・プロデューサーへの接続を自動的に作成し、生成されたイベントをルーティングします。 それをプログラマチックに行う方法を見つけ出す必要はありません。Knativeがすべての作業を行います。
要約すると、 Knative は、コンテナ化アプリケーション開発をシンプルにしたい、またはコンテナの使用を次のレベルに進めたい Kubernetes ユーザー向けの、いくつかの ユースケース をサポートします。
コンテナはアプリケーションのモダナイズとITインフラストラクチャーの最適化に適しています。 Kubernetes、Knative、Istioなどのオープンソース技術上に構築されたIBM Cloudのコンテナ・サービスは、クラウドネイティブ・アプリケーションの開発、そしてプライベートクラウドやパブリッククラウド、オンプレミスITインフラストラクチャーの最高の機能を統合したオープンなハイブリッドクラウドのアプローチへの道のりを推進し、加速することができます。
次のステップへ
Knativeの使用を今すぐ始めるには、IBM Cloudのアカウントに登録してください。
オープンなハイブリッドクラウド戦略を採用すると、ベンダーの囲い込みなしにあらゆる場所でワークロードを構築して管理できます。
適切なオンプレミスのクラウド・インフラストラクチャーを利用すると、平常時か障害発生時かを問わず、ハイブリッドクラウド環境にレジリエンシーとセキュリティーがもたらされます。その方法について詳しく説明します。
Red Hat OpenShift on IBM Cloudは、パブリック環境やハイブリッド環境でOpenShiftを活用して、俊敏性、市場への即応性、拡張性、信頼性の向上を図ります。
IBM Cloud Satelliteでは、オンプレミス、エッジ、パブリッククラウドなどのあらゆる環境で、一貫したクラウド・サービスを利用できます。
フルマネージド型のサーバーレス・プラットフォームであるIBM Cloud Code Engineは、Webアプリ、マイクロ・サービス、イベント駆動型機能などを含むコンテナー化されたワークロードを実行します。