The Disaster Recovery (DR) operator helps automate disaster recovery processes, such as replication, failover, failback, and resynchronization between the primary and secondary sites.
- Install Hitachi Storage Plug-in for Containers on both the primary and secondary clusters. See Hitachi Storage Plug-in for Containers Quick Reference Guide for more information.
- Install Replication Plug-in for Containers on both the primary and secondary clusters. See Installing and configuring Replication Plug-in for Containers for more information.
- Create a clone of https://github.com/hitachi-vantara/csi-operator-hitachi. Enter:
# git clone https://github.com/hitachi-vantara/csi-operator-hitachi
- Navigate to the target Replication Plug-in for Containers version. Enter:
# cd csi-operator-hitachi/hrpc/<version>/dr-operator
- Verify the following packages are available on both the primary and secondary sites:
- cert-manager.yaml is located in the csi-operator-hitachi/hrpc/<version>/dr-operator/yaml/ directory
- dr-operator-install.yaml is located in the csi-operator-hitachi/hrpc/<version>/dr-operator/yaml directory
- dr-operator-uninstall.yaml is located in the csi-operator-hitachi/hrpc/<version>/dr-operator/yaml directory
- remote-cluster-management.sh is located in the csi-operator-hitachi/hrpc/<version>/dr-operator/scripts directory
- Install the cert-manager package on both the primary and secondary sites. Enter:
kubectl apply -f cert-manager.yaml
- Install the dr-operator-install package on both the primary and secondary sites. Enter:
kubectl apply -f dr-operator-install.yaml
Note: In the dr-operator-install.yaml file, update the storageClassName parameter with the StorageClass configured for Replication Plug-in for Containers.On Red Hat OpenShift Container Platform, specify the fsGroup value for the namespace where you want to install the DR operator on both the primary and secondary sites:
- Retrieve the fsGroup range value for the namespace from both the primary and secondary sites. Enter:
# kubectl get ns <namespace> -o yaml |grep supplemental-groups
Example output:openshift.io/sa.scc.supplemental-groups: 1000830000/10000
- Update the fsGroup value in the dr-operator-install.yaml file on both the primary and secondary sites. Enter:
vi dr-operator-install.yaml
Update the fsGroup value for the fsGroup parameter. For example:securityContext: fsGroup: 1000830000 runAsNonRoot: true
- Retrieve the fsGroup range value for the namespace from both the primary and secondary sites. Enter:
- Register kubeconfig of the secondary site in the primary site. Enter:
# ./remote-cluster-management.sh <secondary site> secondary-kubeconfig
- Register kubeconfig of the primary site in the secondary site. Enter:
# ./remote-cluster-management.sh <primary site> primary-kubeconfig
- Verify the cert-manager is installed and is in Running state. Enter:
kubectl get pods -n cert-manager NAME READY STATUS RESTARTS AGE cert-manager-786fb48656-xtrmr 1/1 Running 0 9h cert-manager-cainjector-5965d694d9-m6nnj 1/1 Running 0 9h cert-manager-webhook-5bf5f9c8f6-zmtdf 1/1 Running 0 9h
- Verify the hspc-replication-operator-system is created. Enter:
kubectl get ns NAME STATUS AGE cert-manager Active 6d8h default Active 38d hspc-replication-operator-system Active 3d8h hspc-operator-system Active 34d hvplugin Active 34d kube-flannel Active 38d kube-node-lease Active 38d kube-public Active 38d kube-system Active 38d kurl Active 38d monitoring Active 38d openebs Active 38d
- Verify the hspc-dr-operator-controller-manager pod is created and is in the Running state. Enter:
kubectl get pod -n hspc-replication-operator-system NAME READY STATUS RESTARTS AGE hspc-dr-operator-controller-manager-dbbc5546d-snl7d 1/1 Running 82 (32m ago) 3d9h
- Verify the remote-kubeconfig secret is created. Enter:
kubectl get secret -n hspc-replication-operator-system NAME TYPE DATA AGE metrics-server-cert kubernetes.io/tls 3 3d9h remote-kubeconfig Opaque 1 19h webhook-server-cert kubernetes.io/tls 3 3d9h
- Verify the remote-kubeconfig secret file. Enter:
kubectl describe secret remote-kubeconfig -n hspc-replication-operator-system Name: remote-kubeconfig Namespace: hspc-replication-operator-system Labels: <none> Annotations: <none> Type: Opaque Data ==== remote site: 5656 bytes
- Verify drpolicies.hspc.hitachi.com is installed. Enter:
kubectl get crd NAME CREATED AT alertmanagerconfigs.monitoring.coreos.com 2025-09-05T16:38:56Z alertmanagers.monitoring.coreos.com 2025-09-05T16:38:56Z certificaterequests.cert-manager.io 2025-10-07T21:31:18Z certificates.cert-manager.io 2025-10-07T21:31:18Z challenges.acme.cert-manager.io 2025-10-07T21:31:18Z clusterissuers.cert-manager.io 2025-10-07T21:31:18Z drpolicies.hspc.hitachi.com 2025-10-22T17:06:12Z hspcs.csi.hitachi.com 2025-09-09T07:39:17Z installers.cluster.kurl.sh 2025-09-05T16:37:47Z issuers.cert-manager.io 2025-10-07T21:31:18Z localvolumes.hspc.hitachi.com 2025-09-15T09:56:56Z orders.acme.cert-manager.io 2025-10-07T21:31:18Z podmonitors.monitoring.coreos.com 2025-09-05T16:38:57Z probes.monitoring.coreos.com 2025-09-05T16:38:57Z prometheusagents.monitoring.coreos.com 2025-09-05T16:38:57Z prometheuses.monitoring.coreos.com 2025-09-05T16:38:57Z prometheusrules.monitoring.coreos.com 2025-09-05T16:38:57Z remotevolumes.hspc.hitachi.com 2025-09-15T09:56:56Z replications.hspc.hitachi.com 2025-09-15T09:56:56Z scrapeconfigs.monitoring.coreos.com 2025-09-05T16:38:58Z servicemonitors.monitoring.coreos.com 2025-09-05T16:38:58Z spcnodes.csiutil.hitachi.com 2025-09-09T07:42:43Z thanosrulers.monitoring.coreos.com 2025-09-05T16:38:58Z