Knative Event Mesh バックステージプラグイン¶
情報
インストール手順については、プラグインインストールドキュメントを参照してください。
Knative Event Meshプラグインは、Knative Eventingリソースの表示と管理を可能にするBackstageプラグインです。このプラグインは、Kubernetesクラスタ内で実行され、Kubernetes APIサーバーと通信する特別なバックエンドと通信します。
Backstageは、開発者ポータルを構築するためのプラットフォームです。開発者が日々の業務で使用しているさまざまなリソースを管理および視覚化するための統一された方法を提供します。
Backstageは次世代のKubernetesダッシュボードとして設計されていませんが、Knativeリソースを視覚化し、部分的に管理することができます。これらのリソースは読み取り専用で、開発者に関連する情報に焦点を当てています。
情報
このプラグインのデモ設定は、https://github.com/aliok/knative-backstage-demoで入手できます。
動作原理¶
プラグインはBackstageインスタンスのフロントエンド部分です。UIのレンダリングとバックエンドとの通信を担当します。バックエンドは、Kubernetes APIサーバーと通信し、フロントエンドに必要な情報を提供する役割を担います。
このプラグインは、Backstageのエンティティプロバイダーとエンティティプロセッサの概念を活用しています。エンティティプロバイダーは、バックエンドからリソースを取得する役割を担い、エンティティプロセッサは、リソースを処理してフロントエンドで使用できるようにする役割を担います。プロバイダーはカスタムバックエンドと通信する部分です。
このプラグインは、バックエンドからKnative EventType、Broker、Triggerリソースを取得します。生のKubernetesリソースを直接取得する代わりに、よりユーザーフレンドリーなデータ表現を収集します。つまり、特定のフィールドは除外され、一部は明確にするために結合され、他のフィールドは、このインターフェース内でより理解しやすくなるように変換されます。
表示内容¶
Knativeトリガーは、任意のアドレス指定可能なもの、または直接URLを指すことができます。Backstage側はこれらをどのように処理するかわからないため、プラグインは、トリガーのサブスクライバがBackstageに既に登録されている場合にのみ表示します。この関係には、BackstageエンティティとKubernetesリソースの両方でbackstage.io/kubernetes-id
アノテーションを使用します。
マッチングの仕方は、Event MeshプラグインREADMEファイルの図解で説明されています。
この統合の素晴らしい点は、Backstageのグラフ表示機能です。たとえば、EventType、Broker、トリガーサブスクライバ間の関係をグラフで確認できます。
Backstageのグラフ
セキュリティ¶
Backstageセキュリティ
他のBackstageプラグインと同様に、プラグイン管理者がバックエンドのURLやトークンなどの必要なものを設定することでプラグインを構成できるようにしたいと考えました。Backstage Kubernetesプラグインと同様のアプローチで、ユーザーはURLとトークンを提供する必要があります。
トークンはBackstageの設定に保存され、各リクエストでバックエンドに渡されます。バックエンドはこのトークンを使用してKubernetes APIサーバーへの認証を行います。トークンは、クラスタ内のKnative Eventingリソースを一覧表示するのに必要な権限を持つサービスアカウントトークンです。
...
catalog:
providers:
knativeEventMesh:
dev:
token: '${KNATIVE_EVENT_MESH_TOKEN}'
baseUrl: "http://eventmesh-backend.knative-eventing.svc:8080"
schedule: # optional; same options as in TaskScheduleDefinition
# supports cron, ISO duration, "human duration" as used in code
frequency: { minutes: 1 }
# supports ISO duration, "human duration" as used in code
timeout: { minutes: 1 }
token
はKNATIVE_EVENT_MESH_TOKEN
環境変数から取得されます。Backstageは設定ファイルで環境変数をサポートしているため、Backstageインスタンスを開始する前に環境変数としてトークンを設定できます。実際、Backstageには設定ファイル、ファイルのインクルードなど、他のメカニズムがあります。詳細については、Backstageドキュメントを確認してください。
ServiceAccount
、ClusterRole
、ClusterRoleBinding
、Secret
、およびそのSecret
のトークンの作成方法は、プラグインインストールドキュメントで説明されています。
使用方法¶
このプラグインは、クラスタ内のすべてのBroker
とEventType
リソースを表示します。Broker
はBackstageのComponent
として、EventType
はBackstageのAPI
として表示されます。
Trigger
のサブスクライバはBackstage Component
として表示されます。ただし、以下の条件を満たす場合にのみ表示されます。
- Backstageに登録されている
backstage.io/kubernetes-id
アノテーションがKubernetesリソースの名前に設定されている