Validated Patterns

Installation steps

The pattern executes the following steps on the cluster. Hub and spoke chart values differ by install variant; see Variant installation differences.

  1. Apply Subscriptions and Applications to the hub cluster.

  2. Install Red Hat Advanced Cluster Management (RHACM), OpenShift Data Foundation, and the OpenShift Data Foundation Multicluster Orchestrator on the hub cluster for the odf variant. Partner variants install Red Hat Advanced Cluster Management (RHACM), Multicluster Orchestrator (Ramen), OpenShift Virtualization, and OADP without ODF StorageSystem or MirrorPeer.

  3. Build managed clusters (ocp-primary and ocp-secondary) with Hive.

    1. The managed clusters have identical subscription and application configuration, so they are both in the resilient cluster group.

  4. The opp-policy application is responsible for copying CA certificates to the following places:

    1. Creating a cluster-proxy-ca-bundle ConfigMap in the openshift-config namespace.

    2. Assigning this ConfigMap to the proxy cluster resource.

    3. Adding the certificate material to the ramen-dr-cluster-operator config in openshift-dr-system.

  5. The regional-dr application is responsible for:

    1. Ensuring ODF is set up properly (odf variant).

    2. Installing Submariner add-ons on managed clusters (odf variant; disabled for partner variants).

    3. Creating DRPolicy, MirrorPeer, DRPC, and Placement objects for RamenDR (odf variant).

    4. Creating DRClusters and hub s3StoreProfiles without DRPC or VMs (drpartner-s4 variant).

    5. Installing the VM workload on the primary cluster (odf variant).

    6. Disabling sync on the regional-dr application after settlement to prevent potential conflicts later.

Variant installation differences

The pattern uses the clustergroup/RHACM variants/ folder layout. When variants/ is present, the patterns-operator sets global.vpNewFolderDir=true. Spoke configuration nests under each variant as variants/<variant>/values-<managedClusterGroup.name>.yaml.

Cluster provisioning (Hive vs BYOC)

By default, Hive provisions ocp-primary and ocp-secondary on AWS through Red Hat Advanced Cluster Management (RHACM). Set byoc: true in overrides/values-cluster-names.yaml to use existing regional DR clusters instead. Add their kubeconfigs to your secrets file and run ./pattern.sh make install-byoc. See Using bring your own cluster (BYOC) for requirements and configuration steps.

ModeInstall commandManaged clusters

Hive (default)

./pattern.sh make install

Hive creates and registers ocp-primary and ocp-secondary

BYOC

./pattern.sh make install-byoc

You provision and register clusters; pattern validates kubeconfigs before install

Variant component differences

Componentodfdrpartner-s4drpartner-minimal

Hub DRClusters

MirrorPeer / Multicluster Orchestrator

regional-dr (ramen.infrastructureEnabled)

none

Hub s3StoreProfiles

MirrorPeer / Multicluster Orchestrator

regional-dr upsert (ensureBuckets: false)

none

S3 buckets

ODF

vp-s4-storage (s4Role.buckets)

none

CA on profiles

opp-policy s3CaInjector

opp-policy s3CaInjector

n/a

Submariner

enabled

disabled

disabled

DRPolicy / DRPC / VMs

2m-vm DRPolicy, DRPC, VMs

2m-novm only; no DRPC or VMs

none

odf-dr application

yes

no

no

Variant layout

values-global.yaml
variants/
  odf/
    values-odf.yaml
    values-resilient.yaml              # full ODF spoke BOM
  drpartner-s4/
    values-drpartner-s4.yaml
    values-resilient.yaml              # partner spoke BOM (no ODF)
    values-regional-dr.yaml            # infrastructureEnabled: DRClusters + 2m-novm only + hub s3StoreProfiles
    values-console-plugins-*.yaml
  drpartner-minimal/
    values-drpartner-minimal.yaml      # no vp-s4-storage
    values-resilient.yaml
    values-regional-dr.yaml            # resourcesEnabled + infrastructureEnabled false
    values-opp-policy.yaml             # submariner.enabled: false
    values-console-plugins-*.yaml
overrides/                             # shared hub/spoke chart overrides

Set the variant in values-global.yaml:

main:
  variant: drpartner-s4

Chart overrides live in the pattern repository. For TLS/CA roles and certificate chart references, see TLS and CA on the Architecture page.

Pattern scripts

  • scripts/cleanup-gitops-vms-non-primary.sh

Designed to be run when you need to manually clean up resources from a "failed" cluster. Intended to be run with the kubeconfig from the hub cluster; it will determine where to delete resources based on the current DRPC state. Applies to the odf variant.

  • scripts/download-kubeconfigs.sh

Downloads and extracts the kubeconfigs for the managed clusters to the current directory. Useful when you need to check something or do something on one of the managed clusters.

  • charts/hub/opp/scripts/argocd-health-monitor.sh

Ensures that ArgoCD is progressing properly in deploying resources. A workaround for an ArgoCD bug encountered during development.

  • charts/hub/opp/scripts/odf-ssl-precheck.sh

Ensures all the preconditions have been met for extracting certificates to distribute among the clusters.

  • charts/hub/opp/scripts/odf-ssl-certificate-extraction.sh

Extracts and distributes the CA material to the places it needs to go. Will also restart velero (OADP) pods if needed.

  • charts/hub/rdr/scripts/odf-dr-prerequisites-check.sh

Ensures that ODF is fully ready to be configured for Disaster Recovery. In particular waits for ODF to finish deployment and for the NooBaa/S3 service to be operational on all clusters.

  • charts/hub/rdr/scripts/submariner-prerequisites-check.sh

Ensures that Submariner is running properly and operational on both clusters. This is required for ODF PVC replication to work.

  • charts/hub/rdr/scripts/edge-gitops-vms-deploy.sh

Deploys the VM workload to the primary cluster. It uses the Validated Patterns Helm chart but is not an ArgoCD application to avoid starting up resources on clusters where you do not want them running. Thus it runs from the hub cluster. Applies to the odf variant.

  • charts/hub/rdr/scripts/drpc-health-check-argocd-sync-disable.sh

Disables sync on the regional-dr application to prevent ArgoCD from changing resources during settlement.

  • charts/hub/rdr/scripts/submariner-sg-tag.sh

During development of the pattern, a bug in Submariner was discovered that can prevent LoadBalancer services from being created correctly after Submariner is installed. This is a workaround for that bug.