|
| 1 | +# rhoso-apps Helm chart |
| 2 | + |
| 3 | +This chart renders Argo CD `Application` resources to deploy Red Hat OpenStack Services on OpenShift (RHOSO) and related manifests from Git. Chart-wide defaults apply to every rendered application; each entry under `applications` is optional and can be toggled or overridden independently. |
| 4 | + |
| 5 | +## Chart-wide values |
| 6 | + |
| 7 | +| Key | Type | Description | |
| 8 | +|-----|------|-------------| |
| 9 | +| `applicationNamespace` | string | Namespace for the Argo CD `Application` CRs (`metadata.namespace`). Default: `openshift-gitops`. | |
| 10 | +| `destinationServer` | string | `spec.destination.server` for every application. Default: `https://kubernetes.default.svc`. | |
| 11 | + |
| 12 | +This chart does not set `spec.destination.namespace`; only `destination.server` is set (from `destinationServer`). |
| 13 | + |
| 14 | +## Per-application keys (`applications.<name>`) |
| 15 | + |
| 16 | +Each `<name>` is a unique key (DNS-1123). Set `enabled: true` to render that `Application`; set `enabled: false` to skip it. |
| 17 | + |
| 18 | +| Key | Type | Description | |
| 19 | +|-----|------|-------------| |
| 20 | +| `enabled` | bool | If `true`, render an `Application` CR; if `false`, skip. | |
| 21 | +| `repoURL` | string | `spec.source.repoURL` (Git URL). | |
| 22 | +| `path` | string | Directory in the repo; empty uses default `"."`. | |
| 23 | +| `targetRevision` | string | Branch, tag, or commit; empty uses default `"HEAD"`. | |
| 24 | +| `syncWave` | string | `argocd.argoproj.io/sync-wave` annotation. | |
| 25 | +| `syncOptions` | list | Optional strings merged into `spec.syncPolicy.syncOptions` (for example `Prune=true`). | |
| 26 | +| `kustomize` | map | Optional; passed to `spec.source.kustomize` (`namePrefix`, `patches`, `components`, etc.). See [Argo CD Kustomize](https://argo-cd.readthedocs.io/en/stable/user-guide/kustomize/). | |
| 27 | +| `finalizers` | list | `metadata.finalizers` (Argo CD resources finalizer). Valid: `resources-finalizer.argocd.argoproj.io/background` or `.../foreground`. Omit to use chart default (background). | |
| 28 | +| `project` | string | Argo CD `AppProject`; default `default` if unset. | |
| 29 | +| `syncPolicy` | map | Merged with `syncOptions` into `spec.syncPolicy`. | |
| 30 | + |
| 31 | +### Adding a new application |
| 32 | + |
| 33 | +Copy a block under `applications`, choose a unique key, set `enabled: true`, and set `repoURL`, `path`, and `targetRevision` as needed. |
| 34 | + |
| 35 | +### Default applications (from `values.yaml`) |
| 36 | + |
| 37 | +These entries ship enabled by default; each has a `syncWave` that defines Argo CD apply order (lower waves first). |
| 38 | + |
| 39 | +| Application | Purpose (summary) | Default `syncWave` | |
| 40 | +|-------------|---------------------|--------------------| |
| 41 | +| `operator-dependencies` | MetalLB, nmstate, cert-manager | `-20` | |
| 42 | +| `openstack-operator` | OpenStack operator | `-20` | |
| 43 | +| `openstack-operator-cr` | Main OpenStack custom resource | `-15` | |
| 44 | +| `openstack-secrets` | Vault secrets operator | `-10` | |
| 45 | +| `openstack-networks` | Control plane and dataplane networks | `0` | |
| 46 | +| `openstack-controlplane` | `OpenStackControlPlane` | `10` | |
| 47 | +| `openstack-dataplane` | Data plane node set and deployment | `20` | |
| 48 | + |
| 49 | +## Default application ordering (sync waves) |
| 50 | + |
| 51 | +Replace the placeholder below with a diagram of the default sync-wave ordering for the applications listed in `values.yaml`. |
| 52 | + |
| 53 | +```mermaid |
| 54 | +flowchart TD |
| 55 | +A["operator-dependencies (-20)"] --> C["openstack-operator-cr (-15)"] |
| 56 | +B["openstack-operator (-20)"] --> C["openstack-operator-cr (-15)"] |
| 57 | +C --> D["openstack-secrets (-10)"] |
| 58 | +D --> E["openstack-networks (0)"] |
| 59 | +E --> F["openstack-controlplane (10)"] |
| 60 | +F --> G["openstack-dataplane (20)"] |
| 61 | +``` |
| 62 | + |
| 63 | +## Layered values and partial overrides |
| 64 | + |
| 65 | +Helm merges values files left to right: later files override earlier ones. Keep a **base** `values.yaml` (or your fork of the chart defaults) and add **environment** files that only change what differs (for example one Git revision, one path, or a single application). |
| 66 | + |
| 67 | +### Install with base + environment file |
| 68 | + |
| 69 | +```bash |
| 70 | +helm install deploy-rhoso . \ |
| 71 | + -f values.yaml \ |
| 72 | + -f values-prod.yaml |
| 73 | +``` |
| 74 | + |
| 75 | +Use any release name and paths; `values-prod.yaml` can be minimal. |
| 76 | + |
| 77 | +### Example: override Git revision for all apps that share defaults |
| 78 | + |
| 79 | +`values-revision.yaml`: |
| 80 | + |
| 81 | +```yaml |
| 82 | +applications: |
| 83 | + operator-dependencies: |
| 84 | + targetRevision: main |
| 85 | + openstack-operator: |
| 86 | + targetRevision: main |
| 87 | + openstack-operator-cr: |
| 88 | + targetRevision: main |
| 89 | + openstack-secrets: |
| 90 | + targetRevision: main |
| 91 | + openstack-networks: |
| 92 | + targetRevision: main |
| 93 | + openstack-controlplane: |
| 94 | + targetRevision: main |
| 95 | + openstack-dataplane: |
| 96 | + targetRevision: main |
| 97 | +``` |
| 98 | +
|
| 99 | +```bash |
| 100 | +helm template deploy-rhoso . -f values.yaml -f values-revision.yaml |
| 101 | +``` |
| 102 | + |
| 103 | +### Example: change only one application |
| 104 | + |
| 105 | +Disable or repoint a single app without repeating the rest of `values.yaml`: |
| 106 | + |
| 107 | +`values-disable-dataplane.yaml`: |
| 108 | + |
| 109 | +```yaml |
| 110 | +applications: |
| 111 | + openstack-dataplane: |
| 112 | + enabled: false |
| 113 | +``` |
| 114 | +
|
| 115 | +`values-custom-controlplane-path.yaml`: |
| 116 | + |
| 117 | +```yaml |
| 118 | +applications: |
| 119 | + openstack-controlplane: |
| 120 | + path: environments/prod/controlplane |
| 121 | + targetRevision: v1.2.3 |
| 122 | +``` |
| 123 | + |
| 124 | +```bash |
| 125 | +helm install deploy-rhoso . -f values.yaml -f values-custom-controlplane-path.yaml |
| 126 | +``` |
| 127 | + |
| 128 | +### Example: Kustomize overrides for one application |
| 129 | + |
| 130 | +`values-dev-prefix.yaml`: |
| 131 | + |
| 132 | +```yaml |
| 133 | +applications: |
| 134 | + openstack-networks: |
| 135 | + kustomize: |
| 136 | + namePrefix: dev- |
| 137 | +``` |
| 138 | + |
| 139 | +### Example: chart-wide + per-app in one overlay |
| 140 | + |
| 141 | +`values-staging.yaml`: |
| 142 | + |
| 143 | +```yaml |
| 144 | +destinationServer: https://kubernetes.default.svc |
| 145 | +applications: |
| 146 | + openstack-operator: |
| 147 | + targetRevision: staging |
| 148 | + openstack-controlplane: |
| 149 | + syncWave: "15" |
| 150 | +``` |
| 151 | + |
| 152 | +Later keys win for the same path; unspecified keys under `applications.<name>` keep values from `values.yaml`. |
| 153 | + |
| 154 | +## See also |
| 155 | + |
| 156 | +- [Argo CD Application specification](https://argo-cd.readthedocs.io/en/stable/operator-manual/application-specification/) |
| 157 | +- Chart templates: `templates/application.yaml`, `templates/_helpers.tpl` |
0 commit comments