This repository contains Helm charts for official UI Plugins (Extensions) from Rancher
In order to have the ui-plugin-charts
available in an air-gapped instance of Rancher manager, the ui-plugin-catalog
image needs to accessible to the air-gapped node. After mirroring this image to a private registry, it can be deployed with an exposed service to target as a Helm repository.
- Mirror the
ui-plugin-catalog
image into a private registry.
export REGISTRY_ENDPOINT="my-private-registry.com"
docker pull rancher/ui-plugin-catalog:1.0.0
docker tag rancher/ui-plugin-catalog:1.0.0 $REGISTRY_ENDPOINT/rancher/ui-plugin-catalog:1.0.0
docker push $REGISTRY_ENDPOINT/rancher/ui-plugin-catalog:1.0.0
- Create a Deployment with the mirrored image.
apiVersion: apps/v1
kind: Deployment
metadata:
name: ui-plugin-catalog
namespace: cattle-ui-plugin-system
labels:
catalog.cattle.io/ui-extensions-catalog-image: ui-plugin-catalog
spec:
replicas: 1
selector:
matchLabels:
catalog.cattle.io/ui-extensions-catalog-image: ui-plugin-catalog
template:
metadata:
namespace: cattle-ui-plugin-system
labels:
catalog.cattle.io/ui-extensions-catalog-image: ui-plugin-catalog
spec:
containers:
- name: server
image: my-private-registry.com/rancher/ui-plugin-catalog:1.0.0
imagePullPolicy: Always
imagePullSecrets:
- name: my-registry-credentials
- Create a ClusterIP Service to expose the Deployment.
apiVersion: v1
kind: Service
metadata:
name: ui-plugin-catalog-svc
namespace: cattle-ui-plugin-system
spec:
ports:
- name: catalog-svc-port
port: 8080
protocol: TCP
targetPort: 8080
selector:
catalog.cattle.io/ui-extensions-catalog-image: ui-plugin-catalog
type: ClusterIP
- Create a
ClusterRepo
targeting the ClusterIP Service.
apiVersion: catalog.cattle.io/v1
kind: ClusterRepo
metadata:
name: ui-plugin-catalog-repo
spec:
url: http://ui-plugin-catalog-svc.cattle-ui-plugin-system:8080
After creation of these resources, the ui-plugin-charts listed in the manifest are now available to be installed within the air-gapped instance of Rancher Manager.
-
Charts must be Helm 3 compatible.
-
Chart must be published in a public Github repository that we can reference.
1. Fork the UI Plugin Charts repository, clone your fork, checkout the main branch and pull the latest changes.
Then create a new branch off of main
{
"extensions": {
"kubewarden": {
"repo": "rancher/kubewarden-ui",
"branch": "gh-pages",
"versions": [
"1.0.0",
"1.1.0",
"1.2.0
]
}
}
}
git add manifest.json
git commit -m "Submitting rancher/kubewarden-ui version 1.2.0"
git push origin <your_branch>
Once your pull request is approved and merged, an automated workflow will sync this repository with the build assets from the supplied repository within the manifest.json
file. When fully synced, a new release will be created and added to the releases section.
Required properties for manifest.json
Property | Type | Description |
---|---|---|
[extension key] |
Object |
This object is representative of the Extension package name. For example, the clock package within the ui-plugin-examples repository, clock would be the extension key. |
repo |
String |
Defines the upstream Github repository to pull the build assets from. |
branch |
String |
Defines which branch to pull from the upstream repo |
versions |
String[] |
An array of version strings which correspond to the Extension package version(s) to be synced with this repository. For example, the clock extension package has two versions, 0.1.0 and 0.2.0 would be added. |
{
"extensions": {
"elemental": {
"repo": "rancher/elemental-ui",
"branch": "main",
"versions": [
"1.2.0",
"1.1.0",
"1.0.0"
]
},
"kubewarden": {
"repo": "kubewarden/ui",
"branch": "gh-pages",
"versions": [
"1.0.0",
"1.0.1",
"1.0.2",
"1.0.3",
"1.0.4",
"1.0.5",
"1.0.6",
"1.1.0",
"1.2.0"
]
}
}
}