Skip to main content

Open Service Portal Workflow Documentation

Overview

The Open Service Portal orchestrates multiple workflows that enable teams to develop, release, and consume infrastructure and service templates. This document explains the complete platform workflow - from initial template development through automated release processes (including GitHub Actions) to GitOps deployment and resource provisioning via Backstage.

High-Level Platform Workflow

The platform operates through three main workflow phases with PR reviews as critical checkpoints:

Architecture Components

Repository Structure

Pull Request Workflows

The platform uses pull requests at three critical points as quality gates, with different roles responsible for reviews:

PR Review Points Summary

RepositoryPR Created ByReviewed ByPurposeAuto-merge
template-*DevelopersTeam membersCode review, testingNo
catalogGitHub ActionsPlatform AdminTemplate governanceNo
catalog-ordersBackstage ScaffolderBot/Platform AdminResource validationConfigurable

PR Checkpoints Overview

1. Template Development PRs (template-* repositories)

2. Catalog Release PRs (catalog repository)

3. Resource Order PRs (catalog-orders repository)

Release Workflows

GitHub Actions Automation

GitHub Actions serves as the automation engine for the release process, connecting template developers with platform administrators:

The GitHub Actions workflow (/.github/workflows/release.yaml) handles:

  • Building Crossplane configuration packages
  • Publishing container images
  • Versioning templates
  • Creating GitHub releases
  • Opening PR to catalog repository (requires review)

Catalog PR Review Process

GitOps Deployment Workflows

1. Template Release Flow

This flow shows how infrastructure templates are developed, released, and made available in the cluster.

2. Resource Ordering Flow

This flow shows how developers use Backstage to create infrastructure resources that are deployed via GitOps.

3. Multi-Repository Pattern

Repository Structure Details

Catalog Repository (catalog/)

templates/
├── dns-record/
│ ├── xrd.yaml
│ └── composition.yaml
├── cloudflare-dnsrecord/
│ ├── xrd.yaml
│ └── composition.yaml
└── ...

Catalog-Orders Repository (catalog-orders/)

clusters/
├── db-cluster/ # Managed by Database Platform Team
│ ├── platform-services/
│ │ └── postgres-operators/
│ │ └── postgres-operator.yaml
│ └── customer-databases/
│ ├── project-1-db.yaml
│ └── project-2-db.yaml
├── infra-cluster/ # Managed by Infrastructure Team
│ ├── dns-management/
│ │ └── external-dns.yaml
│ └── certificates/
│ └── cert-manager.yaml
├── project-1-dev/ # Project 1's development cluster
│ ├── backend-team/
│ │ └── applications/
│ │ └── api-service.yaml
│ └── frontend-team/
│ └── applications/
│ └── web-app.yaml
├── project-1-prod/ # Project 1's production cluster
│ ├── backend-team/
│ │ └── applications/
│ │ └── api-service.yaml
│ └── frontend-team/
│ └── applications/
│ └── web-app.yaml
└── project-2-cluster/ # Project 2's single cluster
└── team-gamma/
├── applications/
│ └── monolith.yaml
└── databases/
└── local-postgres.yaml

Cluster Organization Patterns:

  • Service Clusters (db-cluster, infra-cluster): Managed by platform teams, provide services to other clusters
  • Project Clusters (project-1-dev, project-1-prod): Owned by project teams, may have multiple environments
  • Shared Clusters (project-2-cluster): Single cluster for smaller projects or teams

Detailed Component Interactions

Backstage Integration Points

Flux GitOps Watchers

End-to-End Workflow Examples

Example 1: Creating a DNS Record

Example 2: Deploying an Application

Versioning Strategy

Template Versioning Flow

Version flow:

  1. Developer creates git tag (e.g., v1.2.3)
  2. GitHub Actions builds and releases
  3. Version added to XRD label: openportal.dev/version: "1.2.3"
  4. Package pushed to ghcr.io/template:v1.2.3
  5. Backstage displays as "Template v1.2.3"

Cluster and Namespace Organization

catalog-orders Repository Structure

Platform Service Model

Crossplane v2 Architecture

Namespaced XR Flow (No Claims)

Error Handling and Recovery

GitOps Error Recovery Flow

Monitoring and Observability

Status Flow

Best Practices

1. Template Development

  • Always use Crossplane v2 with namespaced XRs
  • Include comprehensive examples
  • Add proper RBAC permissions
  • Use semantic versioning

2. GitOps Repository Management

  • Keep catalog organized by template type
  • Use clear directory structure in catalog-orders
  • Enable branch protection on main
  • Set up automated PR validation

3. Backstage Integration

  • Ensure XRDs have required labels
  • Keep Kubernetes Ingestor polling interval reasonable
  • Cache template data appropriately
  • Provide clear template descriptions

4. Production Considerations

  • Pin provider versions in production
  • Implement proper RBAC for namespaces
  • Set up monitoring and alerting
  • Plan for disaster recovery

Summary

The Open Service Portal workflow orchestrates multiple processes to deliver a complete platform experience:

1. Development Workflows

  • Local development with immediate feedback
  • Template creation following standards
  • PR-based collaboration and review
  • Testing before release

2. Release Automation

  • GitHub Actions automate the release pipeline
  • Semantic versioning throughout
  • Automatic catalog updates
  • Container registry publishing

3. GitOps Deployment

  • Flux ensures desired state
  • Two-repository pattern (catalog + orders)
  • Continuous reconciliation
  • Drift detection and correction

4. Platform Integration

  • Backstage provides the developer portal
  • Kubernetes hosts all resources
  • Crossplane manages infrastructure
  • Everything connected via APIs

Key Benefits

  1. Developer Experience

    • Self-service infrastructure provisioning
    • Visual forms generated from templates
    • Real-time status monitoring
    • No direct kubectl needed
  2. Operational Excellence

    • Every change tracked in Git
    • Automated deployment pipeline
    • Consistent environments
    • Rollback capabilities
  3. Governance & Compliance

    • Template approval process
    • RBAC at every level
    • Audit trail in Git history
    • Policy enforcement via Crossplane
  4. Scalability

    • Multi-team support via namespaces
    • Template reusability
    • Automated processes reduce toil
    • GitOps scales with Git

This comprehensive workflow enables teams to move fast while maintaining safety and control, bridging the gap between development velocity and operational stability.