Skip to content

appthrust/backstage-plugins

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 AppThrust Backstage Plugins

Bring your multi-cluster Kubernetes platform into the Backstage Developer Portal.

License: MIT TypeScript Backstage


Why this plugin?

Most Kubernetes plugins show you pods and deployments. AppThrust operates at a higher level — multi-cluster fleet management. These plugins understand that domain natively:

  • ClusterSets & topology — see how clusters group across regions, environments, and roles (workload, gateway, control plane)
  • Directional Istio connections — visualize service mesh links between clusters, including mTLS mode and protocol
  • Karpenter auto-scaling — surface instance families, capacity types, and resource limits per cluster
  • Sveltos packages & GatewayFleetPolicies — track installed packages, versions, health, and fleet-wide gateway policies

Instead of raw Kubernetes resources, your developers get platform context: which clusters belong to which environments, what's running where, and how it all connects.


What you get

@appthrust/backstage-plugin-common          Shared TypeScript types & API client
@appthrust/backstage-plugin-catalog-backend  Entity Provider — syncs AppThrust CRDs → Backstage catalog
@appthrust/backstage-plugin-backend          Backend API proxy — routes to AppThrust PMC API
@appthrust/backstage-plugin                  Frontend plugin — Status Card & Cluster Overview Tab
Package Role
@appthrust/backstage-plugin-common Domain types (Cluster, ClusterSet, Connection, Application, etc.) and a typed API client shared across all packages
@appthrust/backstage-plugin-catalog-backend Entity Provider that syncs AppThrust projects, clusters, applications, connections, gateway policies, and subnets into the Backstage catalog
@appthrust/backstage-plugin-backend Express router that proxies frontend requests to the AppThrust PMC API (or returns mock data in dev mode)
@appthrust/backstage-plugin React components for entity pages — AppThrustStatusCard and ClusterOverviewTab

Quick Start

1. Install

# From your Backstage app root
yarn add @appthrust/backstage-plugin \
         @appthrust/backstage-plugin-backend \
         @appthrust/backstage-plugin-catalog-backend \
         @appthrust/backstage-plugin-common

2. Configure app-config.yaml

catalog:
  providers:
    appthrust:
      default:
        apiUrl: https://pmc.example.com
        serviceAccountToken: ${APPTHRUST_SA_TOKEN}
        projects: []          # empty = all projects
        schedule:
          frequency: { minutes: 5 }
          timeout: { minutes: 3 }

3. Register backend plugins

In packages/backend/src/index.ts:

backend.add(import('@appthrust/backstage-plugin-catalog-backend'));
backend.add(import('@appthrust/backstage-plugin-backend'));

4. Add frontend components

In packages/app/src/components/catalog/EntityPage.tsx:

import {
  AppThrustStatusCard,
  ClusterOverviewTab,
  isAppThrustAvailable,
} from '@appthrust/backstage-plugin';

// Add to the entity overview page
const overviewContent = (
  <Grid container spacing={3}>
    <EntitySwitch>
      <EntitySwitch.Case if={isAppThrustAvailable}>
        <Grid item md={6}>
          <AppThrustStatusCard />
        </Grid>
      </EntitySwitch.Case>
    </EntitySwitch>
  </Grid>
);

// Add a Cluster Overview tab for Resource entities
const resourcePage = (
  <EntityLayout>
    <EntityLayout.Route path="/appthrust" title="AppThrust">
      <ClusterOverviewTab />
    </EntityLayout.Route>
  </EntityLayout>
);

That's it — AppThrust entities will appear in your catalog on the next sync cycle.


Entity Mapping

The catalog provider maps AppThrust resources to native Backstage entities with full relationship wiring:

AppThrust Resource Backstage Kind Backstage Type Key Relations
Project Group team
Cluster Resource kubernetes-cluster partOf → ClusterSet
ClusterSet System cluster-set hasPart → Clusters
Application Component service dependsOn → ClusterSet
Connection Resource service-mesh-connection dependsOn → source & target Clusters
GatewayFleetPolicy Resource gateway-fleet dependsOn → target Clusters
Subnet Resource network-subnet dependencyOf → Cluster

