0.1.2 • Published 4 days ago

@knative-extensions/plugin-knative-event-mesh-backend v0.1.2

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
4 days ago

Knative Event Mesh plugin

The Event Mesh plugin is a Backstage plugin that allows you to view and manage Knative Eventing resources.

The Backstage plugin talks to a special backend that runs in the Kubernetes cluster and communicates with the Kubernetes API server.

Installation

Install the backend and the relevant configuration in the Kubernetes cluster

kubectl apply -f https://github.com/knative-extensions/backstage-plugins/releases/download/v0.1.0/eventmesh.yaml

In your Backstage directory, run the following command to install the plugin:

yarn workspace backend add @knative-extensions/plugin-knative-event-mesh-backend

Configuration

NOTE: The backend needs to be accessible from the Backstage instance. If you are running the backend without exposing it, you can use kubectl port-forward to forward the port of the backend service to your local machine.

kubectl port-forward -n knative-eventing svc/eventmesh-backend 8080:8080

The plugin needs to be configured to talk to the backend. It can be configured in the app-config.yaml file of the Backstage instance and allows configuration of one or multiple providers.

Use a knativeEventMesh marker to start configuring the app-config.yaml file of Backstage:

catalog:
  providers:
    knativeEventMesh:
      dev:
        baseUrl: 'http://localhost:8080' # URL of the backend installed in the cluster
        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 }

Configure the scheduler for the entity provider. Add the following code to packages/backend/src/plugins/catalog.ts file:

In file packages/backend/src/plugins/catalog.ts:

import {KnativeEventMeshProvider} from '@knative-extensions/plugin-knative-event-mesh-backend';

export default async function createPlugin(
    env:PluginEnvironment,
):Promise<Router> {
    const builder = await CatalogBuilder.create(env);

    /* ... other processors and/or providers ... */

    // ADD THIS
    builder.addEntityProvider(
        KnativeEventMeshProvider.fromConfig(env.config, {
            logger: env.logger,
            scheduler: env.scheduler,
        }),
    );

    /* ... other processors and/or providers ... */

    const {processingEngine, router} = await builder.build();
    await processingEngine.start();
    return router;
}

NOTE: If you have made any changes to the schedule in the app-config.yaml file, then restart to apply the changes.

Troubleshooting

When you start your Backstage application, you can see some log lines as follows:

[1] 2024-01-04T09:38:08.707Z knative-event-mesh-backend info Found 1 knative event mesh provider configs with ids: dev type=plugin

Usage

The plugin will register a few entities in the Backstage catalog.

Screenshots:

  • Event Mesh plugin

  • Event Mesh plugin