This repository was archived by the owner on Feb 2, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathREADME.md.gotmpl
224 lines (153 loc) · 8.06 KB
/
README.md.gotmpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
# Janus-IDP Backstage Helm Chart for OpenShift
{{ template "chart.deprecationWarning" . }}
[](https://artifacthub.io/packages/search?repo=janus-idp)
{{ template "chart.versionBadge" . }}
{{ template "chart.typeBadge" . }}
{{ template "chart.description" . }}
{{ template "chart.homepageLine" . }}
{{ template "chart.maintainersSection" . }}
{{ template "chart.sourcesSection" . }}
---
[Janus-IDP](https://janus-idp.io/) Backstage chart is an opinionated flavor of the upstream chart located at [backstage/charts](https://github.com/backstage/charts). It extends the upstream chart with additional OpenShift specific functionality and provides opinionated values.
[Backstage](https://backstage.io) is an open platform for building developer portals. Powered by a centralized software catalog, Backstage restores order to your microservices and infrastructure and enables your product teams to ship high-quality code quickly — without compromising autonomy.
Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.
**This chart offers an opinionated OpenShift-specific experience.** It is based on and directly depends on an upstream canonical [Backstage Helm chart](https://github.com/backstage/charts/tree/main/charts/backstage). For less opinionated experience, please consider using the upstream chart directly.
This chart extends all the features in the upstream chart in addition to including OpenShift only features. It is not recommended to use this chart on other platforms.
## TL;DR
```console
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add backstage https://backstage.github.io/charts
helm repo add janus-idp https://janus-idp.github.io/helm-backstage
helm install my-release janus-idp/backstage
```
## Introduction
This chart bootstraps a [Backstage](https://backstage.io/docs/deployment/docker) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes 1.19+
- Helm 3.2.0+
- PV provisioner support in the underlying infrastructure
- [Backstage container image](https://backstage.io/docs/deployment/docker)
## Usage
Chart is available in the following formats:
- [Chart Repository](https://helm.sh/docs/topics/chart_repository/)
- [OCI Artifacts](https://helm.sh/docs/topics/registries/)
### Installing from the Chart Repository
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
helm repo add janus-idp https://janus-idp.github.io/helm-backstage
```
Once the chart has been added, install this chart. However before doing so, please review the default `values.yaml` and adjust as needed.
- If your cluster doesn't provide PVCs, you should disable PostgreSQL persistence via:
```yaml
upstream:
postgresql:
primary:
persistence:
enabled: false
```
```console
helm upgrade -i <release_name> janus-idp/backstage
```
### Installing from an OCI Registry
Note: this repo is deprecated. New chart updates will be in `[redhat-developer/rhdh-chart](https://github.com/orgs/redhat-developer/packages/container/package/rhdh-chart%2Fbackstage)` starting in 2024.
Chart is also available in OCI format. The list of available releases can be found [here](https://github.com/orgs/janus-idp/packages/container/package/helm-backstage%2Fbackstage).
Install one of the available versions:
```shell
helm upgrade -i <release_name> oci://ghcr.io/redhat-developer/rhdh-chart/backstage --version=<version>
```
or
```shell
helm upgrade -i <release_name> oci://ghcr.io/janus-idp/helm-backstage/backstage --version=<version>
```
> **Tip**: List all releases using `helm list`
### Uninstalling the Chart
To uninstall/delete the `my-backstage-release` deployment:
```console
helm uninstall my-backstage-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
{{ template "chart.requirementsSection" . }}
{{ template "chart.valuesSection" . }}
## Opinionated Backstage deployment
This chart defaults to an opinionated deployment of Backstage that provides user with a usable Backstage instance out of the box.
Features enabled by the default chart configuration:
1. Uses [janus-idp/backstage-showcase](https://github.com/janus-idp/backstage-showcase/) that pre-loads a lot of useful plugins and features
2. Exposes a `Route` for easy access to the instance
3. Enables OpenShift-compatible PostgreSQL database storage
For additional instance features please consult the [documentation for `janus-idp/backstage-showcase`](https://github.com/janus-idp/backstage-showcase/tree/main/showcase-docs).
Additional features can be enabled by extending the default configuration at:
```yaml
upstream:
backstage:
appConfig:
# Inline app-config.yaml for the instance
extraEnvVars:
# Additional environment variables
```
## Features
This charts defaults to using the [latest Janus-IDP Backstage Showcase image](https://quay.io/janus-idp/backstage-showcase:latest) that is OpenShift compatible:
```console
quay.io/janus-idp/backstage-showcase:latest
```
Additionally this chart enhances the upstream Backstage chart with following OpenShift-specific features:
### OpenShift Routes
This chart offers a drop-in replacement for the `Ingress` resource already provided by the upstream chart via an OpenShift `Route`.
OpenShift routes are enabled by default. In order to use the chart without it, please set `route.enabled` to `false` and switch to the `Ingress` resource via `upstream.ingress` values.
Routes can be further configured via the `route` field.
By default, the chart expects you to expose Backstage via the autogenerated hostname, which is automatically obtained from the OpenShift Ingress Configurations.
To manually provide the Backstage pod with the right context, please add the following value:
```yaml
# values.yaml
global:
clusterRouterBase: apps.example.com
```
> Tip: you can use `helm upgrade -i --set global.clusterRouterBase=apps.example.com ...` instead of a value file
Custom hosts are also supported via the following shorthand:
```yaml
# values.yaml
global:
host: backstage.example.com
```
> Note: Setting either `global.host` or `global.clusterRouterBase` will disable the automatic hostname discovery.
When both fields are set, `global.host` will take precedence.
These are just templating shorthands. For full manual configuration please pay attention to values under the `route` key.
Any custom modifications to how backstage is being exposed may require additional changes to the `values.yaml`:
```yaml
# values.yaml
upstream:
backstage:
appConfig:
app:
baseUrl: 'https://{{"{{"}}- include "janus-idp.hostname" . {{"}}"}}'
backend:
baseUrl: 'https://{{"{{"}}- include "janus-idp.hostname" . {{"}}"}}'
cors:
origin: 'https://{{"{{"}}- include "janus-idp.hostname" . {{"}}"}}'
```
### Vanilla Kubernetes compatibility mode
In order to deploy this chart on vanilla Kubernetes or any other non-OCP platform, please make sure to apply the following changes. Note that further customizations may be required, depending on your exact Kubernetes setup:
```yaml
# values.yaml
global:
host: # Specify your own Ingress host as automatic hostname discovery is not supported outside of OpenShift
route:
enabled: false # OpenShift Routes do not exist on vanilla Kubernetes
upstream:
ingress:
enabled: true # Use Kubernetes Ingress instead of OpenShift Route
backstage:
podSecurityContext: # Vanilla Kubernetes doesn't feature OpenShift default SCCs with dynamic UIDs, adjust accordingly to the deployed image
runAsUser: 1001
runAsGroup: 1001
fsGroup: 1001
postgresql:
primary:
podSecurityContext:
enabled: true
fsGroup: 26
runAsUser: 26
volumePermissions:
enabled: true
```