diff --git a/deploy/rbd/kubernetes/csi-provisioner-rbac.yaml b/deploy/rbd/kubernetes/csi-provisioner-rbac.yaml index 6913e08c4..2aef1f1c6 100644 --- a/deploy/rbd/kubernetes/csi-provisioner-rbac.yaml +++ b/deploy/rbd/kubernetes/csi-provisioner-rbac.yaml @@ -27,9 +27,21 @@ rules: - apiGroups: [""] resources: ["endpoints"] verbs: ["get", "create", "update"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] + verbs: ["get", "list", "watch", "update"] - apiGroups: [""] resources: ["configmaps"] verbs: ["get", "list", "create", "delete"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["apiextensions.k8s.io"] + resources: ["customresourcedefinitions"] + verbs: ["create"] --- kind: ClusterRoleBinding diff --git a/deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml b/deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml index 223419f54..305b6f46c 100644 --- a/deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml +++ b/deploy/rbd/kubernetes/csi-rbdplugin-provisioner.yaml @@ -38,6 +38,21 @@ spec: volumeMounts: - name: socket-dir mountPath: /var/lib/kubelet/plugins/csi-rbdplugin + - name: csi-snapshotter + image: quay.io/k8scsi/csi-snapshotter:v1.0.1 + args: + - "--csi-address=$(ADDRESS)" + - "--connection-timeout=15s" + - "--v=5" + env: + - name: ADDRESS + value: /var/lib/kubelet/plugins/csi-rbdplugin/csi-provisioner.sock + imagePullPolicy: Always + securityContext: + privileged: true + volumeMounts: + - name: socket-dir + mountPath: /var/lib/kubelet/plugins/csi-rbdplugin - name: csi-rbdplugin securityContext: privileged: true diff --git a/examples/rbd/pod-restore.yaml b/examples/rbd/pod-restore.yaml new file mode 100644 index 000000000..b66474476 --- /dev/null +++ b/examples/rbd/pod-restore.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Pod +metadata: + name: csirbd-restore-demo-pod +spec: + containers: + - name: web-server + image: nginx + volumeMounts: + - name: mypvc + mountPath: /var/lib/www/html + volumes: + - name: mypvc + persistentVolumeClaim: + claimName: rbd-pvc-restore + readOnly: false + diff --git a/examples/rbd/pvc-restore.yaml b/examples/rbd/pvc-restore.yaml new file mode 100644 index 000000000..9db03c073 --- /dev/null +++ b/examples/rbd/pvc-restore.yaml @@ -0,0 +1,16 @@ +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: rbd-pvc-restore +spec: + storageClassName: csi-rbd + dataSource: + name: rbd-pvc-snapshot + kind: VolumeSnapshot + apiGroup: snapshot.storage.k8s.io + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi diff --git a/examples/rbd/snapshot.yaml b/examples/rbd/snapshot.yaml new file mode 100644 index 000000000..78a9f505d --- /dev/null +++ b/examples/rbd/snapshot.yaml @@ -0,0 +1,9 @@ +apiVersion: snapshot.storage.k8s.io/v1alpha1 +kind: VolumeSnapshot +metadata: + name: rbd-pvc-snapshot +spec: + snapshotClassName: csi-rbdplugin-snapclass + source: + name: rbd-pvc + kind: PersistentVolumeClaim diff --git a/examples/rbd/snapshotclass.yaml b/examples/rbd/snapshotclass.yaml new file mode 100644 index 000000000..778f2b084 --- /dev/null +++ b/examples/rbd/snapshotclass.yaml @@ -0,0 +1,11 @@ +--- +apiVersion: snapshot.storage.k8s.io/v1alpha1 +kind: VolumeSnapshotClass +metadata: + name: csi-rbdplugin-snapclass +snapshotter: csi-rbdplugin +parameters: + pool: rbd + monitors: mon1:port,mon2:port,... + csi.storage.k8s.io/snapshotter-secret-name: csi-rbd-secret + csi.storage.k8s.io/snapshotter-secret-namespace: default