@devangelista/backstage-scaffolder-kubernetes
TypeScript icon, indicating that this package has built-in type declarations

0.1.3 • Public • Published

Backstage Scaffolder Actions for Kubernetes

This is a Kubernetes actions plugin for the scaffolder-backend in Backstage.

It contains a set of actions to create and manage Kubernetes resources.

Getting Started

In the root directory of your Backstage project:

yarn add --cwd packages/backend @devangelista/backstage-scaffolder-kubernetes

Make sure to add a Kubernetes section to your app-config.yaml (check the Backstage docs)

On your package/backend/src/scaffolder.ts file, add the following:

import { kubernetesActions } from '@devangelista/backstage-scaffolder-kubernetes';

export default async function createPlugin(
  env: PluginEnvironment,
): Promise<Router> {
  const catalogClient = new CatalogClient({ discoveryApi: env.discovery });
  const integrations = ScmIntegrations.fromConfig(env.config);

  const builtInActions = createBuiltinActions({
    integrations,
    catalogClient,
    config: env.config,
    reader: env.reader,
  });

  const actions = [...builtInActions, ...kubernetesActions()]; // <-- add this line

  return await createRouter({
    actions,
    catalogClient,
    logger: env.logger,
    config: env.config,
    database: env.database,
    reader: env.reader,
    identity: env.identity,
  });
}

Usage

You can now use the actions in your templates:

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: Delete-action
  description: Delete a Kubernetes resources
  title: Delete a Kubernetes resources
spec:
  lifecycle: experimental
  owner: user
  parameters:
    - properties:
        name:
          title: Resource Name
          description: The name of the resource to delete
          type: string
          ui:autofocus: true
        namespace:
          title: Namespace
          description: The namespace of the resource
          type: string
          default: default
      title: Resource
      required:
        - name
        - namespace
  steps:
    - action: kube:delete
      id: k-delete
      name: Delete
      input:
        apiVersion: example.group.bar/v1
        kind: Foo
        namespace: ${{parameters.namespace}}
        name: ${{ parameters.name }}

---

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  description: Create a Kubernetes resources
  name: create-resource
  title: Jenkins
spec:
  lifecycle: experimental
  owner: user
  type: example
  parameters:
    - properties:
        name:
          description: The name of the Resource
          title: Name
          type: string
          ui:autofocus: true
      required:
        - name
      title: Resource
  steps:
    - action: kube:apply
      id: k-apply
      name: Create a Resouce
      input:
        namespaced: true
        manifest: |
          apiVersion: example.group.bar/v1
          kind: Foo
          metadata:
            name: ${{ parameters.name }}
            namespace: default
    - action: kube:job:wait
      id: k-wait
      name: Wait for a Job to complete
      input:
        labels:
          job-name: foo-bar
          # more labels

Package Sidebar

Install

npm i @devangelista/backstage-scaffolder-kubernetes

Weekly Downloads

0

Version

0.1.3

License

Apache-2.0

Unpacked Size

38.4 kB

Total Files

6

Last publish

Collaborators

  • devangelista