著者|アリクラウドスマートビジネスグループシニアエンジニアユアン李
Knativeは、主に3つのコアコンポーネントにサービスを提供し、総合馬術、ビルドの構成されています。Knative前輪Knativeシップサーバレス線を駆動する、3つのコア・コンポーネントに依存しています。私たちは、これらの3つのコアコンポーネントのそれぞれをご紹介しましょう。
築きます
Knativeビルドは既存のKubernetesの能力に基づいている、それが組み込まれている標準化された、ポータブル、再利用可能なコンテナミラーを提供します。Kubernetes複合体上で実行することにより、タスクを構築し、Knativeは、ミラーを構築するための時間とコストを削減する、あなたは、体系的通じているので、エンジニアリングの方法を開発し、プロセスを構築するだけでは、これらの画像を繰り返す必要がないようにビルドします。
Kubernetesしてカスタムリソース定義(CRD)を実装ビルドします。あなたは、ビルドプロセスの最後に実行からビルドによってカスタマイズすることができます。例えば、Knativeは、取得構築し、パッケージコードするビルドします。次の機能を構築します。
-
サポートをマウントソースソースは、現在のソース源としてはサポートされています。
- gitのコードリポジトリ
- 任意のコンテナをミラー
- サポートテンプレートは、繰り返しビルドの実行を作成BuildTemplate
- 認証サポートK8S ServiceAccount
典型的な概略図ビルド:
完全Knativeは、独立したCI / CDソリューションを構築提供し、それは低レベルのビルディングブロックを提供していないが、ユーザーは、統合を実現し、大規模システムで使用するために、個々のビルディング・ブロックを使用することができます。
サービング
Knative Severless最終フレームがサービスを提供するために使用されたとして、その後Knativeがされて入ってきたサービング。
KubernetesとIstio上に構築されたサービングKnativeは、サーバレスアプリケーションのデプロイメントとサポートサービスを提供しています。次のようにその特徴は以下のとおりです。
- 迅速な展開サーバレスコンテナ
- これは、自動スケーリングの容量をサポートし、0例に減少します
- Istio系成分、ルーティングおよびネットワークプログラミングを提供
- 展開のスナップショットをサポート
以下のリソースで定義されたCRDをサービングKnative:
- サービス:ライフサイクル全体の自動ワークロード管理。ルート、コンフィギュレーションおよびリビジョンリソースの作成を担当。あなたは、最新のリビジョンのリビジョンを使用してトラフィックをルーティング指定するか、またはサービスによって固定することができます
- ルート:改訂の一つ以上にマッピングされたネットワークのエンドポイントを担当します。トラフィックは、さまざまな方法を使用して管理することができます。トラフィックとルーティングのリネームなどのグラデーション
- 構成:デプロイメントは、所望の状態を維持する責任があるコードと構成の間に明確な分離を提供し、アプリケーション開発の12個の要素をたどります。リビジョンを生産する構成を変更
- リビジョン:リビジョンリソースが各時間ワークロードのスナップショットポイントコードと設定変更されます。リビジョンは、長期保存することができ不変オブジェクトであります
リソース図:
総合馬術
Knativeイベンティングは、イベントソースとイベントコンシューマの組み合わせをバインドする方法を提供するために、一般的なニーズにネイティブクラウド開発を満たすように設計されています。それはに設計されています。
- 提供Knativeイベンティングサービスが疎結合、独立した開発と展開です。サービスは、(例えばKubernetes、仮想マシン、SaaSの又はFAASとして)、クロスプラットフォームであることができます
- イベントイベントの生産者と消費者が独立しています。任意のイベント(イベントソース)の生産者が最初のイベントの前に消費者にイベントリスナを生成することができ、同じイベントコンシューマは、イベントの前に発生したイベントをリッスンを開始することができ
- システムイベンティングをドッキングサードパーティのサービスのサポート
- サービス間の相互運用性を確保
イベント処理イラスト:
上記のように、イベントソース(イベントソース)によって主にイベンティング、イベント処理(フロー)とイベントコンシューマ(イベントコンシューマ)は、3つの部品。
イベントソース(イベントソース)
現在のイベントソースの次の種類をサポートしています。
- ApiserverSource:各ユーザーが作成時または更新Kubernetesリソースは、ApiserverSourceは、新しいイベントをトリガします
- GitHubSource:ときGitHubの操作、GitHubSourceは新しいイベントをトリガします
- GcpPubSubSource:GCPクラウドプラットフォームパブ/サブサービスは、新しいイベントをトリガします
- AwsSqsSource:AWS SQSクラウドサービスプラットフォームは、新しいイベントをトリガします
- ContainerSource:ContainerSourceは、このイベントによって生成コンテナ、コンテナをインスタンス化
- CronJobSource:cronジョブによって生成イベント
- KafkaSource:カフカのイベントを受信して、新しいイベントをトリガ
- CamelSource:キャメルは、イベント関連のコンポーネントを受信し、新しいイベントをトリガ
イベントレシーバ/トランスミッタ(フロー)
Knativeは現在、次のイベント受信処理をサポートしています。
- 直接のイベントは、受信
直接単一のイベント消費者にイベント・ソースによって転送します。サポートダイレクトコールKnativeサービスやKubernetesサービスが処理消費します。このようなシナリオの下では、あなたは、サービスが利用できない呼び出す場合、イベントソースは、処理のための責任のメカニズムを再試行してください。 - イベントチャネル(チャネル)およびイベント・サブスクリプションによってハンドリング(サブスクリプション)フォワーディングイベント
このような場合には、それはイベントが失われ、サブスクリプションは、より多くの消費者側の処理を満たすためにイベントをサブスクライブすることにより、チャネルバッファリングされていないことを確認することができます。 - ブローカーやトリガーによる消費者のサポートインシデントとフィルタリング
V0.5から(同じ入力および入力コントローラを介してフィルタリングネットワークトラフィック用として適用される)Knativeイベンティングブローカとトリガーオブジェクト定義は、入射フィルタを達成するため、始まります。
トリガーによってチャネルのサブスクリプション(購読)作成したブローカーチャンネルを定義することによって作成され、イベントのフィルタリングルールを生成します。
消費者のイベント(イベントコンシューマー)
消費者サービスの種類を満たすためにイベントを送信するには、Knativeイベンティングは、複数のK8Sのリソースを介して2つの共通のインタフェースを定義しています。
- HTTPアドレス可能インターフェースは、イベントが受信および送信要求アドレスを、によってために使用されてもよい提供
status.address.hostname
フィールド定義。特殊なケースとして、Kubernetesサービスオブジェクトは、アドレス可能なインタフェースを実現することができます - 呼び出し可能インターフェースは、HTTP変換事象を介して、イベント転送を受信します。外部イベントソースイベントから同じ方法で処理することができ、これらのイベントの更なる処理が返さ
現在のイベントはKnativeサービスやKubernetesサービスによって消費をサポートKnative。
また、イベントの消費者のために、どのようなイベントが消費することができ、事前に知っていますか?最新のバージョン0.6で提供さKnativeイベンティングレジストリイベント登録メカニズム、イベント消費者が消費できるイベントの種類にレジストリBrokerによって事前に取得できるようにします。
概要
ネイティブKnative使用のビルド・クラウド「容器へのソースコードから、」イベンティングイベントはグローバルサブスクリプション、配信、管理機能、イベント駆動型を提供しながら、一般的なサービスモデルを提供することで、コンテナを、構築、展開、およびサービングするミラー機能。これはKnativeは、当社の標準的なサーバレスオーケストレーションフレームワークに提示されます。