A curated collection of Rancher 2.0 enhanced Helm charts. To see how catalogs are added and used in Rancher 2.0 take a look at the [docs page](https://rancher.com/docs/rancher/v2.x/en/concepts/catalogs/).
## Rancher Chart Structure
A Rancher chart repository differs slightly in directory structure from upstream repos in that it includes an `app version` directory. Though Rancher can use native Helm repositories as well.
A Rancher chart also has two additional files an `app-readme.md` file that provides a high level overview display in the Rancher 2.0 UI and a `questions.yml` file defining questions to prompt the user with.
```
charts/wordpress/<app version>/
app-readme.md # Rancher Specific: Readme file for display in Rancher 2.0 UI
README.md # Optional: Helm Readme file (will be rendered in Rancher 2.0 UI as well)
requirements.yaml # Optional YAML file listing dependencies for the chart
templates/ # A directory of templates that, when combined with values.yml will generate K8s YAML
values.yaml # The default configuration values for this chart
```
*See the upstream Helm chart [developer reference](https://helm.sh/docs/topics/chart_template_guide/) for a complete walk through of developing charts.*
To convert an upstream chart to take advantage of Rancher's enhanced UX, first create an `app-readme.md` file in the root of your chart.
```
$ cat ./app-readme.md
# Wordpress ROCKS!
```
Then add a `questions.yml` file to prompt the user for something.
```
categories:
- Blog
- CMS
questions:
- variable: persistence.enabled
default: "false"
description: "Enable persistent volume for WordPress"
type: boolean
required: true
label: WordPress Persistent Volume Enabled
show_subquestion_if: true
group: "WordPress Settings"
subquestions:
- variable: persistence.size
default: "10Gi"
description: "WordPress Persistent Volume Size"
type: string
label: WordPress Volume Size
- variable: persistence.storageClass
default: ""
description: "If undefined or null, uses the default StorageClass. Default to null"
type: storageclass
label: Default StorageClass for WordPress
```
The above will prompt the user with a true / false radio button in the UI for enabling persistent storage. If the user choses to enable persistent storage they will be prompted for a storage class and volume size.
The above file also provides a list of categories that this chart fits into. This helps users navigate and filtering when browsing the catalog UI.
| variable | string | true | define the variable name specified in the `values.yaml`file, using `foo.bar` for nested object. |
| label | string | true | define the UI label. |
| description | string | false | specify the description of the variable.|
| type | string | false | default to `string` if not specified (current supported types are string, multiline, boolean, int, enum, password, storageclass, hostname, pvc, and secret).|
| required | bool | false | define if the variable is required or not (true \| false)|
| group | string | false | group questions by input value. |
| min_length | int | false | min character length.|
| max_length | int | false | max character length.|
| min | int | false | min integer length. |
| max | int | false | max integer length. |
| options | []string | false | specify the options when the vriable type is `enum`, for example: options:<br> - "ClusterIP" <br> - "NodePort" <br> - "LoadBalancer"|