Air-Gapped Installation
The standalone Backstage Controller is deprecated. It continues to work, see Migrating from the Backstage Controller when you are ready to move.
This section covers how to install the SKE Backstage integration in air-gapped or network-restricted environments.
Backstage Plugins
In air-gapped or network-restricted environments, your Backstage may not be able to reach the public npm registry to install SKE plugins directly. You must first publish the plugins to an internal registry accessible from your Backstage instance, then follow the standard installation and configuration steps.
Spotify Portal for Backstage
If you are using Spotify Portal for Backstage, you will need to publish the plugins to your internal Portal Cloud instance.
Contact Spotify to request a token for publishing plugins to your cloud instance. Once you have a token, download the frontend plugin by running:
npm pack @syntasso/plugin-ske-frontend
This downloads the latest version of the plugin as a .tgz file in the current directory.
Repeat for the backend plugin:
npm pack @syntasso/plugin-ske-backend
Set the token you received from Spotify in your environment:
export PORTAL_PUBLISHING_TOKEN=<token>
Configure npm to authenticate against your Portal registry:
npm config set //<company>.spotifyportal.com/api/plugin-installer/registry/:_authToken=$PORTAL_PUBLISHING_TOKEN
Publish each plugin to your Portal instance, replacing <version> with the version printed by npm pack:
npm publish syntasso-plugin-ske-frontend-<version>.tgz --registry https://<company>.spotifyportal.com/api/plugin-installer/registry/npm
npm publish syntasso-plugin-ske-backend-<version>.tgz --registry https://<company>.spotifyportal.com/api/plugin-installer/registry/npm
Passing --registry directly ensures the tarball is published to your Portal instance regardless of any registry configuration inside the plugin's own package.json.
SKE Backstage Controller
In air-gapped environments, you must mirror the Backstage Controller image and deployment manifests into your own infrastructure before installing. Once mirrored, follow the standard Installing the Backstage Controller steps.
Mirror the Backstage Controller image
Mirror the following image using the same version that you set on the Backstage integration:
ghcr.io/syntasso/backstage-controller:<BACKSTAGE_CONTROLLER_VERSION>
This single image contains both the Backstage Controller and the Backstage Generator used by its Workflow Jobs. You do not need to mirror a separate generator image.
The Backstage Controller uses the registry configured by imageRegistry.host
in the SKE Operator Helm chart. If you change the image path in your internal
registry, set imageRegistry.backstageControllerImage.name to the new path.
Mirror the Backstage Controller release manifests
Like the SKE distribution, you will need to ensure that the Backstage Controller deployment manifests are available in the SKE Release Storage, the S3-compatible bucket or Git repository that is accessible from the Platform Cluster.
You need to ensure that the manifests are downloaded to the SKE Release Storage and that the directory structure matches the Syntasso Enterprise Releases page. For instance:
ske
v0.43.0
ske-distribution.yaml
release-metadata.json
backstage-controller
v0.2.2
backstage-controller.yaml
