Installation

The following directions will walk through the process of deploying Scribe.

Note

Volume snapshot and clone capabilities are required for some Scribe functionality. It is recommended that you use a CSI driver and StorageClass capable of snapshotting and cloning volumes.

There are three options for installing Scribe. Choose the option that relates to your situation.

Warning

Scribe requires the Kubernetes snapshot controller to be installed within a cluster. If the controller is not deployed review the snapshot controller documentation https://github.com/kubernetes-csi/external-snapshotter.

Kubernetes & OpenShift

While the operator can be deployed via the make deploy or make deploy-openshift targets, the recommended method for deploying Scribe is via the Helm chart.

# Add the Backube Helm repo
$ helm repo add backube https://backube.github.io/helm-charts/

# Deploy the chart in your cluster
$ helm install --create-namespace -n scribe-system scribe backube/scribe

Verify Scribe is running by checking the output of kubectl get pods:

$ kubectl -n scribe-system get pods
NAME                          READY   STATUS    RESTARTS   AGE
scribe-686c8557bc-cr6k9       2/2     Running   0          13s

Configure default CSI storage

AWS

$ kubectl annotate sc/gp2 storageclass.kubernetes.io/is-default-class="false" --overwrite
$ kubectl annotate sc/gp2-csi storageclass.kubernetes.io/is-default-class="true" --overwrite

# Install a VolumeSnapshotClass
$ kubectl create -f - << SNAPCLASS
---
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshotClass
metadata:
  name: gp2-csi
driver: ebs.csi.aws.com
deletionPolicy: Delete
SNAPCLASS

# Set gp2-csi as default VolumeSnapshotClass
$ kubectl annotate volumesnapshotclass/gp2-csi snapshot.storage.kubernetes.io/is-default-class="true"

GCE

$ kubectl annotate sc/standard storageclass.kubernetes.io/is-default-class="false" --overwrite
$ kubectl annotate sc/standard-csi storageclass.kubernetes.io/is-default-class="true" --overwrite

# Install a VolumeSnapshotClass
$ kubectl create -f - << SNAPCLASS
---
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshotClass
metadata:
  name: standard-csi
driver: pd.csi.storage.gke.io
deletionPolicy: Delete
SNAPCLASS

# Set standard-csi as default VolumeSnapshotClass
$ kubectl annotate volumesnapshotclass/standard-csi snapshot.storage.kubernetes.io/is-default-class="true"

At this point it is now possible to use the Rsync and Rclone capabilities of Scribe.

Continue on to the usage docs.

Development

If you are developing Scribe, run the following as it will run the operator locally and output the logs of the controller to your terminal.

# Install Scribe CRDs into the cluster
$ make install

# Run the operator locally
$ make run