1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15- FROM --platform=$BUILDPLATFORM golang:1.23 .0 AS builder
15+ FROM --platform=$BUILDPLATFORM golang:1.24 .0 AS builder
1616
1717ARG STAGINGVERSION
1818ARG TARGETPLATFORM
@@ -23,11 +23,11 @@ RUN GOARCH=$(echo $TARGETPLATFORM | cut -f2 -d '/') GCE_PD_CSI_STAGING_VERSION=$
2323
2424# Start from Kubernetes Debian base.
2525
26- FROM gke.gcr.io/debian-base:bookworm-v1.0.4-gke.2 AS debian
26+ FROM gke.gcr.io/debian-base:bookworm-v1.0.4-gke.3 AS debian
2727
2828# Install necessary dependencies
2929# google_nvme_id script depends on the following packages: nvme-cli, xxd, bash
30- RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs nvme-cli xxd bash
30+ RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs nvme-cli xxd bash kmod lvm2 mdadm
3131
3232# Since we're leveraging apt to pull in dependencies, we use `gcr.io/distroless/base` because it includes glibc.
3333FROM gcr.io/distroless/base-debian12 AS distroless-base
@@ -56,6 +56,35 @@ COPY --from=debian /sbin/e2fsck /sbin/e2fsck
5656COPY --from=debian /sbin/fsck /sbin/fsck
5757COPY --from=debian /sbin/fsck* /sbin/
5858COPY --from=debian /sbin/fsck.xfs /sbin/fsck.xfs
59+ # Add dependencies for LVM
60+ COPY --from=debian /etc/lvm /lvm-tmp/lvm
61+ COPY --from=debian /lib/systemd/system/blk-availability.service /lib/systemd/system/blk-availability.service
62+ COPY --from=debian /lib/systemd/system/lvm2-lvmpolld.service /lib/systemd/system/lvm2-lvmpolld.service
63+ COPY --from=debian /lib/systemd/system/lvm2-lvmpolld.socket /lib/systemd/system/lvm2-lvmpolld.socket
64+ COPY --from=debian /lib/systemd/system/lvm2-monitor.service /lib/systemd/system/lvm2-monitor.service
65+ COPY --from=debian /lib/udev/rules.d/56-lvm.rules /lib/udev/rules.d/56-lvm.rules
66+ COPY --from=debian /sbin/fsadm /sbin/fsadm
67+ COPY --from=debian /sbin/lvm /sbin/lvm
68+ COPY --from=debian /sbin/lvmdump /sbin/lvmdump
69+ COPY --from=debian /sbin/lvmpolld /sbin/lvmpolld
70+ COPY --from=debian /usr/lib/tmpfiles.d /usr/lib/tmpfiles.d
71+ COPY --from=debian /usr/lib/tmpfiles.d/lvm2.conf /usr/lib/tmpfiles.d/lvm2.conf
72+ COPY --from=debian /sbin/lv* /sbin/
73+ COPY --from=debian /sbin/pv* /sbin/
74+ COPY --from=debian /sbin/vg* /sbin/
75+ COPY --from=debian /bin/lsblk /bin/lsblk
76+ COPY --from=debian /sbin/modprobe /sbin/modprobe
77+ COPY --from=debian /lib/udev /lib/udev
78+ COPY --from=debian /lib/udev/rules.d /lib/udev/rules.d
79+ COPY --from=debian /lib/udev/rules.d/55-dm.rules /lib/udev/rules.d/55-dm.rules
80+ COPY --from=debian /lib/udev/rules.d/60-persistent-storage-dm.rules /lib/udev/rules.d/60-persistent-storage-dm.rules
81+ COPY --from=debian /lib/udev/rules.d/95-dm-notify.rules /lib/udev/rules.d/95-dm-notify.rules
82+ COPY --from=debian /sbin/blkdeactivate /sbin/blkdeactivate
83+ COPY --from=debian /sbin/dmsetup /sbin/dmsetup
84+ COPY --from=debian /sbin/dmstats /sbin/dmstats
85+ COPY --from=debian /bin/ls /bin/ls
86+ # End of dependencies for LVM
87+ COPY --from=debian /sbin/mdadm /sbin/mdadm
5988COPY --from=debian /sbin/mke2fs /sbin/mke2fs
6089COPY --from=debian /sbin/mkfs* /sbin/
6190COPY --from=debian /sbin/resize2fs /sbin/resize2fs
@@ -71,14 +100,20 @@ COPY --from=debian /bin/date /bin/date
71100COPY --from=debian /bin/grep /bin/grep
72101COPY --from=debian /bin/sed /bin/sed
73102COPY --from=debian /bin/ln /bin/ln
103+ COPY --from=debian /bin/cp /bin/cp
74104COPY --from=debian /bin/udevadm /bin/udevadm
75105
76106# Copy shared libraries into distroless base.
77107COPY --from=debian /lib/${LIB_DIR_PREFIX}-linux-gnu/libselinux.so.1 \
108+ /lib/${LIB_DIR_PREFIX}-linux-gnu/libdl.so.2 \
109+ /lib/${LIB_DIR_PREFIX}-linux-gnu/libpthread.so.0 \
78110 /lib/${LIB_DIR_PREFIX}-linux-gnu/libtinfo.so.6 \
79111 /lib/${LIB_DIR_PREFIX}-linux-gnu/libe2p.so.2 \
80112 /lib/${LIB_DIR_PREFIX}-linux-gnu/libcom_err.so.2 \
81113 /lib/${LIB_DIR_PREFIX}-linux-gnu/libdevmapper.so.1.02.1 \
114+ /lib/${LIB_DIR_PREFIX}-linux-gnu/libm.so.6 \
115+ /lib/${LIB_DIR_PREFIX}-linux-gnu/libc.so.6 \
116+ /lib/${LIB_DIR_PREFIX}-linux-gnu/libdevmapper-event.so.1.02.1 \
82117 /lib/${LIB_DIR_PREFIX}-linux-gnu/libext2fs.so.2 \
83118 /lib/${LIB_DIR_PREFIX}-linux-gnu/libgcc_s.so.1 \
84119 /lib/${LIB_DIR_PREFIX}-linux-gnu/liblzma.so.5 \
@@ -99,11 +134,17 @@ COPY --from=debian /lib/${LIB_DIR_PREFIX}-linux-gnu/libselinux.so.1 \
99134 /lib/${LIB_DIR_PREFIX}-linux-gnu/libzstd.so.1 /lib/${LIB_DIR_PREFIX}-linux-gnu/
100135
101136COPY --from=debian /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libblkid.so.1 \
137+ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libsmartcols.so.1 \
102138 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libbsd.so.0 \
103139 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libinih.so.1 \
104140 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libmount.so.1 \
105141 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libudev.so.1 \
106142 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libuuid.so.1 \
143+ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libzstd.so.1 \
144+ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libaio.so.1 \
145+ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libgcrypt.so.20 \
146+ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libsystemd.so.0 \
147+ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/liblz4.so.1 \
107148 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libacl.so.1 \
108149 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libattr.so.1 \
109150 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libedit.so.2 \
@@ -118,4 +159,5 @@ COPY --from=debian /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libblkid.so.1 \
118159# Copy NVME support required script and rules into distroless base.
119160COPY deploy/kubernetes/udev/google_nvme_id /lib/udev_containerized/google_nvme_id
120161
121- ENTRYPOINT ["/gce-pd-csi-driver" ]
162+ COPY --from=builder /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/initialize-driver.sh /initialize-driver.sh
163+ ENTRYPOINT ["/initialize-driver.sh" ]
0 commit comments