Regional Resiliency Pattern

The Regional Resiliency Pattern is a Validated Pattern derived from the Multicluster DevSevOps Pattern.
The pattern uses Red Hat OpenShift Data Foundation's Regional DR solution for cross-regional disaster recovery and the Regional DR Trigger Operator for automating applications failover between Red Had Advanced Cluster Management Managed Clusters in active-passive scenarios.

Prerequisites

  • [Cloud Vendor Credentials]

⚠️ Do not install the Regional Resiliency Pattern in a pre-configured Advanced Cluster Management setup.

Installation

  1. Fork the pattern and clone the fork to your workstation.

  2. In values-global.yaml, create your cluster pairs. install_config is documented here. Use the existing example as a base:

     regionalDR:
      - name: resilient # Matches with ClusterSet
        globalnetEnabled: false # Support for overlapping CIDR
        clusters: # Pair of clusters, make sure to create each in a different region
        primary:
          name: ocp-primary
          version: 4.14.12
          install_config: # See OpenShift documentation for install config spec
            ...
        secondary:
          name: ocp-secondary
          version: 4.14.12
          install_config: # See OpenShift documentation for install config spec
             ...
        # List of sync policy intervals: RPO should be larger than the sync time.
        # If your sync process takes 3 mins, the interval should be at least 4-5 mins.
        intervals:
         - 1m
         - 2m
  3. Push your changes to your fork.

  4. Create your own values-secrets.yaml file, use values-secret.yaml.template as a base.

    ⚠️ DO NOT push this file to any repository.

  5. Use OpenShift CLI and log into the Hub Cluster.

    🕵️ Now will be an excellent time to examine values-hub.yaml and and values-resilient.yaml, and evaluate what's included in Pattern for the Hub and Managed Clusters respectively.

  6. Install the pattern. The following will install everything described by the pattern, including namespaces, operators, subscriptions, etc.

    # Check and verify the generated pattern object
    ./pattern.sh make show
    
    # If everything looks good, install the pattern (if needed, use TARGET_ORIGIN and TARGET_BRANCH)
    ./pattern.sh make install
  7. Obtain the RedHat GitOps routes, and access them. There are two different servers. One for the Pattern Framework and one for our Pattern Instance:

    # Framework GitOps
    oc get Route -n openshift-gitops openshift-gitops-server
    
    # Pattern GitOps
    oc get Route -n regional-resiliency-pattern-hub hub-gitops-server
  8. Verify the Framework's GitOps server:

  9. Observe the Pattern's GitOps server and wait for all resources to be reconciled.

    Depending on the target vendor's resources, creating and configuring the clusters might take some time.

  10. In ACM's UI, verify Submariner is healthy:

  11. In ACM's UI, verify the Managed Clusters are healthy:

  12. In the Hub's UI, verify the DR Policies are validated match your requirements:

  13. For every Managed Cluster, obtain the RedHat GitOps routes, and access them. There are two different servers. One for the Pattern Framework and one for our Pattern Instance:

    # Framework GitOps
    oc get Route -n openshift-gitops openshift-gitops-server
    
    # Pattern GitOps
    oc get Route -n regional-resiliency-pattern-resilient resilient-gitops-server
  14. For every Managed Cluster, verify the Framework's GitOps server:

  15. For every Managed Cluster, verify the Pattern's GitOps server:

All Done.
Get started deploying DR Applications with the Regional DR docs and the example application. Based on the Primary Managed Cluster availability maintained by ACM's heartbeat mechanism, a failover will be triggered to all related applications.

Further Reading