RHDH backstage
This commit is contained in:
@@ -965,21 +965,37 @@ ignore:
|
|||||||
- Check Gitea Actions tab for workflow run status and logs
|
- Check Gitea Actions tab for workflow run status and logs
|
||||||
- Monitor Anthropic usage dashboard for token consumption
|
- Monitor Anthropic usage dashboard for token consumption
|
||||||
|
|
||||||
### Backstage (Developer Portal)
|
### Backstage / RHDH (Developer Portal)
|
||||||
|
|
||||||
**Chart**: `backstage/backstage`
|
**Chart**: `backstage` (RHDH — Red Hat Developer Hub)
|
||||||
**Version**: `2.6.3`
|
**Version**: `5.8.0`
|
||||||
**Namespace**: `backstage`
|
**Namespace**: `backstage`
|
||||||
**Helm Repo**: `https://backstage.github.io/charts`
|
**Helm Repo**: `https://redhat-developer.github.io/rhdh-chart`
|
||||||
|
**Image**: `quay.io/rhdh-community/rhdh:next`
|
||||||
|
|
||||||
**Purpose**: Internal developer portal where teams register and broadcast themselves, their applications, APIs, and systems. Provides a unified catalog, templates, and documentation hub.
|
**Purpose**: Internal developer portal where teams register and broadcast themselves, their applications, APIs, and systems. Provides a unified catalog, templates, and documentation hub.
|
||||||
|
|
||||||
|
**Why RHDH over vanilla Backstage**: Ships 27+ plugins pre-bundled (ArgoCD, Kubernetes, Keycloak, GitHub, GitLab, Jira, SonarQube, Tekton, Jenkins, Quay, and more). Supports dynamic plugin installation at runtime — no image rebuilds needed.
|
||||||
|
|
||||||
**Configuration** (`infra/values/base/backstage-values.yaml`):
|
**Configuration** (`infra/values/base/backstage-values.yaml`):
|
||||||
- PostgreSQL subchart enabled for persistence (standalone, 2Gi)
|
- OpenShift Route disabled (`route.enabled: false`) — uses Traefik ingress instead
|
||||||
|
- PostgreSQL subchart enabled for persistence (2Gi)
|
||||||
|
- SecurityContext configured for vanilla Kubernetes (non-OpenShift)
|
||||||
- Traefik ingress with `websecure` entrypoint
|
- Traefik ingress with `websecure` entrypoint
|
||||||
- App title: "Forte Developer Portal"
|
- App title: "Forte Developer Portal"
|
||||||
|
- Dynamic plugins: loads `dynamic-plugins.default.yaml` (all 27+ bundled plugins)
|
||||||
- Catalog rules: Component, System, API, Resource, Location, Template, Group, User, Domain
|
- Catalog rules: Component, System, API, Resource, Location, Template, Group, User, Domain
|
||||||
|
|
||||||
|
**Dynamic Plugins**:
|
||||||
|
Add plugins at runtime via `global.dynamic.plugins` in values — no image rebuild:
|
||||||
|
```yaml
|
||||||
|
global:
|
||||||
|
dynamic:
|
||||||
|
plugins:
|
||||||
|
- package: "@scope/my-plugin@1.0.0"
|
||||||
|
integrity: "sha512-..."
|
||||||
|
```
|
||||||
|
|
||||||
**Catalog Registration**:
|
**Catalog Registration**:
|
||||||
Teams register services by adding a `catalog-info.yaml` to their repo root:
|
Teams register services by adding a `catalog-info.yaml` to their repo root:
|
||||||
```yaml
|
```yaml
|
||||||
@@ -996,11 +1012,14 @@ spec:
|
|||||||
owner: team-name
|
owner: team-name
|
||||||
```
|
```
|
||||||
|
|
||||||
Then add the location to `backstage-values.yaml` under `appConfig.catalog.locations`.
|
Then add the location to `backstage-values.yaml` under `upstream.backstage.appConfig.catalog.locations`.
|
||||||
|
|
||||||
**Per-cluster Configuration**:
|
**Per-cluster Configuration**:
|
||||||
To set the ingress hostname, create a per-cluster overlay values file (e.g., `infra/values/upc-dev/backstage-values.yaml`) with:
|
To set the ingress hostname, create a per-cluster overlay values file (e.g., `infra/values/upc-dev/backstage-values.yaml`) with:
|
||||||
```yaml
|
```yaml
|
||||||
|
global:
|
||||||
|
host: backstage.example.com
|
||||||
|
upstream:
|
||||||
backstage:
|
backstage:
|
||||||
appConfig:
|
appConfig:
|
||||||
app:
|
app:
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ spec:
|
|||||||
project: default
|
project: default
|
||||||
|
|
||||||
sources:
|
sources:
|
||||||
- repoURL: https://backstage.github.io/charts
|
- repoURL: https://redhat-developer.github.io/rhdh-chart
|
||||||
chart: backstage
|
chart: backstage
|
||||||
targetRevision: "2.6.3"
|
targetRevision: "5.8.0"
|
||||||
helm:
|
helm:
|
||||||
releaseName: backstage
|
releaseName: backstage
|
||||||
valueFiles:
|
valueFiles:
|
||||||
|
|||||||
@@ -1,49 +1,51 @@
|
|||||||
# Backstage - Internal Developer Portal
|
# Red Hat Developer Hub (RHDH) - Internal Developer Portal
|
||||||
# Helm chart: https://github.com/backstage/charts
|
# Helm chart: https://github.com/redhat-developer/rhdh-chart
|
||||||
|
# Includes 27+ plugins out of the box: ArgoCD, Kubernetes, Keycloak,
|
||||||
|
# GitHub, GitLab, Jira, SonarQube, Tekton, Jenkins, and more.
|
||||||
|
|
||||||
|
global:
|
||||||
|
auth:
|
||||||
|
backend:
|
||||||
|
enabled: true
|
||||||
|
dynamic:
|
||||||
|
includes:
|
||||||
|
- dynamic-plugins.default.yaml
|
||||||
|
plugins: []
|
||||||
|
|
||||||
|
# Disable OpenShift Route (not on OpenShift)
|
||||||
|
route:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
upstream:
|
||||||
backstage:
|
backstage:
|
||||||
image:
|
image:
|
||||||
registry: ghcr.io
|
registry: quay.io
|
||||||
repository: backstage/backstage
|
repository: rhdh-community/rhdh
|
||||||
tag: latest
|
tag: next
|
||||||
|
|
||||||
|
podSecurityContext:
|
||||||
|
runAsUser: 1001
|
||||||
|
runAsGroup: 1001
|
||||||
|
fsGroup: 1001
|
||||||
|
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: 100m
|
cpu: 250m
|
||||||
memory: 256Mi
|
memory: 1Gi
|
||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 1000m
|
||||||
memory: 512Mi
|
memory: 2560Mi
|
||||||
|
|
||||||
extraEnvVars:
|
|
||||||
- name: POSTGRES_HOST
|
|
||||||
value: "{{ .Release.Name }}-postgresql"
|
|
||||||
- name: POSTGRES_PORT
|
|
||||||
value: "5432"
|
|
||||||
- name: POSTGRES_USER
|
|
||||||
value: backstage
|
|
||||||
- name: POSTGRES_PASSWORD
|
|
||||||
valueFrom:
|
|
||||||
secretKeyRef:
|
|
||||||
name: "{{ .Release.Name }}-postgresql"
|
|
||||||
key: password
|
|
||||||
|
|
||||||
appConfig:
|
appConfig:
|
||||||
app:
|
app:
|
||||||
title: "Forte Developer Portal"
|
title: "Forte Developer Portal"
|
||||||
baseUrl: http://localhost:3000
|
baseUrl: http://localhost:7007
|
||||||
|
|
||||||
backend:
|
backend:
|
||||||
baseUrl: http://localhost:7007
|
baseUrl: http://localhost:7007
|
||||||
listen:
|
|
||||||
port: 7007
|
|
||||||
database:
|
database:
|
||||||
client: pg
|
client: better-sqlite3
|
||||||
connection:
|
connection: ":memory:"
|
||||||
host: ${POSTGRES_HOST}
|
|
||||||
port: ${POSTGRES_PORT}
|
|
||||||
user: ${POSTGRES_USER}
|
|
||||||
password: ${POSTGRES_PASSWORD}
|
|
||||||
|
|
||||||
catalog:
|
catalog:
|
||||||
rules:
|
rules:
|
||||||
@@ -57,11 +59,10 @@ backstage:
|
|||||||
- Group
|
- Group
|
||||||
- User
|
- User
|
||||||
- Domain
|
- Domain
|
||||||
locations:
|
locations: []
|
||||||
# Register components from Gitea repositories
|
# Register components from Gitea repositories by adding:
|
||||||
# Example: uncomment and adjust to scan your Gitea org
|
|
||||||
# - type: url
|
# - type: url
|
||||||
# target: https://git.forteapps.net/Forte/*/blob/main/catalog-info.yaml
|
# target: https://git.forteapps.net/Forte/my-repo/raw/branch/main/catalog-info.yaml
|
||||||
# rules:
|
# rules:
|
||||||
# - allow: [Component, System, API]
|
# - allow: [Component, System, API]
|
||||||
|
|
||||||
@@ -73,19 +74,24 @@ ingress:
|
|||||||
|
|
||||||
postgresql:
|
postgresql:
|
||||||
enabled: true
|
enabled: true
|
||||||
auth:
|
image:
|
||||||
username: backstage
|
registry: docker.io
|
||||||
password: ""
|
repository: library/postgres
|
||||||
existingSecret: ""
|
tag: "15"
|
||||||
architecture: standalone
|
|
||||||
primary:
|
primary:
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
size: 2Gi
|
||||||
|
podSecurityContext:
|
||||||
|
enabled: true
|
||||||
|
fsGroup: 26
|
||||||
|
runAsUser: 26
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: 50m
|
cpu: 50m
|
||||||
memory: 128Mi
|
memory: 128Mi
|
||||||
limits:
|
limits:
|
||||||
cpu: 250m
|
cpu: 250m
|
||||||
memory: 256Mi
|
memory: 512Mi
|
||||||
persistence:
|
volumePermissions:
|
||||||
enabled: true
|
enabled: true
|
||||||
size: 2Gi
|
|
||||||
|
|||||||
Reference in New Issue
Block a user