Site Bundles
Site bundles are self-contained deployment packages that allow installing a Skupper site on a remote host without requiring the Skupper CLI on that host.
Generating a Bundle
# On your workstation (has CLI + container engine)
export SKUPPER_PLATFORM=linux # or podman, docker
skupper site create my-remote-site
skupper system generate-bundle my-remote-site
# Output: ~/.local/share/skupper/bundles/my-remote-site.tar.gz
Bundle Types
--type |
Output |
|---|---|
tarball (default) |
.tar.gz archive with install.sh |
shell-script |
Single self-extracting shell script |
Deploying a Bundle
# Transfer to remote host, then:
tar -xzf my-remote-site.tar.gz
./install.sh -p linux # or -p podman, -p docker
Supported Platforms
Usage: install.sh [-p <podman|docker|linux>]
The bundle can target any of the three non-K8s platforms, regardless of which platform was used when generating it.
What’s Included vs What’s Not
| Included in Bundle | NOT Included |
|---|---|
| ✅ Site YAML resources | ❌ skrouterd binary |
✅ Router config (skrouterd.json) |
❌ Container engine |
| ✅ TLS certificates | ❌ Skupper CLI |
| ✅ Systemd service files (both templates) | |
| ✅ Start/stop scripts (container platforms) | |
✅ install.sh script |
|
| ✅ Static link tokens |
Key Difference: No Bootstrap Container
| Method | Bootstrap Container? | Config Generation |
|---|---|---|
skupper system start (direct CLI) |
✅ Yes | Container generates config |
Site bundle install.sh |
❌ No | Config is pre-generated in the bundle |
This means a Linux/systemd target using a bundle needs only:
skrouterdbinary- systemd
- Python (for port selection)
- Standard shell utilities
No container engine and no Skupper CLI required on the target.
How install.sh Works
- Copies pre-rendered config files to
~/.local/share/skupper/namespaces/<ns>/ - Runs
sedto fill in host-specific values (site ID, paths, namespace) - Selects the correct systemd service template (native for Linux, container for Docker/Podman)
- Creates containers (Docker/Podman only) or skips (Linux)
- Installs and enables the systemd service
- Site is running
Bundle Management
# Install
./install.sh -p linux -n my-namespace
# Remove
./install.sh -x
# Dump static link tokens
./install.sh -d /path/to/output/
Use Case: Edge Deployment at Scale
Workstation Remote Edge Hosts (×100)
┌──────────────┐ ┌──────────────────────┐
│ skupper CLI │ transfer │ Only needs: │
│ generate- │──────────→ │ - skrouterd │
│ bundle │ .tar.gz │ - systemd │
│ │ │ - python, sed, etc. │
│ │ │ │
│ │ │ ./install.sh -p linux │
│ │ │ → site running │
└──────────────┘ └──────────────────────┘