🚀. Socket Launch Week Day 3:Socket Firewall Now Blocks Malicious VS Code and Open VSX Extensions.Learn more
Sign In

@muvaf/kubernetes-apply

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@muvaf/kubernetes-apply

A custom Backstage scaffolder action to apply any Kubernetes resource.

latest
Source
npmnpm
Version
0.1.0
Version published
Maintainers
1
Created
Source

Apply Kubernetes Manifests in Backstage

This custom scaffolder action allows you to do a server-side apply for any Kubernetes manifest.

I wrote this for a KubeCon talk without knowing much TypeScript. Be careful if you decide to use it.

Getting Started

Add to your Backstage app.

# From your Backstage root directory
yarn add --cwd packages/backend @muvaf/kubernetes-apply
# To be able to keep using the built-in actions.
yarn add --cwd packages/backend @backstage/integration

IMPORTANT NOTE: Make sure the ServiceAccount of your Backstage app has the necessary permissions to create the resources you want to create.

Append it to your existing actions in packages/backend/src/plugins/scaffolder.ts

import { CatalogClient } from '@backstage/catalog-client';
import { createRouter, createBuiltinActions } from '@backstage/plugin-scaffolder-backend';
import { ScmIntegrations } from '@backstage/integration';
import { Router } from 'express';
import type { PluginEnvironment } from '../types';
import { kubernetesApply } from "@muvaf/kubernetes-apply";

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,
      kubernetesApply()
  ]

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

Done! You can now use the action in your software templates.

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: hello-world-on-kubernetes
  title: Hello World on Kubernetes
spec:
  steps:
    - id: create-argocd-application
      name: Create ArgoCD Application
      action: kubernetes:apply
      input:
        namespaced: true
        manifest: |
          apiVersion: argoproj.io/v1alpha1
          kind: Application
          metadata:
            name: deploy
            namespace: ${{ parameters.serviceName }}
          spec:
            destination:
              namespace: ${{ parameters.serviceName }}
              server: https://kubernetes.default.svc
            project: default
            source:
              chart: ${{ (parameters.repoUrl | parseRepoUrl).repo }}
              repoURL: ghcr.io/${{ (parameters.repoUrl | parseRepoUrl).owner }}
              targetRevision: 9.9.9
            syncPolicy:
              automated:
                selfHeal: true
              syncOptions:
                - CreateNamespace=true

Keywords

backstage

FAQs

Package last updated on 06 Nov 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts