Compare commits

..

No commits in common. "main" and "backstage-1.9.0" have entirely different histories.

36 changed files with 184 additions and 1216 deletions

View File

@ -1,2 +0,0 @@
[codespell]
ignore-words-list = NotIn,notin

View File

@ -1,37 +0,0 @@
name: Automate staleness
on:
workflow_dispatch:
schedule:
- cron: "0 6 * * *"
permissions:
contents: read
jobs:
stale:
permissions:
issues: write # for actions/stale to close stale issues
pull-requests: write # for actions/stale to close stale PRs
runs-on: ubuntu-latest
steps:
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0
id: stale
with:
stale-issue-message: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
days-before-issue-stale: 60
days-before-issue-close: 7
exempt-issue-labels: after-vacations,will-fix
stale-issue-label: stale
stale-pr-message: >
This PR has been automatically marked as stale because it has not had
recent activity from the author. It will be closed if no further activity occurs.
If the PR was closed and you want it re-opened, let us know
and we'll re-open the PR so that you can continue the contribution!
days-before-pr-stale: 7
days-before-pr-close: 5
exempt-pr-labels: after-vacations,will-fix
stale-pr-label: stale
operations-per-run: 100

View File

@ -1,27 +0,0 @@
name: Lint Charts
on:
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v3
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # pin@v4
with:
python-version: 3.12
- uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # pin@v3
with:
go-version: ^1
- name: Setup helm-docs
run: go install github.com/norwoodj/helm-docs/cmd/helm-docs@latest
- name: Run pre-commit
uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # pin@v3.0.1

View File

@ -18,7 +18,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v3
with:
fetch-depth: 0
@ -27,25 +27,29 @@ jobs:
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Add dependencies
run: |
helm repo add bitnami https://charts.bitnami.com/bitnami
- name: Run chart-releaser
uses: helm/chart-releaser-action@cae68fefc6b5f367a0275617c9f83181ba54714f # pin@v1.7.0
uses: helm/chart-releaser-action@a917fd15b20e8b64b94d9158ad54cd6345335584 # pin@v1.6.0
with:
config: cr.yaml
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
- name: Login to GitHub Container Registry
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 #pin@v3.4.0
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d #pin@v3.0.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Install Cosign
uses: sigstore/cosign-installer@398d4b0eeef1380460a10c8013a76f728fb906ac #pin@v3.9.1
uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 #pin@v3.4.0
- name: Install Oras
uses: oras-project/setup-oras@8d34698a59f5ffe24821f0b48ab62a3de8b64b20 # v1.2.3
uses: oras-project/setup-oras@ee7dbe1144cb00080a89497f937dae78f85fce29 # v1.1.0
- name: Publish and Sign OCI Charts
run: |

View File

@ -1,18 +0,0 @@
name: Codespell
on:
pull_request:
jobs:
codespell:
name: Codespell
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Codespell
uses: codespell-project/actions-codespell@v2
with:
skip: .git
check_filenames: true
check_hidden: true

View File

@ -1,39 +1,64 @@
name: Test Charts
name: Lint Charts
on:
pull_request:
paths:
- "charts/**"
jobs:
check-readme:
runs-on: ubuntu-latest
env:
GO111MODULE: on
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v3
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # pin@v4
with:
python-version: 3.7
- uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # pin@v3
with:
go-version: ^1
- name: Setup helm-docs
run: go install github.com/norwoodj/helm-docs/cmd/helm-docs@latest
- name: Run pre-commit
uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # pin@v3.0.1
test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v3
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v3
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # pin@v4.3.0
uses: azure/setup-helm@5119fcb9089d432beecbf79bb2c7915207344b78 # pin@v3.5
with:
version: v3.10.0
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # pin@v4
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # pin@v4
with:
python-version: 3.12
python-version: 3.7
- name: Set up chart-testing
uses: helm/chart-testing-action@0d28d3144d3a25ea2cc349d6e59901c4ff469b3b # pin@v2.3.0
uses: helm/chart-testing-action@e6669bcd63d7cb57cb4380c33043eebe5d111992 # pin@v2.3.0
- name: "Add NGINX Ingress and Bitnami Repository"
run: |
helm repo add ingress-nginx "https://kubernetes.github.io/ingress-nginx"
helm repo add bitnami "https://charts.bitnami.com/bitnami"
helm repo update
- name: Run chart-testing (lint)
run: ct lint --config ct.yaml
- name: Create KIND Cluster
uses: helm/kind-action@a1b0e391336a6ee6713a0583f8c6240d70863de3 # pin@v1.12.0
uses: helm/kind-action@99576bfa6ddf9a8e612d83b513da5a75875caced # pin@v1.9.0
- name: Install Ingress Controller
run: "helm install ingress-nginx/ingress-nginx --generate-name --set controller.service.type='NodePort' --set controller.admissionWebhooks.enabled=false"

View File

@ -14,12 +14,7 @@ repos:
hooks:
- id: jsonschema-dereference
name: jsonschema-dereference
entry: python .pre-commit/jsonschema_dereference.py
entry: python .pre-commit/jsonschema-dereference.py
additional_dependencies: [jsonref]
language: python
types_or: [yaml, json]
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell

View File

@ -0,0 +1,34 @@
import json
from typing import List, Dict, Any
from pathlib import Path
import jsonref
JSONSCHEMA_TEMPLATE_NAME = "values.schema.tmpl.json"
JSONSCHEMA_NAME = "values.schema.json"
CHART_LOCK = "Chart.lock"
def load_template_schema(chart_dir: Path) -> Dict[str, Any]:
"""Load values.schema.tmpl.json and template it via Jinja2."""
with open(chart_dir / JSONSCHEMA_TEMPLATE_NAME, "r") as f:
return json.loads(f.read())
def save(chart_dir: Path, schema: Any):
"""Take schema containing $refs and dereference them."""
with open(chart_dir / JSONSCHEMA_NAME, "w") as f:
json.dump(schema, f, indent=4, sort_keys=True)
if __name__ == '__main__':
charts = [p.parent for p in Path(".").rglob(CHART_LOCK)]
errors: List[BaseException] = []
for chart in charts:
try:
schema_template = load_template_schema(chart)
schema = jsonref.replace_refs(schema_template)
save(chart, schema)
except BaseException as e:
print(f"Could not process schema for '{chart}': {e}")
errors.append(e)
if errors:
exit(1)

View File

@ -1,54 +0,0 @@
"""
This Python module:
- Searches for JSON Schema templates with the name values.schema.tmpl.json
- Dereferences any $refs contained in those files
- Outputs the new Schema to a values.schema.json file in the same directory
"""
import sys
import json
from typing import List, Dict, Any
from pathlib import Path
# External library dependency
# Install with 'pip install jsonref'
import jsonref
# File to write the dereferenced JSON Schema to
JSONSCHEMA_NAME = "values.schema.json"
# File that contains the JSON Schema that needs dereferencing
JSONSCHEMA_TEMPLATE_NAME = "values.schema.tmpl.json"
def load_template_schema(schema_dir: Path) -> Dict[str, Any]:
"""Load the schema template values.schema.tmpl.json"""
with open(schema_dir / JSONSCHEMA_TEMPLATE_NAME, "r", encoding="utf-8") as f:
return json.loads(f.read())
def save(schema_dir: Path, schema_data: Any):
"""Save the dereferenced schema to values.schema.json"""
with open(schema_dir / JSONSCHEMA_NAME, "w", encoding="utf-8") as f:
json.dump(schema_data, f, indent=4, sort_keys=True)
if __name__ == '__main__':
# Search for all values.schema.tmpl.json files
schema_templates = [p.parent for p in Path(".").rglob(JSONSCHEMA_TEMPLATE_NAME)]
# Create a list to hold any exceptions
errors: List[BaseException] = []
# Iterate over the List of found schema templates
for schema_template in schema_templates:
try:
# Load the schema into a variable as JSON
st = load_template_schema(schema_template)
# Dereference all of the $refs
s = jsonref.replace_refs(st)
# Save the dereferenced JSON
save(schema_template, s)
except BaseException as e:
# Print any errors to the screen
print(f"Could not process schema for '{schema_template}': {e}")
# Append any exceptions to the errors List
errors.append(e)
if errors:
# Exit with status 1 if any exceptions were thrown
sys.exit(1)

View File

@ -1,8 +0,0 @@
# Contributing to Backstage Charts
Before making a contribution to the [Backstage Helm Chart](https://github.com/backstage/charts) you will need to ensure the following steps have been done:
- [Sign your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits)
- Run `helm template` on the changes you're making to ensure they are correctly rendered into Kubernetes manifests.
- Lint tests has been run for the Chart using the [Chart Testing](https://github.com/helm/chart-testing) tool and the `ct lint` command.
- Ensure variables are documented in `values.yaml` and the [pre-commit](https://pre-commit.com/) hook has been run with `pre-commit run --all-files` to generate the `README.md` documentation. To preview the content, use `helm-docs --dry-run`.
- If you are making changes to the Chart - remember to bump the Chart version following [SemVer](https://semver.org/). You will need to change the [Chart Version](https://github.com/backstage/charts/blob/main/charts/backstage/Chart.yaml#L41) and the [Chart Badge](https://github.com/backstage/charts/blob/main/charts/backstage/README.md?plain=1#L5) on the README.

View File

@ -4,23 +4,19 @@
Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.
> [!CAUTION]
> This Helm chart deploys a pre-packaged container image which contains a vanilla Backstage instance for demo purposes. This image is probably not suitable for use in production. For further customization of the Backstage instance (plugin installation, UI changes, etc.) please create your own custom instance and container image. For details please consult the [Backstage documentation](https://backstage.io/docs)
> Disclaimer: This Helm chart deploys a pre-packaged container image which contains a vanilla Backstage instance for demo purposes. This image is probably not suitable for use in production. For further customization of the Backstage instance (plugin installation, UI changes, etc.) please create your own custom instance and container image. For details please consult the [Backstage documentation](https://backstage.io/docs)
## Scope
This chart focuses on providing users the same experience and functionality no matter what flavor of Kubernetes they use. This chart will support only patterns that are either customary for all Kubernetes flavors, are commonly used in the Bitnami charts ecosystem, and recognized as Backstage official patterns.
We welcome other, more specialized, charts to use this canonical chart as a direct dependency, expanding the feature set further, beyond this scope.
We welcome other, more specialized, charts to use this cannonical chart as a direct dependency, expanding the feature set further, beyond this scope.
A list of derived charts:
- OpenShift specialized chart: [Red Hat Developer Hub Helm chart](https://github.com/redhat-developer/rhdh-chart/tree/main/charts/backstage)
- OpenShift specialized chart: [Janus Backstage Helm chart](https://github.com/janus-idp/helm-backstage/tree/main/charts/backstage)
## Usage
> [!NOTE]
> Documentation for the Backstage chart can be found [here](charts/backstage)
Charts are available in the following formats:
* [Chart Repository](https://helm.sh/docs/topics/chart_repository/)
@ -31,6 +27,7 @@ Charts are available in the following formats:
The following command can be used to add the chart repository:
```console
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add backstage https://backstage.github.io/charts
```

View File

@ -1,9 +1,9 @@
dependencies:
- name: common
repository: oci://registry-1.docker.io/bitnamicharts
repository: https://charts.bitnami.com/bitnami
version: 2.10.0
- name: postgresql
repository: oci://registry-1.docker.io/bitnamicharts
repository: https://charts.bitnami.com/bitnami
version: 12.10.0
digest: sha256:77630aa988cef5e3a9f64a9fc3427345f451534e973dbece805850be587cb59e
generated: "2024-05-11T14:39:32.274594+01:00"
digest: sha256:e50e9681e108218aed1e8acaf4877290278a857a785dcd0cd28b92a73f2e8b05
generated: "2023-09-05T14:49:26.276046+02:00"

View File

@ -12,14 +12,14 @@ apiVersion: v2
description: A Helm chart for deploying a Backstage application
dependencies:
- name: common
repository: oci://registry-1.docker.io/bitnamicharts
repository: https://charts.bitnami.com/bitnami
tags:
- bitnami-common
version: 2.10.0
version: 2.x.x
- condition: postgresql.enabled
name: postgresql
repository: oci://registry-1.docker.io/bitnamicharts
version: 12.10.0
repository: https://charts.bitnami.com/bitnami
version: 12.x.x
home: https://backstage.io
icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/backstage/icon/color/backstage-icon-color.svg
keywords:
@ -38,4 +38,4 @@ sources:
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 2.6.0
version: 1.9.0

View File

@ -2,7 +2,7 @@
# Backstage Helm Chart
[![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/backstage)](https://artifacthub.io/packages/search?repo=backstage)
![Version: 2.6.0](https://img.shields.io/badge/Version-2.6.0-informational?style=flat-square)
![Version: 1.9.0](https://img.shields.io/badge/Version-1.9.0-informational?style=flat-square)
![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square)
A Helm chart for deploying a Backstage application
@ -31,6 +31,7 @@ Backstage unifies all your infrastructure tooling, services, and documentation t
## TL;DR
```console
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add backstage https://backstage.github.io/charts
helm install my-release backstage/backstage
@ -42,8 +43,8 @@ This chart bootstraps a [Backstage](https://backstage.io/docs/deployment/docker)
## Prerequisites
- Kubernetes 1.25+
- Helm 3.10+ minimum, 3.14+ recommended
- Kubernetes 1.19+
- Helm 3.2.0+
- PV provisioner support in the underlying infrastructure
- [Backstage container image](https://backstage.io/docs/deployment/docker)
@ -51,7 +52,7 @@ This chart bootstraps a [Backstage](https://backstage.io/docs/deployment/docker)
This chart focuses on providing users the same experience and functionality no matter what flavor of Kubernetes they use. This chart will support only patterns that are either customary for all Kubernetes flavors, are commonly used in the Bitnami charts ecosystem, and recognized as Backstage official patterns.
We welcome other, more specialized, charts to use this canonical chart as a direct dependency, expanding the feature set further, beyond this scope.
We welcome other, more specialized, charts to use this cannonical chart as a direct dependency, expanding the feature set further, beyond this scope.
A list of derived charts:
- OpenShift specialized chart: [Janus Backstage Helm chart](https://github.com/janus-idp/helm-backstage/tree/main/charts/backstage)
@ -105,8 +106,8 @@ Kubernetes: `>= 1.19.0-0`
| Repository | Name | Version |
|------------|------|---------|
| oci://registry-1.docker.io/bitnamicharts | common | 2.10.0 |
| oci://registry-1.docker.io/bitnamicharts | postgresql | 12.10.0 |
| https://charts.bitnami.com/bitnami | common | 2.x.x |
| https://charts.bitnami.com/bitnami | postgresql | 12.x.x |
## Values
@ -117,7 +118,6 @@ Kubernetes: `>= 1.19.0-0`
| backstage.annotations | Additional custom annotations for the `Deployment` resource | object | `{}` |
| backstage.appConfig | Generates ConfigMap and configures it in the Backstage pods | object | `{}` |
| backstage.args | Backstage container command arguments | list | `[]` |
| backstage.autoscaling | Autoscaling configuration. <br /> Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ | object | `{"enabled":false,"maxReplicas":100,"minReplicas":1,"targetCPUUtilizationPercentage":80}` |
| backstage.command | Backstage container command | list | `["node","packages/backend"]` |
| backstage.containerPorts | Container ports on the Deployment | object | `{"backend":7007}` |
| backstage.containerSecurityContext | Security settings for a Container. <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container | object | `{}` |
@ -126,11 +126,8 @@ Kubernetes: `>= 1.19.0-0`
| backstage.extraEnvVars | Backstage container environment variables | list | `[]` |
| backstage.extraEnvVarsCM | Backstage container environment variables from existing ConfigMaps | list | `[]` |
| backstage.extraEnvVarsSecrets | Backstage container environment variables from existing Secrets | list | `[]` |
| backstage.extraPorts | Backstage container additional ports | list | `[]` |
| backstage.extraVolumeMounts | Backstage container additional volume mounts | list | `[]` |
| backstage.extraVolumes | Backstage container additional volumes | list | `[]` |
| backstage.hostAliases | Host Aliases for the pod <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ | list | `[]` |
| backstage.image.digest | Backstage image digest (digest takes precedence over image tag) | string | `""` |
| backstage.image.pullPolicy | Specify a imagePullPolicy. Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent' <br /> Ref: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy | string | `"Always"` |
| backstage.image.pullSecrets | Optionally specify an array of imagePullSecrets. Secrets must be manually created in the namespace. <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ <br /> E.g: `pullSecrets: [myRegistryKeySecretName]` | list | `[]` |
| backstage.image.registry | Backstage image registry | string | `"ghcr.io"` |
@ -138,19 +135,17 @@ Kubernetes: `>= 1.19.0-0`
| backstage.image.tag | Backstage image tag (immutable tags are recommended) | string | `"latest"` |
| backstage.initContainers | Backstage container init containers | list | `[]` |
| backstage.installDir | Directory containing the backstage installation | string | `"/app"` |
| backstage.livenessProbe | Liveness Probe Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes <!-- E.g. livenessProbe: failureThreshold: 3 httpGet: path: /.backstage/health/v1/liveness port: 7007 scheme: HTTP initialDelaySeconds: 60 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 2 | object | `{"httpGet":{"path":"/.backstage/health/v1/liveness","port":7007,"scheme":"HTTP"}}` |
| backstage.livenessProbe | Liveness Probe Backstage doesn't provide any health endpoints by default. A simple one can be added like this: https://backstage.io/docs/plugins/observability/#health-checks <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes <!-- E.g. livenessProbe: failureThreshold: 3 httpGet: path: /healthcheck port: 7007 scheme: HTTP initialDelaySeconds: 60 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 2 | object | `{}` |
| backstage.nodeSelector | Node labels for pod assignment <br /> Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector | object | `{}` |
| backstage.pdb | Pod Disruption Budget configuration ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ | object | `{"create":false,"maxUnavailable":"","minAvailable":""}` |
| backstage.podAnnotations | Annotations to add to the backend deployment pods | object | `{}` |
| backstage.podLabels | Labels to add to the backend deployment pods | object | `{}` |
| backstage.podSecurityContext | Security settings for a Pod. The security settings that you specify for a Pod apply to all Containers in the Pod. <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod | object | `{}` |
| backstage.readinessProbe | Readiness Probe Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes <!-- E.g. readinessProbe: failureThreshold: 3 httpGet: path: /.backstage/health/v1/readiness port: 7007 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 2 timeoutSeconds: 2 | object | `{"httpGet":{"path":"/.backstage/health/v1/readiness","port":7007,"scheme":"HTTP"}}` |
| backstage.readinessProbe | Readiness Probe Backstage doesn't provide any health endpoints by default. A simple one can be added like this: https://backstage.io/docs/plugins/observability/#health-checks <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes <!-- E.g. readinessProbe: failureThreshold: 3 httpGet: path: /healthcheck port: 7007 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 2 timeoutSeconds: 2 | object | `{}` |
| backstage.replicas | Number of deployment replicas | int | `1` |
| backstage.resources | Resource requests/limits <br /> Ref: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#resource-requests-and-limits-of-pod-and-container <!-- E.g. resources: limits: memory: 1Gi cpu: 1000m requests: memory: 250Mi cpu: 100m --> | object | `{}` |
| backstage.revisionHistoryLimit | Define the [count of deployment revisions](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#clean-up-policy) to be kept. May be set to 0 in case of GitOps deployment approach. | int | `10` |
| backstage.startupProbe | Startup Probe Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes <!-- E.g. startupProbe: failureThreshold: 3 httpGet: path: /.backstage/health/v1/liveness port: 7007 scheme: HTTP initialDelaySeconds: 60 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 2 | object | `{"httpGet":{"path":"/.backstage/health/v1/liveness","port":7007,"scheme":"HTTP"}}` |
| backstage.startupProbe | Startup Probe Backstage doesn't provide any health endpoints by default. A simple one can be added like this: https://backstage.io/docs/plugins/observability/#health-checks <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes <!-- E.g. startupProbe: failureThreshold: 3 httpGet: path: /healthcheck port: 7007 scheme: HTTP initialDelaySeconds: 60 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 2 | object | `{}` |
| backstage.tolerations | Node tolerations for server scheduling to nodes with taints <br /> Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ | list | `[]` |
| backstage.topologySpreadConstraints | Topology Spread Constraints for pod assignment <br /> Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#pod-topology-spread-constraints | list | `[]` |
| clusterDomain | Default Kubernetes cluster domain | string | `"cluster.local"` |
| commonAnnotations | Annotations to add to all deployed objects | object | `{}` |
| commonLabels | Labels to add to all deployed objects | object | `{}` |
@ -163,26 +158,22 @@ Kubernetes: `>= 1.19.0-0`
| global | Global parameters Global Docker image parameters Please, note that this will override the image parameters, including dependencies, configured to use the global value Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass | object | See below |
| global.imagePullSecrets | Global Docker registry secret names as an array </br> E.g. `imagePullSecrets: [myRegistryKeySecretName]` | list | `[]` |
| global.imageRegistry | Global Docker image registry | string | `""` |
| ingress | Ingress parameters | object | `{"annotations":{},"className":"","enabled":false,"extraHosts":[],"extraTls":[],"host":"","path":"/","tls":{"enabled":false,"secretName":""}}` |
| ingress | Ingress parameters | object | `{"annotations":{},"className":"","enabled":false,"host":"","tls":{"enabled":false,"secretName":""}}` |
| ingress.annotations | Additional annotations for the Ingress resource | object | `{}` |
| ingress.className | Name of the IngressClass cluster resource which defines which controller will implement the resource (e.g nginx) | string | `""` |
| ingress.enabled | Enable the creation of the ingress resource | bool | `false` |
| ingress.extraHosts | List of additional hostnames to be covered with this ingress record (e.g. a CNAME) <!-- E.g. extraHosts: - name: backstage.env.example.com path: / (Optional) pathType: Prefix (Optional) port: 7007 (Optional) --> | list | `[]` |
| ingress.extraTls | The TLS configuration for additional hostnames to be covered with this ingress record. <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls <!-- E.g. extraTls: - hosts: - backstage.env.example.com secretName: backstage-env --> | list | `[]` |
| ingress.host | Hostname to be used to expose the route to access the backstage application (e.g: backstage.IP.nip.io) | string | `""` |
| ingress.path | Path to be used to expose the full route to access the backstage application (e.g: IP.nip.io/backstage) | string | `"/"` |
| ingress.tls | Ingress TLS parameters | object | `{"enabled":false,"secretName":""}` |
| ingress.tls.enabled | Enable TLS configuration for the host defined at `ingress.host` parameter | bool | `false` |
| ingress.tls.secretName | The name to which the TLS Secret will be called | string | `""` |
| kubeVersion | Override Kubernetes version | string | `""` |
| metrics | Metrics configuration | object | `{"serviceMonitor":{"annotations":{},"enabled":false,"interval":null,"labels":{},"path":"/metrics","port":"http-backend"}}` |
| metrics.serviceMonitor | ServiceMonitor configuration <br /> Allows configuring your backstage instance as a scrape target for [Prometheus](https://github.com/prometheus/prometheus) using a ServiceMonitor custom resource that [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator) can understand. | object | `{"annotations":{},"enabled":false,"interval":null,"labels":{},"path":"/metrics","port":"http-backend"}` |
| metrics | Metrics configuration | object | `{"serviceMonitor":{"annotations":{},"enabled":false,"interval":null,"labels":{},"path":"/metrics"}}` |
| metrics.serviceMonitor | ServiceMonitor configuration <br /> Allows configuring your backstage instance as a scrape target for [Prometheus](https://github.com/prometheus/prometheus) using a ServiceMonitor custom resource that [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator) can understand. | object | `{"annotations":{},"enabled":false,"interval":null,"labels":{},"path":"/metrics"}` |
| metrics.serviceMonitor.annotations | ServiceMonitor annotations | object | `{}` |
| metrics.serviceMonitor.enabled | If enabled, a ServiceMonitor resource for Prometheus Operator is created <br /> Prometheus Operator must be installed in your cluster prior to enabling. | bool | `false` |
| metrics.serviceMonitor.interval | ServiceMonitor scrape interval | string | `nil` |
| metrics.serviceMonitor.labels | Additional ServiceMonitor labels | object | `{}` |
| metrics.serviceMonitor.path | ServiceMonitor endpoint path <br /> Note that the /metrics endpoint is NOT present in a freshly scaffolded Backstage app. To setup, follow the [Prometheus metrics tutorial](https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/prometheus-metrics.md). | string | `"/metrics"` |
| metrics.serviceMonitor.port | ServiceMonitor endpoint port <br /> The port where the metrics are exposed. If using OpenTelemetry as [documented here](https://backstage.io/docs/tutorials/setup-opentelemetry/), then the port needs to be explicitly specified. OpenTelemetry's default port is 9464. | string | `"http-backend"` |
| nameOverride | String to partially override common.names.fullname | string | `""` |
| networkPolicy.egressRules.customRules | Additional custom egress rules | list | `[]` |
| networkPolicy.egressRules.denyConnectionsToExternal | Deny external connections. Should not be enabled when working with an external database. | bool | `false` |
@ -206,8 +197,6 @@ Kubernetes: `>= 1.19.0-0`
| service.clusterIP | Backstage service Cluster IP <br /> E.g `clusterIP: None` | string | `""` |
| service.externalTrafficPolicy | Backstage service external traffic policy Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip | string | `"Cluster"` |
| service.extraPorts | Extra ports to expose in the Backstage service (normally used with the `sidecar` value) | list | `[]` |
| service.ipFamilies | IP Families <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack | list | `[]` |
| service.ipFamilyPolicy | IP Family Policy <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack | string | `""` |
| service.loadBalancerIP | Backstage service Load Balancer IP <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer | string | `""` |
| service.loadBalancerSourceRanges | Load Balancer sources <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer <br /> E.g `loadBalancerSourceRanges: [10.10.10.0/24]` | list | `[]` |
| service.nodePorts | Node port for the Backstage client connections Choose port between `30000-32767` | object | `{"backend":""}` |

View File

@ -25,6 +25,7 @@ Backstage unifies all your infrastructure tooling, services, and documentation t
## TL;DR
```console
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add backstage https://backstage.github.io/charts
helm install my-release backstage/backstage
@ -36,8 +37,8 @@ This chart bootstraps a [Backstage](https://backstage.io/docs/deployment/docker)
## Prerequisites
- Kubernetes 1.25+
- Helm 3.10+ minimum, 3.14+ recommended
- Kubernetes 1.19+
- Helm 3.2.0+
- PV provisioner support in the underlying infrastructure
- [Backstage container image](https://backstage.io/docs/deployment/docker)
@ -45,7 +46,7 @@ This chart bootstraps a [Backstage](https://backstage.io/docs/deployment/docker)
This chart focuses on providing users the same experience and functionality no matter what flavor of Kubernetes they use. This chart will support only patterns that are either customary for all Kubernetes flavors, are commonly used in the Bitnami charts ecosystem, and recognized as Backstage official patterns.
We welcome other, more specialized, charts to use this canonical chart as a direct dependency, expanding the feature set further, beyond this scope.
We welcome other, more specialized, charts to use this cannonical chart as a direct dependency, expanding the feature set further, beyond this scope.
A list of derived charts:
- OpenShift specialized chart: [Janus Backstage Helm chart](https://github.com/janus-idp/helm-backstage/tree/main/charts/backstage)

View File

@ -1,7 +1,5 @@
backstage:
appConfig:
techdocs:
builder: "local"
app:
# Let's test that everything is fine with comments
title: The very best Backstage Helm Chart! :D
@ -10,7 +8,3 @@ backstage:
baseUrl: https://somedomain.tl
listen:
port: 12345
auth:
keys:
# Is just a random b64 string for test purposes
- secret: N4+P+zJrErWRUGm0ZbVVhX1ZC81aSP81

View File

@ -1,7 +0,0 @@
backstage:
autoscaling:
enabled: true
minReplicas: 1
maxReplicas: 3
targetCPUUtilizationPercentage: 75
targetMemoryUtilizationPercentage: 90

View File

@ -1,5 +0,0 @@
backstage:
image:
registry: ghcr.io
repository: backstage/backstage
digest: "sha256:f9ffa809e2c3f351699129d57edd6e64ca9ea5a4d4dd6339fed1ec80a30bc042"

View File

@ -1,12 +0,0 @@
ingress:
enabled: true
host: backstage.example.com
tls:
enabled: true
secretName: "backstage-tls"
extraHosts:
- name: backstage.dev.example.com
extraTls:
- hosts:
- backstage.dev.example.com
secretName: "backstage-dev-tls"

View File

@ -1,6 +0,0 @@
ingress:
enabled: true
host: backstage.example.com
tls:
enabled: true
secretName: "backstage-tls"

View File

@ -1,8 +0,0 @@
postgresql:
enabled: true
# we enable postgres and allow the subchart to automatically generate the credentials
# that backstage will use
auth:
existingSecret: ""
password: ""

View File

@ -1,8 +0,0 @@
postgresql:
enabled: true
auth:
existingSecret: ""
# we provide a password for the subchart to use.
# this is just a password for purposes of CI tests
password: "mytestpassword"

View File

@ -1,21 +1,8 @@
backstage:
appConfig:
techdocs:
builder: "local"
app:
# Let's test that everything is fine with comments
title: The very best Backstage Helm Chart! :D
baseUrl: https://somedomain.tl
backend:
baseUrl: https://somedomain.tl
auth:
keys:
# Is just a random b64 string for test purposes
- secret: N4+P+zJrErWRUGm0ZbVVhX1ZC81aSP81
readinessProbe:
failureThreshold: 3
httpGet:
path: /.backstage/health/v1/readiness
path: /healthcheck
port: 7007
scheme: HTTP
initialDelaySeconds: 30
@ -25,7 +12,7 @@ backstage:
livenessProbe:
failureThreshold: 3
httpGet:
path: /.backstage/health/v1/liveness
path: /healthcheck
port: 7007
scheme: HTTP
initialDelaySeconds: 60
@ -35,7 +22,7 @@ backstage:
startupProbe:
failureThreshold: 3
httpGet:
path: /.backstage/health/v1/liveness
path: /healthcheck
port: 7007
scheme: HTTP
initialDelaySeconds: 60

View File

@ -1,4 +0,0 @@
service:
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv4

View File

@ -1,9 +0,0 @@
metrics:
serviceMonitor:
enabled: true
annotations:
test: test
labels:
test: test
path: /metrics
port: http-backend

View File

@ -1,10 +0,0 @@
backstage:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app.kubernetes.io/component: backstage
matchLabelKeys:
- pod-template-hash

View File

@ -3,7 +3,6 @@ apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "common.names.fullname" . }}-app-config
namespace: {{ .Release.Namespace | quote }}
data:
app-config.yaml: |
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.appConfig "context" $) | nindent 4 }}

View File

@ -20,9 +20,7 @@ metadata:
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.annotations "context" $) | nindent 4 }}
{{- end }}
spec:
{{- if not .Values.backstage.autoscaling.enabled }}
replicas: {{ .Values.backstage.replicas }}
{{- end }}
revisionHistoryLimit: {{ .Values.backstage.revisionHistoryLimit }}
selector:
matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }}
@ -49,10 +47,6 @@ spec:
affinity:
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.affinity "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.backstage.topologySpreadConstraints }}
topologySpreadConstraints:
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.topologySpreadConstraints "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.backstage.nodeSelector }}
nodeSelector:
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.nodeSelector "context" $) | nindent 8 }}
@ -61,10 +55,6 @@ spec:
tolerations:
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.tolerations "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.backstage.hostAliases }}
hostAliases:
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.hostAliases "context" $) | nindent 8 }}
{{- end }}
volumes:
{{- if (or .Values.backstage.extraAppConfig (and .Values.backstage.extraVolumeMounts .Values.backstage.extraVolumes)) }}
{{- range .Values.backstage.extraAppConfig }}
@ -164,9 +154,6 @@ spec:
- name: backend
containerPort: {{ .Values.backstage.containerPorts.backend }}
protocol: TCP
{{- if .Values.backstage.extraPorts }}
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.extraPorts "context" $) | nindent 12 }}
{{- end }}
{{- if (or .Values.backstage.extraAppConfig .Values.backstage.appConfig (and .Values.backstage.extraVolumeMounts .Values.backstage.extraVolumes)) }}
volumeMounts:
{{- range .Values.backstage.extraAppConfig }}

View File

@ -1,43 +0,0 @@
{{- if .Values.backstage.autoscaling.enabled }}
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "common.names.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{ include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: backstage
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
annotations:
{{- if .Values.commonAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
{{- if .Values.backstage.annotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.annotations "context" $) | nindent 4 }}
{{- end }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ include "common.names.fullname" . }}
minReplicas: {{ .Values.backstage.autoscaling.minReplicas }}
maxReplicas: {{ .Values.backstage.autoscaling.maxReplicas }}
metrics:
{{- if .Values.backstage.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.backstage.autoscaling.targetCPUUtilizationPercentage }}
{{- end }}
{{- if .Values.backstage.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.backstage.autoscaling.targetMemoryUtilizationPercentage }}
{{- end }}
{{- end }}

View File

@ -20,38 +20,21 @@ spec:
{{- if .Values.ingress.className }}
ingressClassName: {{ .Values.ingress.className | quote }}
{{- end }}
{{- if or .Values.ingress.tls.enabled .Values.ingress.extraTls }}
{{- if .Values.ingress.tls.enabled }}
tls:
{{- if .Values.ingress.tls.enabled }}
- hosts:
- {{ include "common.tplvalues.render" ( dict "value" .Values.ingress.host "context" $ ) }}
secretName: {{ include "common.tplvalues.render" ( dict "value" .Values.ingress.tls.secretName "context" $ ) }}
{{- end }}
{{- if .Values.ingress.extraTls }}
{{- include "common.tplvalues.render" ( dict "value" .Values.ingress.extraTls "context" $ ) | nindent 4 }}
{{- end }}
- {{ .Values.ingress.host }}
secretName: {{ .Values.ingress.tls.secretName }}
{{- end }}
rules:
- host: {{ include "common.tplvalues.render" ( dict "value" .Values.ingress.host "context" $ ) }}
http:
paths:
- path: {{ .Values.ingress.path }}
- path: /
pathType: Prefix
backend:
service:
name: {{ include "common.names.fullname" . }}
port:
number: {{ .Values.service.ports.backend }}
{{- range .Values.ingress.extraHosts }}
- host: {{ .name | quote }}
http:
paths:
- path: {{ default $.Values.ingress.path .path }}
pathType: {{ default "Prefix" .pathType }}
backend:
service:
name: {{ include "common.names.fullname" $ }}
port:
number: {{ default $.Values.service.ports.backend .port }}
{{- end }}
{{- end }}

View File

@ -1,29 +0,0 @@
{{- if .Values.backstage.pdb.create }}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ include "common.names.fullname" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{ include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: backstage
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
annotations:
{{- if .Values.commonAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
{{- if .Values.backstage.annotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.backstage.annotations "context" $) | nindent 4 }}
{{- end }}
spec:
{{- if .Values.backstage.pdb.minAvailable }}
minAvailable: {{ .Values.backstage.pdb.minAvailable }}
{{- end }}
{{- if or .Values.backstage.pdb.maxUnavailable ( not .Values.backstage.pdb.minAvailable ) }}
maxUnavailable: {{ .Values.backstage.pdb.maxUnavailable | default 1 }}
{{- end }}
selector:
matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }}
app.kubernetes.io/component: backstage
{{- end }}

View File

@ -34,13 +34,6 @@ spec:
{{- if .Values.service.sessionAffinity }}
sessionAffinity: {{ .Values.service.sessionAffinity }}
{{- end }}
{{- if .Values.service.ipFamilyPolicy }}
ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }}
{{- end }}
{{- with .Values.service.ipFamilies }}
ipFamilies:
{{- toYaml . | nindent 4 }}
{{- end }}
ports:
- name: {{ .Values.service.ports.name }}
port: {{ .Values.service.ports.backend }}

View File

@ -29,7 +29,7 @@ spec:
matchLabels: {{ include "common.labels.standard" . | nindent 6 }}
app.kubernetes.io/component: backstage
endpoints:
- port: {{ .Values.metrics.serviceMonitor.port | quote }}
- port: http-backend
path: {{ .Values.metrics.serviceMonitor.path }}
{{- with .Values.metrics.serviceMonitor.interval }}
interval: {{ . }}

File diff suppressed because it is too large Load Diff

View File

@ -143,37 +143,6 @@
"backstage.10.0.0.1.nip.io"
]
},
"extraHosts": {
"title": "List of additional hostnames to be covered with this ingress record",
"type": "array",
"default": [],
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"path": {
"type": "string"
},
"pathType": {
"type": "string"
},
"port": {
"type": "integer"
}
}
}
},
"path": {
"title": "Path to be used to expose the full route to access the backstage application.",
"type": "string",
"default": "/",
"examples": [
"/backstage"
]
},
"tls": {
"title": "Ingress TLS parameters",
"type": "object",
@ -191,14 +160,6 @@
"default": ""
}
}
},
"extraTls": {
"title": "The TLS configuration for additional hostnames to be covered with this ingress record.",
"type": "array",
"items": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master/_definitions.json#/definitions/io.k8s.api.networking.v1.IngressTLS"
},
"default": []
}
}
},
@ -224,12 +185,6 @@
"type": "object",
"additionalProperties": false,
"properties": {
"digest": {
"default": "",
"description": "digest takes precedence over image tag",
"title": "Backstage image digest",
"type": "string"
},
"registry": {
"title": "Backstage image registry",
"type": "string",
@ -275,67 +230,6 @@
}
}
},
"autoscaling": {
"title": "Autoscaling parameters",
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Enable autoscaling",
"title": "Backstage Autoscaling",
"type": "boolean",
"default": false
},
"minReplicas": {
"title": "Minimum number of Backstage pod replicas that the autoscaler is allowed to scale down to",
"type": "integer",
"default": 1
},
"maxReplicas": {
"title": "Maximum number of Backstage pod replicas that the autoscaler is allowed to scale up to",
"type": "integer",
"default": 100
},
"targetCPUUtilizationPercentage": {
"title": "Percentage of CPU that each Backstage pod should be using on average before the autoscaler decides to scale",
"type": "integer",
"default": 80
},
"targetMemoryUtilizationPercentage": {
"title": "Percentage of memory that each Backstage pod should be using on average before the autoscaler decides to scale",
"type": "integer"
}
}
},
"pdb": {
"title": "PDB parameters",
"type": "object",
"additionalProperties": false,
"properties": {
"create": {
"description": "Create a PDB",
"title": "Backstage PDB",
"type": "boolean",
"default": false
},
"minAvailable": {
"title": "Backstage PDB minAvailable",
"type": [
"string",
"integer"
],
"default": ""
},
"maxUnavailable": {
"title": "Backstage PDB maxUnavailable",
"type": [
"string",
"integer"
],
"default": ""
}
}
},
"containerPorts": {
"title": "Container ports on the Deployment",
"type": "object",
@ -379,15 +273,6 @@
"title": "Affinity for pod assignment",
"type": "object"
},
"topologySpreadConstraints": {
"default": [],
"description": "Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#pod-topology-spread-constraints",
"items": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master/_definitions.json#/definitions/io.k8s.api.core.v1.TopologySpreadConstraint"
},
"title": "Topology Spread Constraint for pod assignment",
"type": "array"
},
"args": {
"title": "Backstage container command arguments",
"type": "array",
@ -465,14 +350,6 @@
]
]
},
"extraPorts": {
"title": "Extra ports to expose in the Backstage container",
"type": "array",
"items": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master/_definitions.json#/definitions/io.k8s.api.core.v1.ContainerPort"
},
"default": []
},
"extraVolumeMounts": {
"title": "Backstage container additional volume mounts",
"type": "array",
@ -524,18 +401,12 @@
"title": "Readiness probe",
"description": "Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master/_definitions.json#/definitions/io.k8s.api.core.v1.Probe",
"default": {
"httpGet": {
"path": "/.backstage/health/v1/readiness",
"port": 7007,
"scheme": "HTTP"
}
},
"default": {},
"examples": [
{
"failureThreshold": 3,
"httpGet": {
"path": "/.backstage/health/v1/readiness",
"path": "/healthcheck",
"port": 7007,
"scheme": "HTTP"
},
@ -550,18 +421,12 @@
"title": "Liveness probe",
"description": "Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master/_definitions.json#/definitions/io.k8s.api.core.v1.Probe",
"default": {
"httpGet": {
"path": "/.backstage/health/v1/liveness",
"port": 7007,
"scheme": "HTTP"
}
},
"default": {},
"examples": [
{
"failureThreshold": 3,
"httpGet": {
"path": "/.backstage/health/v1/liveness",
"path": "/healthcheck",
"port": 7007,
"scheme": "HTTP"
},
@ -576,18 +441,12 @@
"title": "Startup probe",
"description": "Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/",
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master/_definitions.json#/definitions/io.k8s.api.core.v1.Probe",
"default": {
"httpGet": {
"path": "/.backstage/health/v1/liveness",
"port": 7007,
"scheme": "HTTP"
}
},
"default": {},
"examples": [
{
"failureThreshold": 3,
"httpGet": {
"path": "/.backstage/health/v1/liveness",
"path": "/healthcheck",
"port": 7007,
"scheme": "HTTP"
},
@ -643,15 +502,6 @@
},
"default": []
},
"hostAliases": {
"title": "Adding entries to a Pod's /etc/hosts file provides Pod-level override of hostname resolution when DNS and other options are not applicable",
"description": "Ref: https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/#adding-additional-entries-with-hostaliases",
"type": "array",
"items": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/master/_definitions.json#/definitions/io.k8s.api.core.v1.HostAlias"
},
"default": []
},
"podAnnotations": {
"title": "Annotations to add to the backend deployment pods",
"type": "object",
@ -791,28 +641,6 @@
"type": "object"
},
"default": []
},
"ipFamilyPolicy": {
"title": "Backstage service IP family policy",
"description": "Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services",
"type": "string",
"default": "",
"enum": [
"",
"SingleStack",
"PreferDualStack",
"RequireDualStack"
]
},
"ipFamilies": {
"title": "Backstage service IP families",
"description": "Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services",
"type": "array",
"items": {
"type": "string",
"enum": ["IPv4", "IPv6"]
},
"default": []
}
}
},
@ -964,23 +792,10 @@
"description": "ote that the /metrics endpoint is NOT present in a freshly scaffolded Backstage app. To setup, follow the Prometheus metrics tutorial. https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/prometheus-metrics.md",
"type": "string",
"default": "/metrics"
},
"port": {
"default": "http-backend",
"description": "The port where the metrics are exposed. If using OpenTelemetry as [documented here](https://backstage.io/docs/tutorials/setup-opentelemetry/), then the port needs to be explicitly specified. OpenTelemetry's default port is 9464.",
"title": "ServiceMonitor endpoint port",
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
}
}
}
}
}
}
}
}

View File

@ -67,18 +67,6 @@ ingress:
# -- Hostname to be used to expose the route to access the backstage application (e.g: backstage.IP.nip.io)
host: ""
# -- List of additional hostnames to be covered with this ingress record (e.g. a CNAME)
# <!-- E.g.
# extraHosts:
# - name: backstage.env.example.com
# path: / (Optional)
# pathType: Prefix (Optional)
# port: 7007 (Optional) -->
extraHosts: []
# -- Path to be used to expose the full route to access the backstage application (e.g: IP.nip.io/backstage)
path: "/"
# -- Ingress TLS parameters
tls:
@ -88,15 +76,6 @@ ingress:
# -- The name to which the TLS Secret will be called
secretName: ""
# -- The TLS configuration for additional hostnames to be covered with this ingress record.
# <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
# <!-- E.g.
# extraTls:
# - hosts:
# - backstage.env.example.com
# secretName: backstage-env -->
extraTls: []
# -- Backstage parameters
# @default -- See below
backstage:
@ -119,9 +98,6 @@ backstage:
# -- Backstage image tag (immutable tags are recommended)
tag: latest
# -- Backstage image digest (digest takes precedence over image tag)
digest: ""
# -- Specify a imagePullPolicy.
# Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
# <br /> Ref: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
@ -133,22 +109,6 @@ backstage:
# <br /> E.g: `pullSecrets: [myRegistryKeySecretName]`
pullSecrets: []
# -- Pod Disruption Budget configuration
# ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
pdb:
create: false
minAvailable: ""
maxUnavailable: ""
# -- Autoscaling configuration.
# <br /> Ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
# -- Container ports on the Deployment
containerPorts:
backend: 7007
@ -174,9 +134,6 @@ backstage:
# -- Backstage container environment variables from existing Secrets
extraEnvVarsSecrets: []
# -- Backstage container additional ports
extraPorts: []
# -- Backstage container additional volume mounts
extraVolumeMounts: []
@ -202,61 +159,52 @@ backstage:
resources: {}
# -- Readiness Probe
# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
# Backstage doesn't provide any health endpoints by default. A simple one can be added like this: https://backstage.io/docs/plugins/observability/#health-checks
# <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
# <!-- E.g.
# readinessProbe:
# failureThreshold: 3
# httpGet:
# path: /.backstage/health/v1/readiness
# path: /healthcheck
# port: 7007
# scheme: HTTP
# initialDelaySeconds: 30
# periodSeconds: 10
# successThreshold: 2
# timeoutSeconds: 2
readinessProbe:
httpGet:
path: /.backstage/health/v1/readiness
port: 7007
scheme: HTTP
readinessProbe: {}
# -- Liveness Probe
# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
# Backstage doesn't provide any health endpoints by default. A simple one can be added like this: https://backstage.io/docs/plugins/observability/#health-checks
# <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
# <!-- E.g.
# livenessProbe:
# failureThreshold: 3
# httpGet:
# path: /.backstage/health/v1/liveness
# path: /healthcheck
# port: 7007
# scheme: HTTP
# initialDelaySeconds: 60
# periodSeconds: 10
# successThreshold: 1
# timeoutSeconds: 2
livenessProbe:
httpGet:
path: /.backstage/health/v1/liveness
port: 7007
scheme: HTTP
livenessProbe: {}
# -- Startup Probe
# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
# -- Startup Probe
# Backstage doesn't provide any health endpoints by default. A simple one can be added like this: https://backstage.io/docs/plugins/observability/#health-checks
# <br /> Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes
# <!-- E.g.
# startupProbe:
# failureThreshold: 3
# httpGet:
# path: /.backstage/health/v1/liveness
# path: /healthcheck
# port: 7007
# scheme: HTTP
# initialDelaySeconds: 60
# periodSeconds: 10
# successThreshold: 1
# timeoutSeconds: 2
startupProbe:
httpGet:
path: /.backstage/health/v1/liveness
port: 7007
scheme: HTTP
startupProbe: {}
# -- Security settings for a Pod.
# The security settings that you specify for a Pod apply to all Containers in the Pod.
@ -281,10 +229,6 @@ backstage:
# <br /> Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
affinity: {}
# -- Topology Spread Constraints for pod assignment
# <br /> Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#pod-topology-spread-constraints
topologySpreadConstraints: []
# -- Node labels for pod assignment
# <br /> Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector
nodeSelector: {}
@ -297,10 +241,6 @@ backstage:
# value: "value"
# effect: "NoSchedule|PreferNoSchedule|NoExecute"
# -- Host Aliases for the pod
# <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
hostAliases: []
# -- Annotations to add to the backend deployment pods
podAnnotations: {}
@ -368,16 +308,6 @@ service:
# -- Extra ports to expose in the Backstage service (normally used with the `sidecar` value)
extraPorts: []
# -- IP Family Policy
#
# <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack
ipFamilyPolicy: ""
# -- IP Families
#
# <br /> Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack
ipFamilies: []
## @section NetworkPolicy parameters
##
networkPolicy:
@ -493,7 +423,3 @@ metrics:
# -- ServiceMonitor endpoint path
# <br /> Note that the /metrics endpoint is NOT present in a freshly scaffolded Backstage app. To setup, follow the [Prometheus metrics tutorial](https://github.com/backstage/backstage/blob/master/contrib/docs/tutorials/prometheus-metrics.md).
path: /metrics
# -- ServiceMonitor endpoint port
# <br /> The port where the metrics are exposed. If using OpenTelemetry as [documented here](https://backstage.io/docs/tutorials/setup-opentelemetry/), then the port needs to be explicitly specified. OpenTelemetry's default port is 9464.
port: http-backend