All entities are annotated with appthrust.io/* metadata (project, status, region, provider, role) and include direct links to the AppThrust Dashboard.


Frontend Components

AppThrustStatusCard

A compact card for entity overview pages. Shows at a glance:

  • Health status — color-coded badge (healthy / degraded / unhealthy / unknown)
  • Cluster role — workload, gateway, or control plane
  • Project & ClusterSet — organizational context
  • Last sync time — when the entity was last reconciled
  • Dashboard link — one-click jump to AppThrust Dashboard

ClusterOverviewTab

A full-page tab for deep cluster inspection. Four sections:

  • Cluster Information — name, role, provider, region, Kubernetes version, node count, status
  • Karpenter Auto-Scaling — instance families, capacity type (on-demand/spot), CPU & memory limits
  • Installed Packages — table of Sveltos-managed packages with version and health status
  • Labels — all cluster labels rendered as filterable chips

Mock Mode

Set apiUrl: mock to load realistic demo data without a PMC connection — great for local development, demos, and CI:

catalog:
  providers:
    appthrust:
      default:
        apiUrl: mock
        schedule:
          frequency: { minutes: 5 }
          timeout: { minutes: 3 }

The mock dataset includes:

  • ACME Corp project with 16 clusters across 4 AWS regions
  • 3 ClusterSets — production-global (11 clusters), staging-eu, development
  • 4 applications — checkout, payments, inventory, frontend
  • 6 Istio connections — directional mesh links with mTLS
  • 3 GatewayFleetPolicies — global ingress, API gateway, staging ingress
  • 8 subnets — pod, service, and node CIDRs

Architecture

┌──────────────────────────────────────────────────────────┐
│                    Backstage App                         │
│                                                          │
│  ┌─────────────────────┐  ┌────────────────────────────┐ │
│  │  AppThrustStatusCard │  │    ClusterOverviewTab      │ │
│  └─────────┬───────────┘  └──────────┬─────────────────┘ │
│            │                         │                    │
│            └────────┬────────────────┘                    │
│                     ▼                                     │
│  ┌──────────────────────────────────────────────────────┐ │
│  │         @appthrust/backstage-plugin-backend          │ │
│  │              (API Proxy / Express Router)            │ │
│  └──────────────────────┬───────────────────────────────┘ │
│                         │                                 │
│  ┌──────────────────────┴───────────────────────────────┐ │
│  │      @appthrust/backstage-plugin-catalog-backend     │ │
│  │           (Entity Provider — sync loop)              │ │
│  └──────────────────────┬───────────────────────────────┘ │
└─────────────────────────┼────────────────────────────────┘
                          │
                          ▼
              ┌───────────────────────┐
              │   AppThrust PMC API   │
              │  (or mock data mode)  │
              └───────────────────────┘

Roadmap

Phase 1 — Catalog + Cards ✅ (current)

  • Entity Provider syncing all AppThrust resource types
  • Status card and cluster overview components
  • Mock data for development and demos

Phase 2 — Topology & Pipelines

  • Interactive topology visualization (cluster mesh map)
  • Release pipeline tab with deployment history
  • Real-time status streaming via WebSocket

Phase 3 — Scaffolder & Golden Paths

  • Scaffolder actions: create clusters, applications, connections
  • Golden path templates for common multi-cluster patterns
  • Cost allocation dashboard integration

Development

yarn install    # Install dependencies
yarn build      # Build all packages
yarn test       # Run tests

Contributing

Contributions are welcome! Whether it's a bug report, feature request, or pull request — we'd love your help making the AppThrust Backstage experience better.

  1. Fork the repo
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Commit your changes
  4. Open a pull request

Links


License

MIT © 2026 AppThrust

About

AppThrust plugins for Backstage — bring multi-cluster Kubernetes management into your Developer Portal

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors