ホーム
Topics
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 は コンテナの導入、管理、拡大を自動化し、スケジュールします。コンテナとは、任意の環境でコードを実行するために必要なすべてのオペレーティング・システム(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 は 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 ユーザー向けの ユースケース の一部をサポートします。
Kubernetesの簡素化 。 Knative は反復する構築と構成のタスクをなくすことによって、開発者が Kubernetes でより生産的に作業できるようにします。 増大する Kubernetes クラスター の管理に苦労している開発チームにとって、 Knativeは理想的な候補です。
サーバーレスへのジャーニーの加速。 サーバーレス 環境は、手動でセットアップして管理するには、非常に大変な場合があります。 Knative を使用すると、組織は迅速に サーバーレス・ワークロードをセットアップできます。 開発者の作業としては、コンテナを単に構築するのみとなります。舞台裏でそれを サーバーレス 機能として実行するのは、 Knative です。
アジャイル・ライフサイクルと DevOps ライフサイクルのサポート。 開発者が新しいコンテナやコンテナのバージョンをより迅速に作成できるようにすることで、 Knative はアジャイル・ワークフローまたは DevOps ワークフローの一部として小さくて速い反復ステップでコンテナ化されたアプリケーションを簡単にデプロイできるようにします。 そして Knative サービスは、特殊なソフトウェアやカスタム・プログラミングを必要とせずに、自動化CI/CDパイプラインに簡単に 統合します。
新機能のロールアウトの円滑化。 新しいリリースを顧客にロールアウトすることで、ビジネス・プロセスに影響する可能性があるソフトウェアの問題が明らかになることがあります。 Knativeの構成と ルーティング によって、開発者はコンテナの新しい改訂版をユーザー・ベースのサブセットに公開し、その後、問題を トラブルシュート しながら時間をかけて対象者を徐々に増加し、または必要な場合には古いバージョンにすぐにロールバックすることができます。
開発者がコーディングとイノベーションに継続的に集中できるようにする。 DevOps では、開発者が自身の環境を管理することができます。 しかし、結局のところ開発者は、イベントのトリガーのためのメッセージ・バス・キューの 構成 やコンテナの拡張性の管理に注力するのではなく、バグのないソフトウェアと革新的な新機能の構築に集中したいのです。 Knative によって開発者は、最も得意なことに費やす時間を増やすことができます。
Red Hat OpenShift on IBM Cloudの使用により、OpenShiftの開発者は、エンタープライズ・ワークロードをKubernetesクラスターにコンテナ化してデプロイするための高速で安全な方法を利用できます。
ツールチェーン、データベース、およびAIを含む一般的な一連のクラウド・サービスを使用して、ベンダーを問わずオンプレミス、エッジ・コンピューティング、およびパブリッククラウド環境全体にわたり、アプリケーションを一貫して導入および実行します。
フル・マネージド型のサーバーレス・プラットフォームであるIBM Cloud Code Engineを使用することで、コンテナ、アプリケーション・コード、またはバッチ・ジョブを完全管理型のコンテナ・ランタイムで実行することができます。