コンテンツへスキップ

Knative Event Mesh バックステージプラグイン

情報

インストール手順については、プラグインインストールドキュメントを参照してください。

Knative Event Meshプラグインは、Knative Eventingリソースの表示と管理を可能にするBackstageプラグインです。このプラグインは、Kubernetesクラスタ内で実行され、Kubernetes APIサーバーと通信する特別なバックエンドと通信します。

Backstageは、開発者ポータルを構築するためのプラットフォームです。開発者が日々の業務で使用しているさまざまなリソースを管理および視覚化するための統一された方法を提供します。

Backstageは次世代のKubernetesダッシュボードとして設計されていませんが、Knativeリソースを視覚化し、部分的に管理することができます。これらのリソースは読み取り専用で、開発者に関連する情報に焦点を当てています。

Event Mesh plugin

Event Mesh plugin

情報

このプラグインのデモ設定は、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 }

tokenKNATIVE_EVENT_MESH_TOKEN環境変数から取得されます。Backstageは設定ファイルで環境変数をサポートしているため、Backstageインスタンスを開始する前に環境変数としてトークンを設定できます。実際、Backstageには設定ファイル、ファイルのインクルードなど、他のメカニズムがあります。詳細については、Backstageドキュメントを確認してください。

ServiceAccountClusterRoleClusterRoleBindingSecret、およびそのSecretのトークンの作成方法は、プラグインインストールドキュメントで説明されています。

使用方法

このプラグインは、クラスタ内のすべてのBrokerEventTypeリソースを表示します。BrokerはBackstageのComponentとして、EventTypeはBackstageのAPIとして表示されます。

TriggerのサブスクライバはBackstage Componentとして表示されます。ただし、以下の条件を満たす場合にのみ表示されます。

  • Backstageに登録されている
  • backstage.io/kubernetes-idアノテーションがKubernetesリソースの名前に設定されている

サイトトラフィックを理解するために、分析とCookieを使用しています。当サイトの使用に関する情報は、その目的でGoogleと共有されます。詳細はこちら。