This repository is used to bootstrap the RHACM Hub cluster as well as hold the ACM configuration
I use in my homelab environment. It is referenced by the cluster-config repo for the local.hub
cluster's ACM applications (Hub, Policies and Observerability).
From the perspective of bootstrapping the Hub there are a couple of different ways to go. You could manually install OpenShift GitOps and have it bootstrap everything on the Hub including RHACM. However while I did consider that approach I'm using ACM to bootstrap my managed clusters and I wanted to use the exact same workflow if I could for the Hub. This is because I wanted to avoid having to create a tweaked workflow just for the Hub.
The bootstrap process, encapsulated in the bootstrap.sh
script, is as follows:
- Install the RHACM operator and wait for it to complete
- Install the MultiClusterHub custom resource and wait for it to be in the Running phase
- Deploy all of the RHACM policies including the policy that deploys the OpenShift GitOps operator with the bootstrap application
- Label the Hub cluster,
local-cluster
, with the labelgitops=local.hub
. This trigger the GitOps policy we deployed in step #3 to install OpenShift GitOps on the Hub cluster and deploy the bootstrap application pointing to the repo and path needed for this cluster, i.e.local.home
At this point the GitOps operator deploys everything the Hub cluster requires including storage, operators, etc as well as other ACM components. In particular, the components that the script deployed (Hub + Policies) have Argo applications that will take over managing these.
With the script bootstrapping the Hub because a one command affair. Once the command completes successfully I walk away for 20-30 minutes while everything gets sorted out.
If you are running a SNO cluster like I am and using the LVM Operator make sure that whatever device you are
using for storage with it is free. For example, if you are doing a reinstall of the hub (or other cluster), after
the cluster is provisioned but before you provision Day 2 ops ssh to the cluster and run lsblk
to make sure
the device is empty with no partitions.
A reminder for future me. :)