Knative Event Mesh Backstage 插件¶
信息
有关安装说明,请参阅插件安装文档。
Knative Event Mesh 插件是一个 Backstage 插件,允许您查看和管理 Knative Eventing 资源。该插件与在 Kubernetes 集群中运行并与 Kubernetes API 服务器通信的特殊后端进行通信。
Backstage 是一个用于构建开发者门户的平台。它提供了一种统一的方式来管理和可视化开发者在日常工作中使用的不同资源。
虽然 Backstage 并非设计为下一代 Kubernetes Dashboard,但它可以可视化并部分管理 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 和 Trigger 订阅者之间的关系。
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 }
令牌取自 KNATIVE_EVENT_MESH_TOKEN 环境变量。Backstage 支持配置中的环境变量,因此您可以在启动 Backstage 实例之前将令牌设置为环境变量。实际上,Backstage 还有其他机制,包括配置文件、文件包含等。您可以查看 Backstage 文档 以获取更多信息。
如何创建 ServiceAccount、ClusterRole、ClusterRoleBinding、Secret 以及该 Secret 的令牌记录在插件安装文档中。
用法¶
该插件将显示集群中所有的 Broker 和 EventType 资源。Brokers 将显示为 Backstage Component,EventTypes 将显示为 Backstage API。
Triggers 的订阅者将显示为 Backstage Components。但是,仅当它们满足以下条件时才会显示:
- 它们已在 Backstage 中注册
- 它们设置了指向 Kubernetes 资源名称的
backstage.io/kubernetes-id注释