You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 055fa8d
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .claude/skills/pattern-author/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ When creating a new Pattern:
26
26
27
27
1.**Initialize** — Determine the Pattern name and whether secrets are needed. Run `pattern init` or `pattern init --with-secrets` in the Pattern directory.
28
28
2.**Identify requirements** — What operators, applications, and custom helm charts does this Pattern need?
29
-
3.**Define namespaces** — Add all required namespaces to the clustergroup values file (`values-<clusterGroupName>.yaml`). Include OperatorGroup configuration for operator namespaces.
29
+
3.**Define namespaces** — Add all required namespaces to the clustergroup values file (`variants/<variant>/values-<variant>.yaml`). Include OperatorGroup configuration for operator namespaces.
30
30
4.**Define subscriptions** — Add operator subscriptions with at minimum the operator `name`. Set `namespace`, `channel`, and `source` as needed.
31
31
5.**Define applications** — Wire in helm charts as applications:
32
32
- Local charts: set `path` to the chart location in the repository
@@ -234,7 +234,7 @@ Define a custom global variable and use `sharedValueFiles`:
Copy file name to clipboardExpand all lines: .claude/skills/pattern-author/reference.md
+26-3Lines changed: 26 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -79,7 +79,7 @@ global:
79
79
secretLoader:
80
80
disabled: false
81
81
main:
82
-
clusterGroupName: prod
82
+
variant: prod
83
83
multiSourceConfig:
84
84
enabled: true
85
85
clusterGroupChartVersion: 0.9.*
@@ -93,7 +93,7 @@ main:
93
93
94
94
`global.secretLoader.disabled`— When `true`, skip loading secrets. Useful for Patterns that don't use the secrets framework.
95
95
96
-
`main.clusterGroupName`— The name of the primary clustergroup. Determines which `values-<name>.yaml` file defines the main cluster. If you change this value, the next `pattern init` run creates the corresponding values file (you would need to manually delete the old unused one).
96
+
`main.variant`— The name of the primary clustergroup. Determines which `values-<variant>.yaml` file defines the main cluster, located at `variants/<variant>/values-<variant>.yaml` (see [Variants folder structure](#variants-folder-structure)). If you change this value, the next `pattern init` run creates the corresponding values file (you would need to manually delete the old unused one). This replaces the deprecated `main.clusterGroupName` field (deprecated by the Validated Patterns operator in version 0.0.78); patternizer automatically migrates `main.clusterGroupName` to `main.variant` on `init`.
97
97
98
98
`main.multiSourceConfig.enabled`— Enable ArgoCD multi-source applications. Should always be `true` for modern Patterns.
99
99
@@ -111,6 +111,27 @@ There are also some global options that can be set in `values-global.yaml` but a
111
111
112
112
`values-prod.yaml`is the values file that defines the main clustergroup of the Pattern. In hub/spoke Patterns (see [Spoke clusters](#spoke-clusters)) this would be the hub cluster. In single cluster Patterns this defines the solitary cluster. If there is one file to look at which defines the Pattern, it is this one. Its contents are explored in [The clustergroup values](#the-clustergroup-values) section.
113
113
114
+
With the [variants folder structure](#variants-folder-structure) (the layout patternizer now generates), this file lives at `variants/<variant>/values-<variant>.yaml` (e.g. `variants/prod/values-prod.yaml`) rather than at the repository root.
115
+
116
+
### Variants folder structure
117
+
118
+
Per-cluster (per-variant) values files live under a top-level `variants/` directory, with one subfolder per variant named after the variant:
119
+
120
+
```console
121
+
.
122
+
├── values-global.yaml
123
+
├── charts/
124
+
└── variants/
125
+
├── prod/
126
+
│ └── values-prod.yaml
127
+
└── standalone/
128
+
└── values-standalone.yaml
129
+
```
130
+
131
+
The Validated Patterns operator auto-detects a top-level `variants/` directory and, when `main.variant` is set, looks for per-cluster values files under `variants/<variant>/` instead of the repository root. This keeps the root uncluttered as you add more variants. This structure was introduced in operator version 0.0.78; see the [variants folder structure blog post](https://validatedpatterns.io/blog/2026-08-04-variants-folder-structure/) for details.
132
+
133
+
`patternizer init`creates and uses this structure automatically, migrating a legacy root-level `values-<variant>.yaml` into `variants/<variant>/` when present. The flat (root-level) layout is still supported by the operator; `patternizer upgrade` does not move files but prints a deprecation warning when the variant's file is missing from the variants folder.
134
+
114
135
### The Pattern CR
115
136
116
137
When you run `./pattern.sh make install` to deploy the Pattern, the values in `values-global.yaml` are passed to the [pattern-install chart](https://github.com/validatedpatterns/pattern-install-chart) by the [rhvp.cluster_utils.install](https://github.com/validatedpatterns/rhvp.cluster_utils/blob/main/playbooks/install.yml) playbook. This chart creates a subscription for the Validated Patterns Operator, a configmap with default operator configuration, and the Pattern CR:
@@ -152,6 +173,8 @@ The following values files are automatically included for each application, in t
152
173
153
174
ArgoCD is configured with `ignoreMissingValueFiles: true`, so it silently skips any of these files that do not exist. Only create the files you actually need.
154
175
176
+
When the [variants folder structure](#variants-folder-structure) is in use, the variant-specific files above (those named after the clustergroup/variant, such as `values-<variant>.yaml`) are resolved from `variants/<variant>/` instead of the repository root.
177
+
155
178
In multi-source mode (the default), values files from the Pattern repository are prefixed with `$patternref/` to tell ArgoCD which source they come from. This is handled automatically by the clustergroup chart.
156
179
157
180
Some of these values files are cross-clustergroup. For example, `values-AWS.yaml` would apply to both hub and spoke clustergroups running on AWS.
@@ -184,7 +207,7 @@ global:
184
207
pattern: ai-quickstart-rag
185
208
device: cpu # one of 'cpu' (no GPU) or 'gpu' (NVIDIA GPU)
Copy file name to clipboardExpand all lines: .cursor/skills/pattern-author/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,7 +26,7 @@ When creating a new Pattern:
26
26
27
27
1.**Initialize** — Determine the Pattern name and whether secrets are needed. Run `pattern init` or `pattern init --with-secrets` in the Pattern directory.
28
28
2.**Identify requirements** — What operators, applications, and custom helm charts does this Pattern need?
29
-
3.**Define namespaces** — Add all required namespaces to the clustergroup values file (`values-<clusterGroupName>.yaml`). Include OperatorGroup configuration for operator namespaces.
29
+
3.**Define namespaces** — Add all required namespaces to the clustergroup values file (`variants/<variant>/values-<variant>.yaml`). Include OperatorGroup configuration for operator namespaces.
30
30
4.**Define subscriptions** — Add operator subscriptions with at minimum the operator `name`. Set `namespace`, `channel`, and `source` as needed.
31
31
5.**Define applications** — Wire in helm charts as applications:
32
32
- Local charts: set `path` to the chart location in the repository
@@ -234,7 +234,7 @@ Define a custom global variable and use `sharedValueFiles`:
Copy file name to clipboardExpand all lines: .cursor/skills/pattern-author/reference.md
+26-3Lines changed: 26 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -79,7 +79,7 @@ global:
79
79
secretLoader:
80
80
disabled: false
81
81
main:
82
-
clusterGroupName: prod
82
+
variant: prod
83
83
multiSourceConfig:
84
84
enabled: true
85
85
clusterGroupChartVersion: 0.9.*
@@ -93,7 +93,7 @@ main:
93
93
94
94
`global.secretLoader.disabled`— When `true`, skip loading secrets. Useful for Patterns that don't use the secrets framework.
95
95
96
-
`main.clusterGroupName`— The name of the primary clustergroup. Determines which `values-<name>.yaml` file defines the main cluster. If you change this value, the next `pattern init` run creates the corresponding values file (you would need to manually delete the old unused one).
96
+
`main.variant`— The name of the primary clustergroup. Determines which `values-<variant>.yaml` file defines the main cluster, located at `variants/<variant>/values-<variant>.yaml` (see [Variants folder structure](#variants-folder-structure)). If you change this value, the next `pattern init` run creates the corresponding values file (you would need to manually delete the old unused one). This replaces the deprecated `main.clusterGroupName` field (deprecated by the Validated Patterns operator in version 0.0.78); patternizer automatically migrates `main.clusterGroupName` to `main.variant` on `init`.
97
97
98
98
`main.multiSourceConfig.enabled`— Enable ArgoCD multi-source applications. Should always be `true` for modern Patterns.
99
99
@@ -111,6 +111,27 @@ There are also some global options that can be set in `values-global.yaml` but a
111
111
112
112
`values-prod.yaml`is the values file that defines the main clustergroup of the Pattern. In hub/spoke Patterns (see [Spoke clusters](#spoke-clusters)) this would be the hub cluster. In single cluster Patterns this defines the solitary cluster. If there is one file to look at which defines the Pattern, it is this one. Its contents are explored in [The clustergroup values](#the-clustergroup-values) section.
113
113
114
+
With the [variants folder structure](#variants-folder-structure) (the layout patternizer now generates), this file lives at `variants/<variant>/values-<variant>.yaml` (e.g. `variants/prod/values-prod.yaml`) rather than at the repository root.
115
+
116
+
### Variants folder structure
117
+
118
+
Per-cluster (per-variant) values files live under a top-level `variants/` directory, with one subfolder per variant named after the variant:
119
+
120
+
```console
121
+
.
122
+
├── values-global.yaml
123
+
├── charts/
124
+
└── variants/
125
+
├── prod/
126
+
│ └── values-prod.yaml
127
+
└── standalone/
128
+
└── values-standalone.yaml
129
+
```
130
+
131
+
The Validated Patterns operator auto-detects a top-level `variants/` directory and, when `main.variant` is set, looks for per-cluster values files under `variants/<variant>/` instead of the repository root. This keeps the root uncluttered as you add more variants. This structure was introduced in operator version 0.0.78; see the [variants folder structure blog post](https://validatedpatterns.io/blog/2026-08-04-variants-folder-structure/) for details.
132
+
133
+
`patternizer init`creates and uses this structure automatically, migrating a legacy root-level `values-<variant>.yaml` into `variants/<variant>/` when present. The flat (root-level) layout is still supported by the operator; `patternizer upgrade` does not move files but prints a deprecation warning when the variant's file is missing from the variants folder.
134
+
114
135
### The Pattern CR
115
136
116
137
When you run `./pattern.sh make install` to deploy the Pattern, the values in `values-global.yaml` are passed to the [pattern-install chart](https://github.com/validatedpatterns/pattern-install-chart) by the [rhvp.cluster_utils.install](https://github.com/validatedpatterns/rhvp.cluster_utils/blob/main/playbooks/install.yml) playbook. This chart creates a subscription for the Validated Patterns Operator, a configmap with default operator configuration, and the Pattern CR:
@@ -152,6 +173,8 @@ The following values files are automatically included for each application, in t
152
173
153
174
ArgoCD is configured with `ignoreMissingValueFiles: true`, so it silently skips any of these files that do not exist. Only create the files you actually need.
154
175
176
+
When the [variants folder structure](#variants-folder-structure) is in use, the variant-specific files above (those named after the clustergroup/variant, such as `values-<variant>.yaml`) are resolved from `variants/<variant>/` instead of the repository root.
177
+
155
178
In multi-source mode (the default), values files from the Pattern repository are prefixed with `$patternref/` to tell ArgoCD which source they come from. This is handled automatically by the clustergroup chart.
156
179
157
180
Some of these values files are cross-clustergroup. For example, `values-AWS.yaml` would apply to both hub and spoke clustergroups running on AWS.
@@ -184,7 +207,7 @@ global:
184
207
pattern: ai-quickstart-rag
185
208
device: cpu # one of 'cpu' (no GPU) or 'gpu' (NVIDIA GPU)
0 commit comments