The Cluster-api-installer repository creates Helm charts for Cluster-API (CAPI) and its providers, designed for deployment on OpenShift clusters. The MultiClusterEngine operator utilizes these Helm charts to deploy CAPI and its providers as components of the MultiClusterEngine.
Currently supported providers:
- Cluster-API-provider-AWS (CAPA)
- Cluster-API-provider-Azure (CAPZ)
- Cluster-API-provider-Metal3 (CAPM3)
- Cluster-API-provider-OpenShift-Assisted
CAPI components require the cert-manager operator to generate the necessary certificates. The Cluster-api-installer modifies the CAPI Helm charts to leverage the cert-serve-service (certificate service) that already exists within the OpenShift cluster, instead of relying on the cert-manager operator.
The cluster-api-installer syncs the changes from the upstream repos to the chart directory:
- Core CAPI provider →
charts/cluster-api - CAPA - AWS provider →
charts/cluster-api-provider-aws - CAPM3 - Metal3 provider →
charts/cluster-api-provider-metal3 - OpenShift Assisted provider →
charts/cluster-api-provider-openshift-assisted
The synchronization process synchronizes the Kubernetes deployment and creates a Helm chart (used for the Backplane Operator).
The synchronizations are defined in charts/Makefile:
OCP_VERSION ?= 4.21
DEFAULT_BRANCH ?= release-4.21
CAPA_BRANCH ?= backplane-2.11
CAPZ_BRANCH ?= backplane-2.11
OPENSHIFT_ASSISTED_BRANCH ?= backplane-2.11
METAL3_BRANCH ?= release-4.21
DEFAULT_ORGREPO ?= https://github.com/openshift
STOLOSTRON_ORGREPO ?= https://github.com/stolostron
OPENSHIFT_ASSISTED_ORGREPO ?= https://github.com/openshift-assistedWhere:
OCP_VERSION... the base for:- Controller image version - used in the Kubernetes deployment
- Helm chart version (version in Chart.yaml)
BRANCH... the branch from which we will sync the changes for each providerORGREPO... source repository URLs
Then (for each provider project):
- The Git repository
$ORGREPO/$PROJECTwill be cloned intoout/$PROJECT, and the$BRANCHwill be checked out into theouttemporary directory. - The
src/$PROJECT.yamlfile with the source objects (before transformation - see below) will be created. - The synchronization of CRDs and Helm chart templates will begin, and the necessary files will be created/updated in the
charts/$PROJECT/crdsandcharts/$PROJECT/templatesdirectories.- Synchronization is performed using Kustomize transformations defined in the
config/$PROJECTfolder.
- Synchronization is performed using Kustomize transformations defined in the
- The version in
charts/$PROJECT/Chart.yamland theimage.tagincharts/cluster-api/values.yamlwill be updated based on$OCP_VERSION. - You can view the changes (using
git status) in:- The sources before transformation - in the
src/$PROJECT.yamlfile. - The target Helm charts in the
charts/$PROJECTdirectory.
- The sources before transformation - in the
There are also GitHub workflows for synchronization.
See this documentation if you want to add a new provider.
- To sync:
make- This will sync all charts.- You can view the changes using
git statusafter a successful command. - To speed up testing (skip
git pull ...), use:export SKIP_CLONE=true; make
- You can view the changes using
- To use Docker, run:
make build-docker
- The result should be the same as
make. - A Docker container is used for a more unified build environment.
- Use this if you encounter issues with the standard
makecommand. - NOTE: if we want to use a different container engine, set CONTAINER_ENGINE environment variable (i.e.
export CONTAINER_EINGINE=podman)
- The result should be the same as
- To check chart deployment:
make test-charts-crc
- To delete CRC before testing:
export CRC_DELETE=true; make test-charts-crc
- To delete CRC before testing:
- To clean all temporary files:
make clean