SUSE AI Lifecycle Manager is a Rancher UI Extension for managing SUSE AI components across Kubernetes clusters. This extension provides a unified interface for installing, managing, and monitoring AI workloads in Rancher-managed clusters.
Note: While this extension is open source (Apache 2.0), it requires an active SUSE AI subscription to access the application catalog.
- Node.js 20+ and Yarn
- Access to a Rancher cluster
- Extension developer features enabled in Rancher
-
Clone and install dependencies:
git clone <repository-url> cd suse-ai-lifecycle-manager yarn install
-
Build the extension:
yarn build-pkg suse-ai-lifecycle-manager
-
Serve during development:
yarn serve-pkgs
Copy the URL shown in the terminal.
-
Load in Rancher:
- In Rancher, go to your user profile (top right) → Preferences
- Enable "Extension Developer Features"
- Navigate to Extensions from the side nav
- Click the 3 dots (top right) → Developer Load
- Paste the URL from step 3, select "Persist"
- Reload the page
Enable debug logging in development:
NODE_ENV=development yarn build-pkg suse-ai-lifecycle-manageryarn build-pkg suse-ai-lifecycle-manager --mode production- The container packages the SUSE AI Lifecycle Manager (Rancher UI Extension) into a single OCI container image.
- This container is:
- Built and published during CI
- Stored in GitHub Container Registry (GHCR)
- Consumed by Rancher as an extension catalog source
- The catalog container allows:
- Versioned releases
- Immutable distribution
- Simple rollout via container tags
- The catalog container tag is derived from the Git tag:
suse-ai-lifecycle-manager-<version> → ghcr.io/suse/suse-ai-lifecycle-manager:<version>
In the examples below, <version> refers to a published extension release (e.g. 0.2.0).
Available catalog image versions are published in GitHub Container Registry: https://github.com/SUSE/suse-ai-lifecycle-manager/pkgs/container/suse-ai-lifecycle-manager
/home/plugin-server
└── plugin-contents/
├── files.txt
├── index.yaml
└── plugin/
├── index.yaml
├── package.json
├── suse-ai-lifecycle-manager
└── suse-ai-lifecycle-manager-<version>.tgz
└── suse-ai-lifecycle-manager-<version>
├── files.txt
└── plugin/
└── <plugin source code>
- Add the catalog source in the Rancher Dashboard:
- Navigate to Extensions → Manage Extensions Catalog
- Import Extension Catalog → Use the Catalog Image Reference:
ghcr.io/suse/suse-ai-lifecycle-manager:<version>→ PressLoad - From the Extensions page, Go to Manage Repositories. Verify if the SUSE AI Rancher Extension repository has the
Activestate. If not, refresh the connection. - Go back to Extensions and install SUSE AI Rancher Extension.
- Re-load Rancher Dashboard. Reload the browser to ensure the extension is loaded in the UI (ctrl+r or F5 or cmd+r).
- The "SUSE AI Lifecycle Manager" logo will now appear on the left panel of the Rancher Dashboard.
NOTE: Replace
<version>with a tag published in GitHub Container Registry. NOTE: Newly published catalogs are not always available immediately. If the catalog does not show up after publishing, navigate to Extensions → Manage Repositories and manually refresh the repository to force a re-sync.
- In addition to the OCI-based catalog container, the SUSE AI Lifecycle Manager extension can be distributed via a GitHub branch. This method hosts the extension artifacts as files within a specific branch of your repository, allowing Rancher to consume the extension directly from there.
Overview
- The extension is built into static assets (
index.yaml,.tgz, etc.) - These assets are published to a GitHub branch (example,
gh-pages) - Rancher consumes the extension catalog via the repo url and branch.
- Once the artifacts are pushed to the GitHub branch, the repository will expose the extension files like so:
https://github.com/<org>/<repo>/tree/gh-pages
├── index.yaml
├── assets/
│ ├── index.yaml
│ └── suse-ai-lifecycle-manager/
│ ├── suse-ai-lifecycle-manager-<version>.tgz
│ └── ...
├── charts/
│ └── suse-ai-lifecycle-manager/
│ ├── <version>/
│ │ ├── templates/
│ │ │ ├── _helpers.tpl
│ │ │ └── cr.yaml
│ │ ├── Chart.yaml
│ │ └── values.yaml
│ └── ...
└── extensions/
└── suse-ai-lifecycle-manager/
├── <version>/
│ ├── plugin/
│ │ └── ...
│ └── files.txt
└── ...
This structure mirrors the catalog format that Rancher expects.
- To load the extension from a GitHub branch:
- Navigate to Extensions → Manage Repositories
- Click Create New Repository
- Add a Name, then select
Git repository containing Helm chart or cluster template definitions - Enter the
Git Repo URLand theGit Branch(e.g.,gh-pages) - Click Create
- Wait until the the SUSE AI Lifecycle Manager repository has the
Activestate. - Go back to Extensions and install SUSE AI Lifecycle Manager.
- Re-load Rancher Dashboard. Reload the browser to ensure the extension is loaded in the UI (ctrl+r or F5 or cmd+r).
- The "SUSE AI Lifecycle Manager" logo will now appear on the left panel of the Rancher Dashboard.
When contributing to this extension:
- Follow Standard Patterns: Use the established domain model and store patterns
- Component Organization: Place components in appropriate directories (formatters/, validators/, pages/)
- Type Safety: Maintain strict TypeScript usage, avoid
anytypes - Internationalization: Add translation keys to l10n/en-us.json for new UI text
- Code Quality: Run
yarn lintand ensure all pre-commit hooks pass - Feature Flags: Use feature flags for new functionality
- Manual Testing: Ensure all functionality works across multi-cluster scenarios
This project uses conventional commits enforced by commitlint:
type: subject
body (optional)
footer (optional)
Valid types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, wip, deps, security
Example:
git commit -m "feat: add multi-cluster installation support"
git commit -m "fix: resolve app installation error handling"- Extension not loading: Verify URL in developer tools console
- Build errors: Check Node.js version compatibility (requires 20+)
- API errors: Verify cluster permissions and connectivity
- Linting errors: Run
cd pkg/suse-ai-lifecycle-manager && yarn lintto see details