Skip to content

Commit

Permalink
Add volsync self test
Browse files Browse the repository at this point in the history
Testing volsync without ramen is the best way to understand how it works
and how we need to use it when using minikube (or vanilla k8s?).

Work in progress:

- Add busybox deployment (based on ramen samples), but using
  securityContext so the pod does not run as root. This is not needed on
  openshift since it inject security context to the namespace, but with
  minikube plain busybox runs as root. This requires privileged volsync
  which may be possible but very complex to configure with ocm. Using
  security context looks like the right way to run workloads on minikube
  and supported by volsync.

- Add volsync replication destination - seems to work, but uses
  ClusterIP service, so not accessible from the source cluster. We need
  to add submariner to the volsync env to use volsync.

- Add volsync replication source - not tested yet.

Signed-off-by: Nir Soffer <nsoffer@redhat.com>
  • Loading branch information
nirs committed Jun 18, 2023
1 parent 89eaf01 commit 92a18b3
Show file tree
Hide file tree
Showing 9 changed files with 144 additions and 0 deletions.
7 changes: 7 additions & 0 deletions test/addons/volsync/destination/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
resources:
- namespace.yaml
- pvc.yaml
8 changes: 8 additions & 0 deletions test/addons/volsync/destination/namespace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
apiVersion: v1
kind: Namespace
metadata:
name: busybox
17 changes: 17 additions & 0 deletions test/addons/volsync/destination/pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: busybox-pvc
namespace: busybox
labels:
appname: busybox
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "csi-hostpath-sc"
resources:
requests:
storage: 1Gi
20 changes: 20 additions & 0 deletions test/addons/volsync/destination/replication-dst.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationDestination
metadata:
name: busybox-dst
namespace: busybox
spec:
rsyncTLS:
copyMethod: Snapshot
capacity: 1Gi
accessModes: ["ReadWriteOnce"]
storageClassName: "csi-hostpath-sc"
volumeSnapshotClassName: csi-hostpath-snapclass
moverSecurityContext:
runAsUser: 10000
runAsGroup: 10000
fsGroup: 10000
37 changes: 37 additions & 0 deletions test/addons/volsync/source/deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
appname: busybox
name: busybox
namespace: busybox
spec:
replicas: 1
selector:
matchLabels:
appname: busybox
template:
metadata:
labels:
appname: busybox
spec:
containers:
- image: docker.io/library/busybox:latest
imagePullPolicy: IfNotPresent
name: busybox
command: ['sh', '-c', 'trap exit TERM; while true; do echo $(date) | tee -a /mnt/test/outfile; sync; sleep 10 & wait; done']
volumeMounts:
- name: volume
mountPath: /mnt/test
volumes:
- name: volume
persistentVolumeClaim:
claimName: busybox-pvc
securityContext:
runAsUser: 10000
runAsGroup: 10000
fsGroup: 10000
8 changes: 8 additions & 0 deletions test/addons/volsync/source/kustomization.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
resources:
- namespace.yaml
- pvc.yaml
- deploy.yaml
8 changes: 8 additions & 0 deletions test/addons/volsync/source/namespace.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
apiVersion: v1
kind: Namespace
metadata:
name: busybox
17 changes: 17 additions & 0 deletions test/addons/volsync/source/pvc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: busybox-pvc
namespace: busybox
labels:
appname: busybox
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "csi-hostpath-sc"
resources:
requests:
storage: 1Gi
22 changes: 22 additions & 0 deletions test/addons/volsync/source/replication-src.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# SPDX-FileCopyrightText: The RamenDR authors
# SPDX-License-Identifier: Apache-2.0

---
apiVersion: volsync.backube/v1alpha1
kind: ReplicationSource
metadata:
name: busybox-src
namespace: busybox
spec:
sourcePVC: busybox-pvc
trigger:
schedule: "*/1 * * * *"
rsyncTLS:
keySecret: busybox-dst-secret
address: 192.168.122.150
copyMethod: Snapshot
volumeSnapshotClassName: csi-hostpath-snapclass
moverSecurityContext:
runAsUser: 10000
runAsGroup: 10000
fsGroup: 10000

0 comments on commit 92a18b3

Please sign in to comment.