Skip to content

Commit

Permalink
feat(zfspv): removing OS dependency
Browse files Browse the repository at this point in the history
We are mounting the individual library to run the zfs
binary inside the ZFS-LocalPV daemonset. The problem with this
is each OS has different sets of libraries. We need to have different
Operator yamls for different OS versions.

Here we are mounting the root directory inside the ZFS-LocalPV daemonset Pod
which does chroot to this path and run the command. As all the libraries will
be available which are present on the host inside the Pod, so we don't need to mount each
library here and also it will work for all the Operating systems.

To be on the safe side, we are mounting the host's root directory
as Readonly filesystem.

Signed-off-by: Pawan <pawan@mayadata.io>
  • Loading branch information
pawanpraka1 committed Sep 3, 2020
1 parent 109fbce commit e49c46d
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 68 deletions.
65 changes: 31 additions & 34 deletions deploy/yamls/ubuntu/zfs-driver.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -701,6 +701,24 @@ roleRef:

---

kind: ConfigMap
apiVersion: v1
metadata:
name: openebs-zfspv-bin
namespace: kube-system
data:
zfs: |
#!/bin/sh
if [ -x /host/sbin/zfs ]; then
chroot /host /sbin/zfs "$@"
elif [ -x /host/usr/sbin/zfs ]; then
chroot /host /usr/sbin/zfs "$@"
else
chroot /host zfs "$@"
fi
---

kind: DaemonSet
apiVersion: apps/v1
metadata:
Expand Down Expand Up @@ -777,18 +795,13 @@ spec:
mountPath: /dev
- name: encr-keys
mountPath: /home/keys
- name: zfs-bin
- name: chroot-zfs
mountPath: /sbin/zfs
- name: libzpool
mountPath: /lib/libzpool.so.2
- name: libzfscore
mountPath: /lib/libzfs_core.so.1
- name: libzfs
mountPath: /lib/libzfs.so.2
- name: libuutil
mountPath: /lib/libuutil.so.1
- name: libnvpair
mountPath: /lib/libnvpair.so.1
subPath: zfs
- name: host-root
mountPath: /host
mountPropagation: "HostToContainer"
readOnly: true
- name: pods-mount-dir
mountPath: /var/lib/kubelet/
# needed so that any mounts setup inside this container are
Expand All @@ -803,30 +816,14 @@ spec:
hostPath:
path: /home/keys
type: DirectoryOrCreate
- name: zfs-bin
- name: chroot-zfs
configMap:
defaultMode: 0555
name: openebs-zfspv-bin
- name: host-root
hostPath:
path: /sbin/zfs
type: File
- name: libzpool
hostPath:
path: /lib/libzpool.so.2.0.0
type: File
- name: libzfscore
hostPath:
path: /lib/libzfs_core.so.1.0.0
type: File
- name: libzfs
hostPath:
path: /lib/libzfs.so.2.0.0
type: File
- name: libuutil
hostPath:
path: /lib/libuutil.so.1.0.1
type: File
- name: libnvpair
hostPath:
path: /lib/libnvpair.so.1.0.1
type: File
path: /
type: Directory
- name: registration-dir
hostPath:
path: /var/lib/kubelet/plugins_registry/
Expand Down
65 changes: 31 additions & 34 deletions deploy/zfs-operator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1531,6 +1531,24 @@ roleRef:

---

kind: ConfigMap
apiVersion: v1
metadata:
name: openebs-zfspv-bin
namespace: kube-system
data:
zfs: |
#!/bin/sh
if [ -x /host/sbin/zfs ]; then
chroot /host /sbin/zfs "$@"
elif [ -x /host/usr/sbin/zfs ]; then
chroot /host /usr/sbin/zfs "$@"
else
chroot /host zfs "$@"
fi
---

kind: DaemonSet
apiVersion: apps/v1
metadata:
Expand Down Expand Up @@ -1607,18 +1625,13 @@ spec:
mountPath: /dev
- name: encr-keys
mountPath: /home/keys
- name: zfs-bin
- name: chroot-zfs
mountPath: /sbin/zfs
- name: libzpool
mountPath: /lib/libzpool.so.2
- name: libzfscore
mountPath: /lib/libzfs_core.so.1
- name: libzfs
mountPath: /lib/libzfs.so.2
- name: libuutil
mountPath: /lib/libuutil.so.1
- name: libnvpair
mountPath: /lib/libnvpair.so.1
subPath: zfs
- name: host-root
mountPath: /host
mountPropagation: "HostToContainer"
readOnly: true
- name: pods-mount-dir
mountPath: /var/lib/kubelet/
# needed so that any mounts setup inside this container are
Expand All @@ -1633,30 +1646,14 @@ spec:
hostPath:
path: /home/keys
type: DirectoryOrCreate
- name: zfs-bin
- name: chroot-zfs
configMap:
defaultMode: 0555
name: openebs-zfspv-bin
- name: host-root
hostPath:
path: /sbin/zfs
type: File
- name: libzpool
hostPath:
path: /lib/libzpool.so.2.0.0
type: File
- name: libzfscore
hostPath:
path: /lib/libzfs_core.so.1.0.0
type: File
- name: libzfs
hostPath:
path: /lib/libzfs.so.2.0.0
type: File
- name: libuutil
hostPath:
path: /lib/libuutil.so.1.0.1
type: File
- name: libnvpair
hostPath:
path: /lib/libnvpair.so.1.0.1
type: File
path: /
type: Directory
- name: registration-dir
hostPath:
path: /var/lib/kubelet/plugins_registry/
Expand Down

0 comments on commit e49c46d

Please sign in to comment.