1.33.1 • Published 1 year ago

@knative-tmp/backstage-plugins-no-fork-test v1.33.1

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
1 year 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.

A demo setup for this plugin is available at https://github.com/aliok/knative-backstage-demo.

Dynamic vs static plugin

This plugin has 2 distributions: static and dynamic.

The static distribution is a regular Backstage plugin that requires the source code of Backstage to be changed.

The dynamic distribution is a plugin that can be installed without changing the source code of Backstage. If you would like to use the dynamic plugin, please see the instructions in the Dynamic Plugin README file.

Rest of this documentation is for the static plugin.

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 }

Legacy Backend Installation

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

import {CatalogClient} from "@backstage/catalog-client";
import {
    KnativeEventMeshProcessor,
    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 THESE
    builder.addEntityProvider(
        KnativeEventMeshProvider.fromConfig(env.config, {
            logger: env.logger,
            scheduler: env.scheduler,
        }),
    );
    const catalogApi = new CatalogClient({
        discoveryApi: env.discovery,
    });
    const knativeEventMeshProcessor = new KnativeEventMeshProcessor(catalogApi, env.logger);
    builder.addProcessor(knativeEventMeshProcessor);

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

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

New Backend Installation

To install on the new backend system, add the following into the packages/backend/index.ts file:

import { createBackend } from '@backstage/backend-defaults';

const backend = const backend = createBackend();

// Other plugins/modules

backend.add(import('@knative-extensions/plugin-knative-event-mesh-backend/alpha'));

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