Catalog
Users can use RCTL to create custom catalogs and automate the creation of Add-On and Workload from Catalog.
Create/Update Custom Catalog¶
Users can create/update a custom catalog using a YAML spec that you can store in a Git repository.
The below rctl command is to create/update a custom catalog
./rctl apply -f catalog_file.yml
An illustrative example of the custom catalog YAML file is shown below. Remove the highlighted (yellow) parameters to not share the catalog with other project(s)
apiVersion: apps.k8smgmt.io/v3
kind: Catalog
metadata:
name: demo-catalog
project: defaultproject
spec:
autoSync: true
repository: demorepo
type: HelmRepository
sharing:
enabled: true
projects:
- name: project1
Create/Update Workload Template from Catalog¶
Users can create/update a workload template from catalog using a YAML spec that you can store in a Git repository.
The below rctl command is to create/update a Workload Template from Catalog
./rctl apply -f workloadtemplate_filename.yaml --v3
An illustrative example of the workload template spec YAML file is shown below
apiVersion: apps.k8smgmt.io/v3
kind: WorkloadTemplate
metadata:
name: wl-temp-cat
project: defaultproject
spec:
artifact:
artifact:
chartName: nginx
chartVersion: 10.2.1
catalog: default-bitnami
valuesPaths:
- name: file://nginx-values.yaml
options:
maxHistory: 10
timeout: 5m0s
type: Helm
Create/Update Add-On from Catalog¶
Users can create/update an add-on from catalog using a YAML spec that you can store in a Git repository.
The below rctl command is to create/update an Add-On from Catalog
./rctl apply -f catalog-addon_filename.yaml --v3
An illustrative example of the add-on spec YAML file is shown below
apiVersion: infra.k8smgmt.io/v3
kind: Addon
metadata:
name: addon-number5-rctlv3
project: demo-project
spec:
artifact:
artifact:
catalog: default-bitnami
chartName: apache
chartVersion: 9.1.0
valuesPaths:
- name: file://apache-values.yaml
options:
maxHistory: 1
timeout: 1m0s
type: Helm
namespace: fleet-ns1
sharing:
enabled: false
version: v1
Create/Update Workload from Catalog¶
Users can create/update a workload from catalog using a YAML spec that you can store in a Git repository.
The below rctl command is to create/update an Workload from Catalog
./rctl apply -f catalog-workload_filename.yaml --v3
An illustrative example of the workload spec YAML file is shown below
apiVersion: apps.k8smgmt.io/v3
kind: Workload
metadata:
name: workload-rctlv3-1
project: demo_project
spec:
artifact:
artifact:
catalog: default-bitnami
chartName: nats
chartVersion: 7.1.0
valuesPaths:
- name: file://nats-values.yaml
options:
maxHistory: 2
timeout: 1m0s
type: Helm
drift:
enabled: false
namespace: teststage
placement:
selector: rafay.dev/clusterName=aks-stage114x-1
version: workload-rctlv3-1-v1
List Catalog¶
Use the below command to retrieve the list of catalogs. The name of the addons, the type of payload and publish status are returned. An illustrative example is shown below where RCTL retrieves the list of catalogs
./rctl get catalog
+-------------------+----------------+------------------------+-----------+
| CATALOG NAME | CATALOG TYPE | REPOSITORY | AUTO SYNC |
+-------------------+----------------+------------------------+-----------+
| nexus | HelmRepository | nexus-repo | true |
+-------------------+----------------+------------------------+-----------+
| nexus-private | HelmRepository | nexus-private-repo | true |
+-------------------+----------------+------------------------+-----------+
| nexus-rctl5 | HelmRepository | nexus-repo | true |
+-------------------+----------------+------------------------+-----------+
| nexus-rctl6 | HelmRepository | nexus-repo | true |
+-------------------+----------------+------------------------+-----------+
Get Specific Catalog Info¶
To get a specific catalog details, apply the below command with the catalog name
./rctl get catalog nexus-private
+-------------------+----------------+------------------------+-----------+
| CATALOG NAME | CATALOG TYPE | REPOSITORY | AUTO SYNC |
+-------------------+----------------+------------------------+-----------+
| nexus-private | HelmRepository | nexus-private-repo | true |
+-------------------+----------------+------------------------+-----------+
Or you can use below command to get more information of the catalog in json or yaml format
./rctl get catalog <catalog-name> -o json
./rctl get catalog <catalog-name> -o yaml
Example:
./rctl get catalog nexus -o yaml
apiversion: apps.k8smgmt.io/v3
kind: Catalog
metadata:
name: nexus
description: ""
labels: {}
annotations: {}
project: defaultproject
id: ""
modifiedat: null
projectid: ""
spec:
type: HelmRepository
iconurl: ""
repository: nexus-repo
autosync: true
sharing:
enabled: true
projects:
- name: '*'
id: ""
status:
conditiontype: CatalogSync
conditionstatus: 2
lastupdated:
seconds: 1673256010
nanos: 772816026
reason: catalog synced
extra: null
Delete Catalog¶
Use the below command to delete a catalog
./rctl delete catalog <catalog-name>