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>