### Basic Backstage Helm Installation Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Quick commands to add the Backstage Helm repository and install a basic Backstage release. This is a common starting point for deployment. ```console helm repo add backstage https://backstage.github.io/charts helm install my-release backstage/backstage ``` -------------------------------- ### Install Backstage Helm Chart from Repository Source: https://github.com/backstage/charts/blob/main/README.md After adding the chart repository, use this command to install a Backstage chart. Replace `` with your desired release name. ```console helm upgrade -i backstage/backstage ``` -------------------------------- ### Install Backstage from OCI Registry Source: https://context7.com/backstage/charts/llms.txt Install the Backstage Helm chart directly from an OCI registry, manage releases, and uninstall. ```bash helm upgrade -i my-backstage oci://ghcr.io/backstage/charts/backstage --version=2.6.3 helm list helm uninstall my-backstage ``` -------------------------------- ### Add Backstage Helm Repository and Install Source: https://context7.com/backstage/charts/llms.txt Add the Backstage Helm repository, update its index, and install Backstage using default or custom values. Supports installing specific versions. ```bash helm repo add backstage https://backstage.github.io/charts helm repo update helm install my-backstage backstage/backstage helm install my-backstage backstage/backstage -f my-values.yaml helm upgrade -i my-backstage backstage/backstage --version=2.6.3 ``` -------------------------------- ### Add Init Containers Source: https://context7.com/backstage/charts/llms.txt Define init containers to run before the main Backstage container starts, useful for setup tasks. ```yaml backstage: initContainers: - name: init-db image: busybox:1.35 command: ['sh', '-c', 'until nc -z ${POSTGRES_HOST} 5432; do echo waiting for db; sleep 2; done;'] env: - name: POSTGRES_HOST value: "my-postgres-host" ``` -------------------------------- ### Install Backstage Helm Chart from OCI Registry Source: https://github.com/backstage/charts/blob/main/README.md Charts are also available in OCI format. Use this command to install a Backstage chart directly from an OCI registry. Replace `` and `` accordingly. ```shell helm upgrade -i oci://ghcr.io/backstage/charts/backstage --version= ``` -------------------------------- ### Install Backstage Helm Chart from OCI Registry Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Install a specific version of the Backstage Helm chart from an OCI registry. Replace `` with the desired chart version. ```shell helm upgrade -i oci://ghcr.io/backstage/charts/backstage --version= ``` -------------------------------- ### Configure Startup Probe Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Define the HTTP startup probe for the Backstage deployment. This probe checks if the application has started successfully. ```yaml startupProbe: failureThreshold: 3 httpGet: path: /.backstage/health/v1/liveness port: 7007 scheme: HTTP initialDelaySeconds: 60 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 2 ``` -------------------------------- ### Configure Startup Probe Source: https://context7.com/backstage/charts/llms.txt Customize the startup probe to determine when an application has started successfully. ```yaml backstage: startupProbe: httpGet: path: /.backstage/health/v1/liveness port: 7007 scheme: HTTP initialDelaySeconds: 10 periodSeconds: 5 successThreshold: 1 failureThreshold: 30 timeoutSeconds: 2 ``` -------------------------------- ### Add Backstage Helm Chart Repository Source: https://github.com/backstage/charts/blob/main/README.md Use this command to add the Backstage Helm chart repository to your Helm configuration. This allows you to install Backstage charts. ```console helm repo add backstage https://backstage.github.io/charts ``` -------------------------------- ### Configure Custom Backstage Image Source: https://context7.com/backstage/charts/llms.txt Deploy Backstage using a custom container image. Specify image details like registry, repository, tag, pull policy, and pull secrets. Also configures container ports, command, arguments, and installation directory. ```yaml backstage: replicas: 2 revisionHistoryLimit: 5 image: registry: docker.io repository: my-org/my-backstage tag: "1.0.0" pullPolicy: IfNotPresent pullSecrets: - my-registry-secret containerPorts: backend: 7007 command: ["node", "packages/backend"] args: [] installDir: /app ``` -------------------------------- ### Configure Sensitive Environment Variables from Secrets Source: https://context7.com/backstage/charts/llms.txt Store sensitive data in Kubernetes Secrets and reference them in the Backstage deployment. This example shows creating a secret and referencing it via `extraEnvVarsSecrets`. ```yaml apiVersion: v1 kind: Secret metadata: name: my-backstage-secrets type: Opaque data: BACKEND_SECRET: YmFja3N0YWdl # base64 encoded POSTGRES_PASSWORD: aHVudGVyMg== # base64 encoded GITHUB_TOKEN: Z2hwX3h4eHh4 # base64 encoded --- # Apply secret: kubectl apply -f my-backstage-secrets.yaml # values.yaml - Reference the secret backstage: extraEnvVarsSecrets: - my-backstage-secrets # Can also use ConfigMaps for non-sensitive data extraEnvVarsCM: - my-backstage-config ``` -------------------------------- ### Configure Resource Requests and Limits Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Specify resource requests and limits for CPU and memory for the Backstage deployment containers. This helps in managing resource allocation and preventing OOMKilled events. ```yaml resources: limits: memory: 1Gi cpu: 1000m requests: memory: 250Mi cpu: 100m ``` -------------------------------- ### Configure Readiness Probe Source: https://context7.com/backstage/charts/llms.txt Customize the readiness probe to determine when a pod is ready to serve traffic. ```yaml backstage: readinessProbe: httpGet: path: /.backstage/health/v1/readiness port: 7007 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 2 failureThreshold: 3 timeoutSeconds: 2 ``` -------------------------------- ### Preview Documentation Generation Source: https://github.com/backstage/charts/blob/main/CONTRIBUTING.md Use `helm-docs --dry-run` to preview the generated documentation for chart values without actually writing to files. ```bash helm-docs --dry-run ``` -------------------------------- ### Configure Readiness Probe Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Define the HTTP readiness probe for the Backstage deployment. This probe checks if the application is ready to serve traffic. ```yaml readinessProbe: failureThreshold: 3 httpGet: path: /.backstage/health/v1/readiness port: 7007 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 2 timeoutSeconds: 2 ``` -------------------------------- ### Provide App Configuration via ConfigMap Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Configure application settings by defining the `appConfig` key in your Helm values. This will create a ConfigMap managed by the chart and mount it as `app-config-from-configmap.yaml`. ```yaml backstage: appConfig: app: baseUrl: https://somedomain.tld ``` -------------------------------- ### Run Pre-commit Hooks Source: https://github.com/backstage/charts/blob/main/CONTRIBUTING.md Execute all pre-commit hooks to ensure code quality and generate documentation. This command runs all hooks on all files in the repository. ```bash pre-commit run --all-files ``` -------------------------------- ### Enable Built-in PostgreSQL Source: https://context7.com/backstage/charts/llms.txt Configure the chart to deploy PostgreSQL as a subchart, with options for standalone or replication architecture and automatic credential generation. ```yaml # values.yaml postgresql: enabled: true image: registry: docker.io repository: bitnamilegacy/postgresql architecture: standalone # or 'replication' auth: username: bn_backstage # Leave password empty for auto-generation password: "" existingSecret: "" ``` -------------------------------- ### Configure Resource Limits and Requests Source: https://context7.com/backstage/charts/llms.txt Set resource constraints for the Backstage container to manage memory and CPU allocation. This ensures proper scheduling and prevents resource starvation. ```yaml backstage: resources: limits: memory: 1Gi cpu: 1000m requests: memory: 256Mi cpu: 100m ``` -------------------------------- ### Enable PostgreSQL Subchart Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Set `postgresql.enabled` to `true` in your Helm values to deploy a Bitnami PostgreSQL database as a subchart. The chart will automatically configure it with specified credentials. ```yaml postgresql: enabled: true ``` -------------------------------- ### Enable Network Policies Source: https://context7.com/backstage/charts/llms.txt Configure network policies to control ingress and egress traffic for the Backstage deployment. ```yaml networkPolicy: enabled: true ingressRules: namespaceSelector: matchLabels: kubernetes.io/metadata.name: ingress-nginx podSelector: matchLabels: app.kubernetes.io/name: ingress-nginx customRules: - from: - namespaceSelector: matchLabels: environment: production egressRules: denyConnectionsToExternal: false customRules: - to: - namespaceSelector: matchLabels: app: database ports: - protocol: TCP port: 5432 ``` -------------------------------- ### Enable Diagnostic Mode Source: https://context7.com/backstage/charts/llms.txt Enable diagnostic mode to troubleshoot startup issues by overriding the container command with `sleep infinity`. After deployment, use `kubectl exec` to access the pod for debugging. ```yaml # values.yaml diagnosticMode: enabled: true command: - sleep args: - infinity # After deployment, exec into pod for debugging: # kubectl exec -it -- /bin/bash ``` -------------------------------- ### Enable Ingress with TLS Source: https://context7.com/backstage/charts/llms.txt Configure Kubernetes Ingress to enable external access to Backstage with TLS termination using nginx and cert-manager. ```yaml # values.yaml ingress: enabled: true className: "nginx" host: backstage.example.com path: "/" annotations: nginx.ingress.kubernetes.io/proxy-body-size: "50m" nginx.ingress.kubernetes.io/proxy-buffer-size: "128k" cert-manager.io/cluster-issuer: "letsencrypt-prod" tls: enabled: true secretName: "backstage-tls" ``` -------------------------------- ### Create ConfigMap for Extra App Configuration Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Use this command to create a Kubernetes ConfigMap from a local YAML file. This ConfigMap can then be referenced by the Backstage Helm chart to provide additional application configuration. ```bash kubectl create configmap my-app-config --from-file=app-config.extra.yaml=./local/path/to/your/app-config.extra.yaml ``` -------------------------------- ### Configure Liveness Probe Source: https://context7.com/backstage/charts/llms.txt Customize the liveness probe to determine if a pod needs to be restarted. ```yaml backstage: livenessProbe: httpGet: path: /.backstage/health/v1/liveness port: 7007 scheme: HTTP initialDelaySeconds: 60 periodSeconds: 10 successThreshold: 1 failureThreshold: 3 timeoutSeconds: 2 ``` -------------------------------- ### Create ConfigMap from Local File Source: https://context7.com/backstage/charts/llms.txt Use kubectl to create a ConfigMap from a local YAML file. This is useful for injecting custom Backstage configurations. ```bash kubectl create configmap my-app-config \ --from-file=app-config.extra.yaml=./local/path/to/your/app-config.extra.yaml ``` -------------------------------- ### Configure Service Account with Annotations Source: https://context7.com/backstage/charts/llms.txt Enable service account creation and add custom annotations for AWS IRSA or GCP Workload Identity. Ensure the correct ARN or service account name is specified. ```yaml # values.yaml serviceAccount: create: true name: "backstage-sa" labels: app: backstage annotations: # AWS IRSA eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/backstage-role # GCP Workload Identity # iam.gke.io/gcp-service-account: backstage@my-project.iam.gserviceaccount.com automountServiceAccountToken: true ``` -------------------------------- ### Full Production-Ready Backstage Configuration Source: https://context7.com/backstage/charts/llms.txt A comprehensive Helm chart configuration for production deployments, enabling features like ingress, autoscaling, custom resource limits, and PostgreSQL integration. Review and adjust image tags, resource requests/limits, and external service connections as needed. ```yaml # production-values.yaml global: imageRegistry: "my-registry.example.com" imagePullSecrets: - registry-credentials nameOverride: "" fullnameOverride: "backstage" clusterDomain: cluster.local commonLabels: environment: production team: platform commonAnnotations: managed-by: helm ingress: enabled: true className: "nginx" host: backstage.example.com path: "/" annotations: cert-manager.io/cluster-issuer: "letsencrypt-prod" nginx.ingress.kubernetes.io/proxy-body-size: "100m" tls: enabled: true secretName: "backstage-tls" backstage: replicas: 3 image: registry: my-registry.example.com repository: platform/backstage tag: "v1.15.0" pullPolicy: IfNotPresent resources: requests: memory: 512Mi cpu: 250m limits: memory: 2Gi cpu: 2000m autoscaling: enabled: true minReplicas: 3 maxReplicas: 10 targetCPUUtilizationPercentage: 70 pdb: create: true minAvailable: 2 extraEnvVarsSecrets: - backstage-secrets appConfig: app: title: "Developer Portal" baseUrl: https://backstage.example.com backend: baseUrl: https://backstage.example.com database: client: pg connection: host: ${POSTGRES_HOST} port: ${POSTGRES_PORT} user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD} podSecurityContext: runAsNonRoot: true runAsUser: 1000 fsGroup: 1000 nodeSelector: node-type: application topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: DoNotSchedule labelSelector: matchLabels: app.kubernetes.io/component: backstage service: type: ClusterIP ports: backend: 7007 name: http-backend networkPolicy: enabled: true ingressRules: namespaceSelector: matchLabels: kubernetes.io/metadata.name: ingress-nginx postgresql: enabled: true auth: existingSecret: "postgres-credentials" serviceAccount: create: true annotations: eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/backstage metrics: serviceMonitor: enabled: true labels: release: prometheus ``` -------------------------------- ### Render Helm Chart Changes Source: https://github.com/backstage/charts/blob/main/CONTRIBUTING.md Use `helm template` to ensure your changes to the Backstage Helm Chart render correctly into Kubernetes manifests. ```bash helm template ``` -------------------------------- ### Configure Ingress with Multiple Hosts and TLS Source: https://context7.com/backstage/charts/llms.txt Set up Ingress to handle multiple hostnames, each with its own TLS certificate configuration. ```yaml # values.yaml ingress: enabled: true className: "nginx" host: backstage.example.com path: "/" tls: enabled: true secretName: "backstage-tls" extraHosts: - name: backstage.internal.example.com path: / pathType: Prefix port: 7007 - name: portal.example.com path: /backstage pathType: Prefix extraTls: - hosts: - backstage.internal.example.com secretName: backstage-internal-tls - hosts: - portal.example.com secretName: portal-tls ``` -------------------------------- ### Inline App Configuration via ConfigMap Source: https://context7.com/backstage/charts/llms.txt Define Backstage app configuration directly within `values.yaml`. This configuration is automatically used to generate a ConfigMap for the Backstage application. ```yaml backstage: appConfig: app: title: "My Company Developer Portal" baseUrl: https://backstage.example.com organization: name: "My Company" backend: baseUrl: https://backstage.example.com listen: port: 7007 cors: origin: https://backstage.example.com methods: [GET, POST, PUT, DELETE] credentials: true database: client: pg connection: host: ${POSTGRES_HOST} port: ${POSTGRES_PORT} user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD} catalog: rules: - allow: [Component, System, API, Resource, Location] locations: - type: url target: https://github.com/my-org/software-catalog/blob/main/catalog-info.yaml ``` -------------------------------- ### Configure PostgreSQL with Specified Password Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Specify a password for the PostgreSQL database user by setting `postgresql.auth.password`. Ensure `postgresql.auth.existingSecret` is empty. Handle this value securely. ```yaml postgresql: auth: password: your-secure-password ``` -------------------------------- ### Lint Backstage Helm Chart Source: https://github.com/backstage/charts/blob/main/CONTRIBUTING.md Run lint tests on the Chart using the Chart Testing tool with the `ct lint` command. ```bash ct lint ``` -------------------------------- ### Configure Diagnostic Mode Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Enable diagnostic mode for the Backstage deployment. When enabled, all probes are disabled and the container command is overridden. ```yaml diagnosticMode: args: - infinity command: - sleep enabled: false ``` -------------------------------- ### Add Sidecar Containers Source: https://context7.com/backstage/charts/llms.txt Configure sidecar containers to run alongside the Backstage application, such as for proxying. ```yaml backstage: extraContainers: - name: oauth2-proxy image: quay.io/oauth2-proxy/oauth2-proxy:v7.4.0 ports: - containerPort: 4180 name: http-proxy args: - --provider=github - --upstream=http://localhost:7007 - --http-address=0.0.0.0:4180 env: - name: OAUTH2_PROXY_CLIENT_ID valueFrom: secretKeyRef: name: oauth2-secrets key: client-id ``` -------------------------------- ### Add Extra Volume Mounts Source: https://context7.com/backstage/charts/llms.txt Specify where the extra volumes should be mounted within the Backstage pod. ```yaml backstage: extraVolumeMounts: - name: custom-certs mountPath: /etc/ssl/custom-certs readOnly: true - name: temp-storage mountPath: /tmp/cache - name: config-volume mountPath: /app/config readOnly: true ``` -------------------------------- ### Enable Prometheus ServiceMonitor Source: https://context7.com/backstage/charts/llms.txt Configure a ServiceMonitor for Prometheus to scrape metrics from the Backstage application. ```yaml metrics: serviceMonitor: enabled: true annotations: prometheus.io/scrape: "true" labels: release: prometheus interval: 30s path: /metrics port: http-backend ``` -------------------------------- ### Add Extra Volumes Source: https://context7.com/backstage/charts/llms.txt Define additional volumes to be mounted into the Backstage pod. ```yaml backstage: extraVolumes: - name: custom-certs secret: secretName: my-ca-certificates - name: temp-storage emptyDir: sizeLimit: 100Mi - name: config-volume configMap: name: my-config ``` -------------------------------- ### Configure Service Type and Ports Source: https://context7.com/backstage/charts/llms.txt Define the Kubernetes Service type, ports, NodePorts, LoadBalancer IPs, and source ranges for Backstage. ```yaml # values.yaml service: type: ClusterIP # Options: ClusterIP, NodePort, LoadBalancer ports: backend: 7007 name: http-backend targetPort: backend # For NodePort type nodePorts: backend: "30007" # For LoadBalancer type loadBalancerIP: "" loadBalancerSourceRanges: - 10.0.0.0/8 - 192.168.0.0/16 externalTrafficPolicy: Cluster sessionAffinity: None # Additional annotations annotations: service.beta.kubernetes.io/aws-load-balancer-type: "nlb" # Dual-stack configuration ipFamilyPolicy: "PreferDualStack" ipFamilies: - IPv4 - IPv6 ``` -------------------------------- ### Use Existing PostgreSQL Secret Source: https://context7.com/backstage/charts/llms.txt Configure PostgreSQL using an existing Kubernetes Secret for credentials. Ensure the secret contains the necessary password keys. ```yaml # First create the secret apiVersion: v1 kind: Secret metadata: name: my-postgres-secret type: Opaque data: admin-password: YWRtaW5wYXNz # base64 encoded user-password: dXNlcnBhc3M= # base64 encoded replication-password: cmVwbHBhc3M= # base64 encoded --- # values.yaml postgresql: enabled: true auth: username: bn_backstage existingSecret: "my-postgres-secret" secretKeys: adminPasswordKey: admin-password userPasswordKey: user-password replicationPasswordKey: replication-password ``` -------------------------------- ### Configure Node Selector and Tolerations Source: https://context7.com/backstage/charts/llms.txt Specify node selectors and tolerations to control pod scheduling on specific nodes. ```yaml backstage: nodeSelector: kubernetes.io/os: linux node-type: application tolerations: - key: "dedicated" operator: "Equal" value: "backstage" effect: "NoSchedule" ``` -------------------------------- ### Configure Ingress Host Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Define the hostname and path for exposing the Backstage application via an Ingress resource. TLS can be enabled for secure access. ```yaml ingress: enabled: false className: "" host: "" path: "/" tls: enabled: false secretName: "" annotations: {} extraHosts: - name: backstage.env.example.com path: / (Optional) pathType: Prefix (Optional) port: 7007 (Optional) extraTls: - hosts: - backstage.env.example.com secretName: backstage-env ``` -------------------------------- ### Enable Horizontal Pod Autoscaler Source: https://context7.com/backstage/charts/llms.txt Configure the Horizontal Pod Autoscaler for Backstage, specifying replica counts and target utilization percentages for CPU and memory. ```yaml # values.yaml backstage: autoscaling: enabled: true minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 75 targetMemoryUtilizationPercentage: 80 # Resource requests required for autoscaling resources: requests: memory: 256Mi cpu: 100m limits: memory: 1Gi cpu: 1000m ``` -------------------------------- ### Configure Pod Security Context Source: https://context7.com/backstage/charts/llms.txt Define security context settings at the pod and container level, including user/group IDs, filesystem group, and privilege escalation. ```yaml # values.yaml backstage: podSecurityContext: runAsUser: 1000 runAsGroup: 3000 fsGroup: 2000 runAsNonRoot: true containerSecurityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true capabilities: drop: - ALL ``` -------------------------------- ### Pass Non-Sensitive Environment Variables Source: https://context7.com/backstage/charts/llms.txt Configure environment variables for Backstage plugins and settings using `extraEnvVars`. This includes standard variables and overrides for `app-config.yaml` values using the `APP_CONFIG` prefix. ```yaml backstage: extraEnvVars: - name: MY_PLUGIN_HOST value: "http://my-plugin-host" - name: LOG_LEVEL value: "info" - name: NODE_ENV value: "production" # Override app-config.yaml values using APP_CONFIG prefix - name: APP_CONFIG_backend_cache_store value: "memory" - name: APP_CONFIG_backend_baseUrl value: "https://backstage.example.com" ``` -------------------------------- ### Override App Config with Environment Variables Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Override values in your `app-config.yaml` by prefixing environment variable names with `APP_CONFIG_`. This allows dynamic configuration without modifying the config file directly. ```yaml backstage: extraEnvVars: - name: APP_CONFIG_backend_cache_store value: memory ``` -------------------------------- ### Configure Pod Disruption Budget Source: https://context7.com/backstage/charts/llms.txt Define a Pod Disruption Budget to ensure high availability during voluntary disruptions. ```yaml backstage: pdb: create: true minAvailable: 1 # Or use maxUnavailable instead # maxUnavailable: 1 ``` -------------------------------- ### Configure PostgreSQL with Existing Secret Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md To use an existing Kubernetes secret for PostgreSQL credentials, set `postgresql.auth.existingSecret` to the secret's name. Ensure the secret contains the password under the key specified by `postgresql.auth.secretKeys.userPasswordKey`. ```yaml postgresql: auth: existingSecret: my-user-secret ``` -------------------------------- ### Configure Topology Spread Constraints Source: https://context7.com/backstage/charts/llms.txt Set topology spread constraints to ensure pods are distributed across zones or nodes. ```yaml backstage: topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: app.kubernetes.io/component: backstage ``` -------------------------------- ### Configure Node Affinity and Pod Anti-Affinity Source: https://context7.com/backstage/charts/llms.txt Define node affinity and pod anti-affinity rules for advanced scheduling and high availability. ```yaml backstage: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: topology.kubernetes.io/zone operator: In values: - us-east-1a - us-east-1b podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchLabels: app.kubernetes.io/component: backstage topologyKey: kubernetes.io/hostname ``` -------------------------------- ### Deploy Additional Kubernetes Resources Source: https://context7.com/backstage/charts/llms.txt Use the `extraDeploy` feature to deploy additional Kubernetes resources like ConfigMaps or Secrets alongside Backstage. Ensure resources are correctly defined with `apiVersion`, `kind`, and `metadata`. ```yaml # values.yaml extraDeploy: - apiVersion: v1 kind: ConfigMap metadata: name: backstage-extra-config data: extra-config.yaml: | some: extra: configuration - apiVersion: v1 kind: Secret metadata: name: backstage-api-key type: Opaque stringData: api-key: "my-secret-key" ``` -------------------------------- ### Reference ConfigMap in Helm Chart Values Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Add this configuration to your Helm values file to tell the Backstage chart to mount the ConfigMap as an extra application configuration file. ```yaml backstage: extraAppConfig: - filename: app-config.extra.yaml configMapRef: my-app-config ``` -------------------------------- ### Configure Global Image Registry Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Specify global parameters for Docker images, including the image registry and pull secrets. This can override image parameters configured for individual deployments. ```yaml global: imageRegistry: "" imagePullSecrets: [] ``` -------------------------------- ### Reference ConfigMaps in values.yaml Source: https://context7.com/backstage/charts/llms.txt Specify ConfigMap references within the `extraAppConfig` section of your `values.yaml` file to include custom configurations. ```yaml # values.yaml backstage: extraAppConfig: - filename: app-config.extra.yaml configMapRef: my-app-config - filename: app-config.production.yaml configMapRef: my-production-config ``` -------------------------------- ### Add Extra Ports Source: https://context7.com/backstage/charts/llms.txt Expose additional ports for sidecar containers or other services. ```yaml backstage: extraPorts: - name: http-proxy containerPort: 4180 protocol: TCP ``` -------------------------------- ### Add Extra Environment Variables to Backstage Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Use `backstage.extraEnvVars` to pass non-sensitive environment variables to your Backstage instance. This is useful for configuring plugins or application settings. ```yaml backstage: extraEnvVars: - name: MY_PLUGIN_HOST value: http://my-plugin-host ``` -------------------------------- ### Apply Kubernetes Secret to Backstage Instance Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Reference a created Kubernetes Secret by adding its name to `backstage.extraEnvVarsSecrets` in your `values.yaml`. The Helm chart will inject these secrets as environment variables into your Backstage pods. ```yaml backstage: extraEnvVarsSecrets: - my-backstage-secrets ``` -------------------------------- ### Uninstall Backstage Helm Release Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Uninstall a previously deployed Backstage Helm release. This command removes all associated Kubernetes components. ```console helm uninstall my-backstage-release ``` -------------------------------- ### Define Kubernetes Secret for Sensitive Data Source: https://github.com/backstage/charts/blob/main/charts/backstage/README.md Create a Kubernetes Secret of type `Opaque` to store sensitive environment variables like `BACKEND_SECRET` or database passwords. Ensure the secret name is customized. ```yaml # my-backstage-secrets.yaml apiVersion: v1 kind: Secret metadata: name: my-backstage-secrets type: Opaque data: BACKEND_SECRET: YmFja3N0YWdl POSTGRES_PASSWORD: aHVudGVyMg== ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.