サーバーレス フレームワークはここ数年需要があり、開発者の間で採用が増加しています。
それにもかかわらず、コンテナベースのアプリケーションはすでに普及しており、Kubernetes も企業の間で普及しています。
Kubernetes は、間違いなく、優れた可能性を秘めた素晴らしいツールです。そのエコシステムは、Kubernetes をさらに改善する力を持つ Knative など、さまざまな新しいツールや最新テクノロジーによって成長しています。
Knative は、障害につながる状況を克服し、クラウド プラットフォームとクラウド ネイティブ オーケストレーションの中核標準を確立するために導入されました。
言い換えれば、Knative サーバーレス フレームワークは、他のクラウドベースのサーバーレス展開よりもはるかに企業のニーズに適合できるということです。
このガイドでは、Knative、その利点、使用例、インストール手順、作業手順などについて説明します。
さぁ行こう!
ネイティブとは何ですか?
Knative は、Google によって最初に開発された Kubernetes ベースのサーバーレス フレームワークです。企業の要件に基づいてサーバーレス機能をロードして実行するため、無駄が最小限に抑えられます。これは、Kubernetes 上でサーバーレス アプリケーションをデプロイ、実行、管理するためのコンポーネントを追加するオープンソース プロジェクトです。
Knative サーバーレス フレームワークの主な目的は、クロスプラットフォーム オーケストレーションの標準を管理することです。これは、コンテナ作成、オートスケーリング、イベントモデル、ワークロード管理の機能を統合することで実現されます。
以前は、Knative 以外にもさまざまなオープンソース ソリューションがありました。各ソリューションには独自の展開方法があり、標準化された実践方法が欠如しているため、市場の断片化を引き起こす可能性があります。つまり、特定のシステム機能が必要な場合は、特定のプロバイダーを選択する必要があります。
しかし、移民の問題が表面化し始めました。このような問題を回避するために、Knative サーバーレス フレームワークが導入されました。そのため、タスクを組み込むのが難しい場合でも、Knative を使用すると、Kubernetes ベースのパイプライン内で効率的にそれを実行できます。
Knative には 3 つの部分があります。
- Knative Build: コンテナー イメージをビルドし、ソース コードから利用できるようにします。
- Knative Serving: Istio と Kubernetes を使用して、割り当てられたインフラストラクチャ リソースを通じてこれらのコンテナー イメージを接続し、デプロイします。
- Knative Eventing: ユーザーがイベント トリガーを定義し、イベント トリガーをコンテナー化された関数に関連付けることができます。
Knative はイベントを識別するたびに、そのイベントをオンデマンドで実行する関連プロセスを定義します。 Knative では、特定のプロセスが実行される場合にのみホスティング リソースをコミットするため、作業用にコンテナー ノード、クラスター、ポッドを割り当てる必要はありません。このようにして、Knative はサーバーレスとコンテナーの利点のバランスをとります。
Knative の中心となる概念
Knative Serverless Framework の主な概念と、それらが Knative プリミティブにどのように関係するかについて説明します。
建てる
Knative 構築は、既存の Kubernetes のプリミティブを利用および拡張するのに役立ち、オリジンからコンテナー ビルドを実行できるようになります。依存関係とリポジトリからのソース コードを有効にし、コンテナ イメージを構築して登録します。
イベント
このイベントは、イベント駆動型アーキテクチャを構築するために、疎結合のイベント コンシューマーとプロデューサーの間でより適切なコミュニケーションを作成するのに役立ちます。 Knative は、開発者のスクリプトなしで自動的に実行する必要があるこれらのイベントをキューに入れます。
その後、これらのイベントがコンテナーに配信されます。次に、タスクを実行するためにイベント プロデューサーにフィードを送信します。これにより、接続確立のためのコードを作成する開発者の作業負荷が軽減されます。
機能
関数は、独立したデプロイメント単位であり、マイクロサービスのような Knative サービス提供サービスです。そのコードは、次のような単一のタスクを実行するように記述されています。
- データベース内のファイルを処理する
- ユーザーをデータベースに保存する
- スケジュールされた作業を実行する
Knative サーバーレス フレームワークは、機能を効果的に開発およびデプロイし、管理できるように設計されています。
プラグイン
プラグインを使用して、Knative サーバーレス フレームワークの機能を簡単に拡張または上書きできます。すべての serverless.yml ファイルには、さまざまなプラグインを特徴とするプラグイン プロパティが含まれています。
リソース
リソースは、関数が使用する Knative サーバーレス インフラストラクチャ コンポーネントであり、次のものが含まれます。
- AWS SQS イベントソース
- スケジュールされたタスク (5 分ごと、10 分ごとに実行など)
- Kafka イベント ソース
もっと。
サービス
サービスはプロジェクトのようなものです。したがって、サービスは Knative サーバーレス フレームワークの組織単位です。 1 つのアプリケーションに多数のサービスを含めることができますが、サービスはプロジェクト ファイルと考えることができます。
ここでは、関数、イベント、およびリソースをすべて、 serverless.yml 、 serverless.json または serverless.js という名前の単一ファイルで定義できます。サーバーレス フレームワークを使用してサービスをデプロイすると、ファイル内のすべてが一度にデプロイされます。
給仕
Knative-serving は、アプリケーションのデプロイメントをサポートする Istio および Kubernetes に組み込まれています。これにより、サーバーレス コンテナー、ネットワーク プログラミング、Istio コンポーネントの自動スケーリングの迅速な開発が可能になります。 Knative-serving では、コンテナーを、1 つのインスタンスから多数のコンテナー インスタンスに及ぶスケーラブルなサービスとして考慮します。
Knativeの特徴
Knative サーバーレス フレームワークの機能のいくつかについて説明します。
- Knative は、Kubernetes にサービスをデプロイできる Kubernetes ベースのサーバーレス フレームワークです。
- Knative をサポートされている環境と簡単に統合します
- 開発者は、Knative を利用して Kubernetes API を直接使用して、サーバーレス サービスをデプロイできます。
- ユーザーは、Knative のイベント システムを利用してサーバーレス サービスをトリガーできます。
Knativeはどのように機能しますか?
Knative サーバーレス フレームワークはイベント ステアリング セグメントとして機能し、 Istio と Kubernetes を接続します。 Kubernetes は、マイクロサービスとコンテナーのオーケストレーターとして機能します。一方、Istio は、ユーザーやユーザー自身と対話するためにさまざまなコンポーネントを統合するオープンソースのメッシュ技術です。
Knative は、基本的な日常作業を実行することを目的とした複数のコンポーネントをユーザーに提供します。これらのコンポーネントは、さまざまなアプリケーションで繰り返し使用されます。開発者は任意のプログラミング言語を使用できます。したがって、Knative はコンテナー イメージのみを認識するため、言語に関する特別な知識は必要ありません。
Knative サーバーレス フレームワークには、その機能の鍵となる 3 つのコンポーネントがあります。
新しいコンテナの構築
ビルド コンポーネントは、新しいコンテナーの構築を担当します。ソースコードをコンテナに変換できます。 Knative は、ビジネス固有のニーズを満たすように構成できます。
まず、KnativeはGithubなどのライブラリからソースコードを引っ張ってきます。次に、コードが効果的に実行されるように、基礎となる依存関係が追加されます。次に、コンテナー イメージが構築され、Kubernetes プラットフォームがアクセスできるファイルに配置されます。
コンテナーは、Kubernetes と Knative を使用する開発者が利用できるようになります。したがって、コードの起源がわかっている限り、コンテナーは構築されます。
プラットフォームの提供または実行
サービス提供コンポーネントはプラットフォームの実行を担当します。それには以下が含まれます:
- 構成: サービスの複数のバージョンを管理する場合、構成は確実です。コンテナーの新機能がデプロイされるたびに、Knative は既存のバージョンを保存し、最新の変更と機能を備えた新しいバージョンを作成します。さらに、Knative はサービスの状態を定義します。
- 自動スケーリング: サーバーレス コンテナーをより適切に動作させるには、コンテナーを自動スケールアップまたはダウンできる必要があります。 Knative は、必要に応じてサービスを多数に自動スケールできます。
- インテリジェントなサービス ルーティング: これは、Knative の動作メカニズムの重要な部分です。これにより、開発者はトラフィックのフローと量をマイクロサービスの既存のさまざまなバージョンに向けることができます。新しい機能とブルーグリーン展開戦略を導入しながら、インテリジェントなサービス ルーティングを使用できます。
これにより、一部のユーザーを最新のテストとバージョンに公開し、膨大なトラフィックを徐々に新しいバージョンにルーティングすることができます。
関数を定義するためのイベンティング
Knative のイベント コンポーネントは、Knative の機能を記述する役割を果たします。イベントに基づいてコンテナの実行を定義できます。さまざまなイベントにより、コンテナーの特定の機能がトリガーされます。
開発者は、イベント トリガーと関連コンテナを定義して、Knative にそのジョブを実行させることができます。 Knative はイベントのリストとイベントの配信を処理します。
ネイティブの利点
Knative は、ルート管理、段階的リリース、サービス接続などのサービスを提供します。広大なコミュニティを誇っています。 Knative が企業にこのテクノロジーを導入するようどのように影響を与えるかについて説明しましょう。
- 他のソリューションとは異なり、Knative には標準イベントがあり、FaaS ソリューションと互換性があります。サーバーレス アーキテクチャの設計に役立つ CloudEvent 標準フレームワークを提供します。
- Knative は PaaS ではありませんが、サーバーレス オーケストレーション プラットフォームを使用してサーバーレス PaaS を作成できます。
- Knative は、本格的で成熟したサーバーレス設計を備えています。
- クロスプラットフォームをサポートし、クラウド プロバイダー間で共通の標準を提供することで、ベンダーを特定のソリューションに拘束する可能性を排除します。
- Knative は柔軟なフレームワークを提供します。
- 比例的な段階的リリースをサポートします。
- コンテナ化された環境内でサーバーレス エコシステムを体験できます。
- Knative は管理とツールの信頼性を排除します。
- Kubernetes を実装することで、Knative と統合されている他のクラウド プロバイダーにすぐに移行できます。
- リクエスト駆動型のコンピューティング モデルを提供します。
- ワークフローをサービスとして管理できます。
- Knative を使用すると、IoT データを処理し、アクセシビリティ チェックを実行し、セキュリティ グループの構成を検証できます。
- これにより、開発者はコーディングに集中し、反復コードを迅速に作成できるようになります。
- これにより、開発者は確実に新しいバージョンを組み込むことができます。
- Knative のイベントベースのモデルは、サブスクリプション、外部システムへの接続、登録などの設計の実装に役立ちます。
Knative の課題 (およびいくつかの解決策)
効率性の課題
適切なアプリケーションをサポートする Knative Framework は、最小限のコストでより優れたパフォーマンスを提供します。ただし、アプリケーションを不適切に組み合わせると、コストが高くなり、コンテナ リソースが十分に活用されなくなる可能性があります。これはアプリケーションのパフォーマンスの低下につながる可能性があり、これが Knative サーバーレス展開の最大の課題です。
したがって、リソース プールのサイズが適切でなかったり、アプリケーションが間違っていたりすると、Knative の多くの利点が損なわれる可能性があります。
Knative でリソースの量とアプリケーションの組み合わせを検証するテストを実行することで、この課題を克服できます。それぞれの平均負荷と最大負荷をサイジングすることでイベント負荷を測定し、リソースの総消費量を推定します。いくつかのアプリケーションに対してこれを繰り返し、試用構成を作成して実行し、推定を検証します。
機能的な課題
Knative の機能的な課題は次のとおりです。
- Knative はステートレス モデルに適合する関数に依存します。これは、コンポーネント自体にはデータが保存されていないことを意味します。機能の開発は難しい段階ではありませんが、アプローチを少し変える必要があるため、たった 1 つの間違いがソフトウェアのパフォーマンスを台無しにする可能性があります。
- ビジネス データは複数のステップのトランザクションで構成され、ステートレス関数はすべてのステップにわたるコンテキストを維持します。 Knative には、パブリック クラウドのサーバーレス ツールにあるような機能がありません。
定期的に監視して問題を修正することで、パフォーマンスを適切なスコアに保つことができます。
運用上の課題
パブリック クラウドのサーバーレス製品と比較すると、Knative には運用上の課題があります。管理者は、パブリック クラウドの基盤となるサーバーを制御しません。ただし、Kubernetes、コンテナ、Knative、および Istio 自体とともにサーバーを管理する必要があります。
Knative は、すでに Kubernetes とコンテナーに取り組んでいる企業の運用と開発の複雑さを最小限に抑えます。サービス メッシュとマイクロサービスに熱心に取り組んでいる人は、Knative が自然な拡張機能であることがわかります。
Knativeの使用例
時間内に設定された制限内または制限を超えて変動するイベントを発生させるアプリケーションの場合、Knative が最適です。 Knative サーバーレス フレームワークの具体的な使用例は次のとおりです。
- Web サイトのテストと検証
- アプリケーションの監視
- IoT
- ネットワーク監視
- モバイルアプリケーションのフロントエンドプロセス
- アジャイルとDevOpsのライフサイクル
- 新機能のロールアウト
- Kubernetes の合理化
イベントのオリエンテーションは不可欠です。 IT チームがアプリケーションをトランザクションではなく一連のイベントとして想像できない場合、機能と効率の理由から Knative は適切な選択ではない可能性があります。
Knative の前提条件とインストール
上のセクションで説明したように、Knative は、サービス メッシュとワークロード オーケストレーション クラスター上で実行されるイベント処理やサービングなどのコンポーネントのセットです。簡単に操作するには、インストールする必要があるコマンド ライン ユーティリティがあります。したがって、インストールを確実に続行するには、いくつかの依存関係が必要です。
前提条件
Kubernetes をインストールするにはいくつかのオプションがあります。 Docker Desktop により、さまざまな目的に対応する簡単な Kubernetes クラスターが可能になります。簡単なアプローチは、Docker で Kubernetes を使用して、Docker コンテナ ノードとともに Kubernetes クラスタを実行することです。クラスターを操作する便利な方法は、Knative コマンド ライン ツールを使用することです。
Knative CLI は、リソースを作成するための簡単かつ迅速なインターフェイスを提供します。トラフィック分割や自動スケーリングなどの複雑なタスクに役立ちます。便利な方法は、 GitHub ページ から互換性のあるバイナリをダウンロードすることです。
インストール
すべての前提条件を満たしたら、コンポーネントのインストールに進むことができます。開発環境用に、クイックスタート プラグインがあります。このプラグインは、Knative クライアントを使用したローカル Knative クラスターのインストールに役立ちます。クイックスタート プラグインは、公式リリース ページからダウンロードできます。
結論: Knative の将来
Knative は、アプリケーションの自動スケーリングを提供することでサーバーレス コンピューティングを置き換えました。これは、相互運用可能なモジュール式システムに大きな影響を与えます。
将来的には、Knative が現在の欠点をカバーし、サーバーレス アーキテクチャを実行するための最も効率的なテクノロジの 1 つになることが期待されています。
Knative テクノロジは、サーバーレスの代替テクノロジと比較したメリットを考慮すると、開発者にとってより大きな影響力を持っています。 Knative を使用すると、Kubernetes 拡張機能の構築と保守の必要性がなくなり、時間を大幅に節約できます。 Knative テクノロジーは使いやすく、サーバーレス ソリューションの優れた代替手段であるため、開発者は Knative テクノロジーに非常に満足しています。
したがって、クラウド ワークフローで Kubernetes 環境の力を最大限に活用したい場合は、Knative テクノロジーを採用して、そのメリットをご自身で体験してください。