Management-cluster-only Helm chart. Install once on the cluster that runs ACM + hub OpenShift GitOps. After install, Argo CD manages the rest automatically.
For a full end-to-end setup guide see RUNBOOK.md.
ManagedClusterSet(one per entry inclusterSets) —dev,preprod,prodfor ROSA spokes;managementfor the management cluster (local-cluster)ManagedClusterSetBinding(one per set) — exposes each set toopenshift-gitopsnamespacePlacement(one per entry inplacements) — selects clusters byplatform/clusterTypelabel within the named clusterSetGitOpsCluster(one per Placement) — registers matched clusters in hub Argo CDApplicationSet(one per entry inapplicationSets) — fans outhelm-catalog/spoke-argocd-bootstrapto matched clusters
Bootstrap chart lives in the helm-catalog repo. This chart only installs Argo CD and ACM objects.
# From a local checkout of hub-gitops/
helm install hub-platform . \
--namespace openshift-gitops \
--create-namespaceOverride values at install time or edit values.yaml first:
helm install hub-platform . \
--namespace openshift-gitops \
--create-namespace \
--set global.helmCatalogRepoURL=https://github.com/YOUR_ORG/helm-catalog.git \
--set global.platformAppsRepoURL=https://github.com/YOUR_ORG/platform-apps.git \
--set global.platformConfigRepoURL=https://github.com/YOUR_ORG/platform-config.githelm upgrade hub-platform . --namespace openshift-gitopsImportant — this chart is NOT managed by Argo CD. Unlike spoke workloads,
hub-gitopsis a manually installed Helm release. Changes tovalues.yamlor any template (ApplicationSets, Placements, ClusterSets) are not picked up automatically when you push to Git. You must runhelm upgradeexplicitly after every change.Common changes that require an upgrade:
- Adding or removing an entry in
applicationSets,clusterSets, orplacements- Changing
clusterType,region,prune, orrequeueAfterSecondson an ApplicationSet- Updating any of the three
global.*RepoURLvaluesAfter upgrading, the updated
ApplicationSetresources are re-applied immediately. Any in-flightApplicationobjects they manage (e.g.platform-bootstrap-digital) will be regenerated on the next ApplicationSet reconcile cycle (requeueAfterSeconds, default 180s) — or trigger an immediate refresh using the commands in Forcing ApplicationSet reconciliation in the runbook.
helm uninstall hub-platform --namespace openshift-gitopsNote: ACM ManagedClusterSet resources have a finalizer. Verify no managed clusters depend on them before uninstalling.
Key values (values.yaml)
| Key | Purpose |
|---|---|
global.helmCatalogRepoURL |
Source for spoke-argocd-bootstrap chart |
global.platformAppsRepoURL |
Passed into bootstrap chart (root app source) |
global.platformConfigRepoURL |
Passed into bootstrap chart (config source) |
clusterSets |
List of {name} — one ManagedClusterSet + ManagedClusterSetBinding per entry. Sets: dev, preprod, prod, management |
placements |
List of {name, clusterSet, clusterTypes[]} — one Placement + GitOpsCluster per entry |
applicationSets |
List of {name, placement, requeueAfterSeconds, prune, extraValues?} — one ApplicationSet per entry |
applicationSets[].prune |
true = bootstrap Application is deleted when cluster label is removed. Default false. Set false for prod to prevent accidental teardown |
applicationSets[].extraValues |
Optional key/value pairs merged into the bootstrap chart's Helm values (e.g. installOpenShiftGitOps: false for the hub) |
Apply after import so the correct ApplicationSet starts selecting the cluster:
oc label managedcluster <name> \
cluster.open-cluster-management.io/clusterset=<dev|preprod|prod> \
platform/clusterType=<dev|preprod|prod> \
platform/clusterGroup=<payments|digital|mortgages> \
platform/region=eu-west-1 \
platform/version=main \
--overwriteoc label managedcluster local-cluster \
cluster.open-cluster-management.io/clusterset=management \
platform/clusterType=management \
platform/clusterGroup=eng-hub \
platform/region=eu-west-1 \
platform/version=main \
--overwriteEach ApplicationSet in values.yaml has automated.selfHeal: true (always on) and a configurable prune toggle:
| Tier | Default prune |
Rationale |
|---|---|---|
bootstrap-dev |
true |
Clean up stale resources automatically |
bootstrap-preprod |
true |
Mirror dev behaviour for realism |
bootstrap-prod |
false |
Never auto-delete prod workloads — manual action required |
hub-self-management |
true |
Management cluster manages itself; removing the label is intentional |
To override: edit applicationSets[].prune in values.yaml and run helm upgrade.
- Add a new entry to
clusterSets,placements, andapplicationSetsinvalues.yaml. - Run
helm upgrade hub-platform . --namespace openshift-gitops.
helm template hub-platform . --namespace openshift-gitops