mirror of https://github.com/backstage/charts.git
Compare commits
14 Commits
backstage-
...
main
Author | SHA1 | Date |
---|---|---|
|
c1b06c96dd | |
|
3b72b98b16 | |
|
45ba9bd1de | |
|
a8c862044a | |
|
6dcd9bb905 | |
|
dd66752014 | |
|
ebba2e3094 | |
|
63ec4eb19e | |
|
da59cbc874 | |
|
cb7f0d4955 | |
|
9bbdaf000b | |
|
c06522e9c5 | |
|
c34f95a3ec | |
|
56dcd7b10c |
|
@ -0,0 +1,2 @@
|
|||
[codespell]
|
||||
ignore-words-list = NotIn,notin
|
|
@ -0,0 +1,27 @@
|
|||
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
|
|
@ -35,17 +35,17 @@ jobs:
|
|||
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
|
||||
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 #pin@v3.3.0
|
||||
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 #pin@v3.4.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Install Cosign
|
||||
uses: sigstore/cosign-installer@c56c2d3e59e4281cc41dea2217323ba5694b171e #pin@v3.8.0
|
||||
uses: sigstore/cosign-installer@398d4b0eeef1380460a10c8013a76f728fb906ac #pin@v3.9.1
|
||||
|
||||
- name: Install Oras
|
||||
uses: oras-project/setup-oras@5c0b487ce3fe0ce3ab0d034e63669e426e294e4d # v1.2.2
|
||||
uses: oras-project/setup-oras@8d34698a59f5ffe24821f0b48ab62a3de8b64b20 # v1.2.3
|
||||
|
||||
- name: Publish and Sign OCI Charts
|
||||
run: |
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
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
|
|
@ -1,31 +1,9 @@
|
|||
name: Lint Charts
|
||||
name: Test Charts
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
check-readme:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GO111MODULE: on
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v3
|
||||
|
||||
- uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # pin@v4
|
||||
with:
|
||||
python-version: 3.12
|
||||
|
||||
- uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # 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:
|
||||
|
@ -35,11 +13,11 @@ jobs:
|
|||
fetch-depth: 0
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@fe7b79cd5ee1e45176fcad797de68ecaf3ca4814 # pin@v4.2.0
|
||||
uses: azure/setup-helm@b9e51907a09c216f16ebe8536097933489208112 # pin@v4.3.0
|
||||
with:
|
||||
version: v3.10.0
|
||||
|
||||
- uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 # pin@v4
|
||||
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # pin@v4
|
||||
with:
|
||||
python-version: 3.12
|
||||
|
||||
|
|
|
@ -18,3 +18,8 @@ repos:
|
|||
additional_dependencies: [jsonref]
|
||||
language: python
|
||||
types_or: [yaml, json]
|
||||
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.4.1
|
||||
hooks:
|
||||
- id: codespell
|
|
@ -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.4.0
|
||||
version: 2.6.0
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Backstage Helm Chart
|
||||
|
||||
[](https://artifacthub.io/packages/search?repo=backstage)
|
||||

|
||||

|
||||

|
||||
|
||||
A Helm chart for deploying a Backstage application
|
||||
|
@ -117,6 +117,7 @@ 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 | `{}` |
|
||||
|
@ -139,6 +140,7 @@ Kubernetes: `>= 1.19.0-0`
|
|||
| 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.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 | `{}` |
|
||||
|
@ -180,7 +182,7 @@ Kubernetes: `>= 1.19.0-0`
|
|||
| 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 explicitely specificed. OpenTelemetry's default port is 9464. | string | `"http-backend"` |
|
||||
| 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` |
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
backstage:
|
||||
autoscaling:
|
||||
enabled: true
|
||||
minReplicas: 1
|
||||
maxReplicas: 3
|
||||
targetCPUUtilizationPercentage: 75
|
||||
targetMemoryUtilizationPercentage: 90
|
|
@ -0,0 +1,9 @@
|
|||
metrics:
|
||||
serviceMonitor:
|
||||
enabled: true
|
||||
annotations:
|
||||
test: test
|
||||
labels:
|
||||
test: test
|
||||
path: /metrics
|
||||
port: http-backend
|
|
@ -20,7 +20,9 @@ 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 }}
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
{{- 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 }}
|
|
@ -0,0 +1,29 @@
|
|||
{{- 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 }}
|
|
@ -29,7 +29,7 @@ spec:
|
|||
matchLabels: {{ include "common.labels.standard" . | nindent 6 }}
|
||||
app.kubernetes.io/component: backstage
|
||||
endpoints:
|
||||
- port: {{ .Values.metrics.serviceMonitor.port }}
|
||||
- port: {{ .Values.metrics.serviceMonitor.port | quote }}
|
||||
path: {{ .Values.metrics.serviceMonitor.path }}
|
||||
{{- with .Values.metrics.serviceMonitor.interval }}
|
||||
interval: {{ . }}
|
||||
|
|
|
@ -244,7 +244,7 @@
|
|||
"x-kubernetes-map-type": "atomic"
|
||||
},
|
||||
"matchLabelKeys": {
|
||||
"description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
|
||||
"description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -252,7 +252,7 @@
|
|||
"x-kubernetes-list-type": "atomic"
|
||||
},
|
||||
"mismatchLabelKeys": {
|
||||
"description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
|
||||
"description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -388,7 +388,7 @@
|
|||
"x-kubernetes-map-type": "atomic"
|
||||
},
|
||||
"matchLabelKeys": {
|
||||
"description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
|
||||
"description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -396,7 +396,7 @@
|
|||
"x-kubernetes-list-type": "atomic"
|
||||
},
|
||||
"mismatchLabelKeys": {
|
||||
"description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
|
||||
"description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -476,7 +476,7 @@
|
|||
"description": "Pod anti affinity is a group of inter pod anti affinity scheduling rules.",
|
||||
"properties": {
|
||||
"preferredDuringSchedulingIgnoredDuringExecution": {
|
||||
"description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.",
|
||||
"description": "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and subtracting \"weight\" from the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.",
|
||||
"items": {
|
||||
"description": "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)",
|
||||
"properties": {
|
||||
|
@ -529,7 +529,7 @@
|
|||
"x-kubernetes-map-type": "atomic"
|
||||
},
|
||||
"matchLabelKeys": {
|
||||
"description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
|
||||
"description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -537,7 +537,7 @@
|
|||
"x-kubernetes-list-type": "atomic"
|
||||
},
|
||||
"mismatchLabelKeys": {
|
||||
"description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
|
||||
"description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -673,7 +673,7 @@
|
|||
"x-kubernetes-map-type": "atomic"
|
||||
},
|
||||
"matchLabelKeys": {
|
||||
"description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
|
||||
"description": "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both matchLabelKeys and labelSelector. Also, matchLabelKeys cannot be set when labelSelector isn't set.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -681,7 +681,7 @@
|
|||
"x-kubernetes-list-type": "atomic"
|
||||
},
|
||||
"mismatchLabelKeys": {
|
||||
"description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set. This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default).",
|
||||
"description": "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. Also, mismatchLabelKeys cannot be set when labelSelector isn't set.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
|
@ -792,6 +792,38 @@
|
|||
"title": "Backstage container command arguments",
|
||||
"type": "array"
|
||||
},
|
||||
"autoscaling": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"enabled": {
|
||||
"default": false,
|
||||
"description": "Enable autoscaling",
|
||||
"title": "Backstage Autoscaling",
|
||||
"type": "boolean"
|
||||
},
|
||||
"maxReplicas": {
|
||||
"default": 100,
|
||||
"title": "Maximum number of Backstage pod replicas that the autoscaler is allowed to scale up to",
|
||||
"type": "integer"
|
||||
},
|
||||
"minReplicas": {
|
||||
"default": 1,
|
||||
"title": "Minimum number of Backstage pod replicas that the autoscaler is allowed to scale down to",
|
||||
"type": "integer"
|
||||
},
|
||||
"targetCPUUtilizationPercentage": {
|
||||
"default": 80,
|
||||
"title": "Percentage of CPU that each Backstage pod should be using on average before the autoscaler decides to scale",
|
||||
"type": "integer"
|
||||
},
|
||||
"targetMemoryUtilizationPercentage": {
|
||||
"title": "Percentage of memory that each Backstage pod should be using on average before the autoscaler decides to scale",
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"title": "Autoscaling parameters",
|
||||
"type": "object"
|
||||
},
|
||||
"command": {
|
||||
"default": [
|
||||
"node",
|
||||
|
@ -1011,7 +1043,7 @@
|
|||
"description": "EnvVar represents an environment variable present in a Container.",
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "Name of the environment variable. Must be a C_IDENTIFIER.",
|
||||
"description": "Name of the environment variable. May consist of any printable ASCII characters except '='.",
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
|
@ -1129,7 +1161,7 @@
|
|||
"x-kubernetes-patch-strategy": "merge"
|
||||
},
|
||||
"envFrom": {
|
||||
"description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
|
||||
"description": "List of sources to populate environment variables in the container. The keys defined within a source may consist of any printable ASCII characters except '='. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
|
||||
"items": {
|
||||
"description": "EnvFromSource represents the source of a set of ConfigMaps or Secrets",
|
||||
"properties": {
|
||||
|
@ -1148,7 +1180,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"prefix": {
|
||||
"description": "Optional text to prepend to the name of each environment variable. Must be a C_IDENTIFIER.",
|
||||
"description": "Optional text to prepend to the name of each environment variable. May consist of any printable ASCII characters except '='.",
|
||||
"type": "string"
|
||||
},
|
||||
"secretRef": {
|
||||
|
@ -1403,6 +1435,10 @@
|
|||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"stopSignal": {
|
||||
"description": "StopSignal defines which signal will be sent to a container when it is being stopped. If not specified, the default is defined by the container runtime in use. StopSignal can only be set for Pods with a non-empty .spec.os.name",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
|
@ -2249,7 +2285,7 @@
|
|||
"description": "EnvVar represents an environment variable present in a Container.",
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "Name of the environment variable. Must be a C_IDENTIFIER.",
|
||||
"description": "Name of the environment variable. May consist of any printable ASCII characters except '='.",
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
|
@ -3289,7 +3325,7 @@
|
|||
"description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.",
|
||||
"properties": {
|
||||
"endpoints": {
|
||||
"description": "endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod",
|
||||
"description": "endpoints is the endpoint name that details Glusterfs topology.",
|
||||
"type": "string"
|
||||
},
|
||||
"path": {
|
||||
|
@ -4128,7 +4164,7 @@
|
|||
"description": "EnvVar represents an environment variable present in a Container.",
|
||||
"properties": {
|
||||
"name": {
|
||||
"description": "Name of the environment variable. Must be a C_IDENTIFIER.",
|
||||
"description": "Name of the environment variable. May consist of any printable ASCII characters except '='.",
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
|
@ -4246,7 +4282,7 @@
|
|||
"x-kubernetes-patch-strategy": "merge"
|
||||
},
|
||||
"envFrom": {
|
||||
"description": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
|
||||
"description": "List of sources to populate environment variables in the container. The keys defined within a source may consist of any printable ASCII characters except '='. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
|
||||
"items": {
|
||||
"description": "EnvFromSource represents the source of a set of ConfigMaps or Secrets",
|
||||
"properties": {
|
||||
|
@ -4265,7 +4301,7 @@
|
|||
"type": "object"
|
||||
},
|
||||
"prefix": {
|
||||
"description": "Optional text to prepend to the name of each environment variable. Must be a C_IDENTIFIER.",
|
||||
"description": "Optional text to prepend to the name of each environment variable. May consist of any printable ASCII characters except '='.",
|
||||
"type": "string"
|
||||
},
|
||||
"secretRef": {
|
||||
|
@ -4520,6 +4556,10 @@
|
|||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"stopSignal": {
|
||||
"description": "StopSignal defines which signal will be sent to a container when it is being stopped. If not specified, the default is defined by the container runtime in use. StopSignal can only be set for Pods with a non-empty .spec.os.name",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
|
@ -5511,6 +5551,35 @@
|
|||
"title": "Node labels for pod assignment",
|
||||
"type": "object"
|
||||
},
|
||||
"pdb": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"create": {
|
||||
"default": false,
|
||||
"description": "Create a PDB",
|
||||
"title": "Backstage PDB",
|
||||
"type": "boolean"
|
||||
},
|
||||
"maxUnavailable": {
|
||||
"default": "",
|
||||
"title": "Backstage PDB maxUnavailable",
|
||||
"type": [
|
||||
"string",
|
||||
"integer"
|
||||
]
|
||||
},
|
||||
"minAvailable": {
|
||||
"default": "",
|
||||
"title": "Backstage PDB minAvailable",
|
||||
"type": [
|
||||
"string",
|
||||
"integer"
|
||||
]
|
||||
}
|
||||
},
|
||||
"title": "PDB parameters",
|
||||
"type": "object"
|
||||
},
|
||||
"podAnnotations": {
|
||||
"additionalProperties": {
|
||||
"type": "string"
|
||||
|
@ -6143,11 +6212,11 @@
|
|||
"type": "integer"
|
||||
},
|
||||
"nodeAffinityPolicy": {
|
||||
"description": "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\nIf this value is nil, the behavior is equivalent to the Honor policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.",
|
||||
"description": "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\nIf this value is nil, the behavior is equivalent to the Honor policy.",
|
||||
"type": "string"
|
||||
},
|
||||
"nodeTaintsPolicy": {
|
||||
"description": "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included.\n\nIf this value is nil, the behavior is equivalent to the Ignore policy. This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.",
|
||||
"description": "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included.\n\nIf this value is nil, the behavior is equivalent to the Ignore policy.",
|
||||
"type": "string"
|
||||
},
|
||||
"topologyKey": {
|
||||
|
@ -6436,7 +6505,7 @@
|
|||
}
|
||||
],
|
||||
"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 explicitely specificed. OpenTelemetry's default port is 9464.",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
|
|
|
@ -275,6 +275,67 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"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",
|
||||
|
@ -906,7 +967,7 @@
|
|||
},
|
||||
"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 explicitely specificed. OpenTelemetry's default port is 9464.",
|
||||
"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": [
|
||||
{
|
||||
|
|
|
@ -133,6 +133,22 @@ 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
|
||||
|
@ -479,5 +495,5 @@ metrics:
|
|||
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 explicitely specificed. OpenTelemetry's default port is 9464.
|
||||
# <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
|
||||
|
|
Loading…
Reference in New Issue