Bug 2097398

Summary: [RDR] Provide proper documentation on how application workloads needs to be designed
Product: [Red Hat Storage] Red Hat OpenShift Data Foundation Reporter: Aman Agrawal <amagrawa>
Component: documentationAssignee: Olive Lakra <olakra>
Status: ASSIGNED --- QA Contact: Neha Berry <nberry>
Severity: high Docs Contact:
Priority: unspecified    
Version: 4.10CC: asriram, bmekhiss, kramdoss, kseeger, mbukatov, odf-bz-bot, rtalur, srangana
Target Milestone: ---Flags: amagrawa: needinfo? (rtalur)
olakra: needinfo? (srangana)
olakra: needinfo? (rtalur)
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Comment 4 Benamar Mekhissi 2022-09-02 14:40:03 UTC
Supported Applications
===
Ramen protects Applications’ Persistent Volumes across a set of Managed Clusters. In order for Ramen to determine what PVCs to protect, a Label Selector must be provided to it. This is the same label selector found in the DRPC resource.
```
spec:
  ...
  pvcSelector:
    matchLabels:
      appname: busybox
```
Hence, Ramen will protect any PVC that matches the label. In this example, any PVC with label `appname: busybox` will be protected.

PVC Creation/Deletion
--- 
We have tested applications with 3 methods of PVC creation/deletion.
- PVCs created statically
- PVCs created by Custom Operators
- PVCs created by StatefulSet Controller

1. PVCs created statically
We have mostly tested with statically create PVCs. A PVC object is created from a static manifest file describing the PVC. An example of this is found here: https://github.com/RamenDR/ocm-ramen-samples/tree/main/busybox
In that example, busybox Pod is created when the busybox-pod.yaml is applied by ACM Subscription. The Pod uses the PVC to request physical storage. The PVC is also created when busybox-pvc.yaml is applied by ACM Subscription. This type of application has been tested and verified to work reliably.

1. PVCs created by Custom Operators
The Postgres Operator from Crunchy Data is an example of an operator that automatically manages PostgreSQL clusters. It creates PVCs dynamically, and the name of the PVCs that it creates follows a pattern that can’t be regenerated in the other cluster when the failover takes place. We have a work-in-progress PR to fix this. https://github.com/RamenDR/ramen/pull/350

2. PVCs created by StatefulSet Controller
StatefulSet Pods will deploy and failover correctly, however, to relocate to the original cluster, a manual deletion of the PVCs of the previous run must be performed before issuing a failback request. This is a StatefulSet limitation https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#limitations. K8s v1.23 provides a solution to this problem.

Comment 16 krishnaram Karthick 2023-03-13 04:43:24 UTC
Moved the bug to 4.13.