12
12
# See the License for the specific language governing permissions and
13
13
# limitations under the License.
14
14
15
- FROM --platform=$BUILDPLATFORM golang:1.23 .0 AS builder
15
+ FROM --platform=$BUILDPLATFORM golang:1.24 .0 AS builder
16
16
17
17
ARG STAGINGVERSION
18
18
ARG TARGETPLATFORM
@@ -23,11 +23,11 @@ RUN GOARCH=$(echo $TARGETPLATFORM | cut -f2 -d '/') GCE_PD_CSI_STAGING_VERSION=$
23
23
24
24
# Start from Kubernetes Debian base.
25
25
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
27
27
28
28
# Install necessary dependencies
29
29
# 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
31
31
32
32
# Since we're leveraging apt to pull in dependencies, we use `gcr.io/distroless/base` because it includes glibc.
33
33
FROM gcr.io/distroless/base-debian12 AS distroless-base
@@ -56,6 +56,35 @@ COPY --from=debian /sbin/e2fsck /sbin/e2fsck
56
56
COPY --from=debian /sbin/fsck /sbin/fsck
57
57
COPY --from=debian /sbin/fsck* /sbin/
58
58
COPY --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
59
88
COPY --from=debian /sbin/mke2fs /sbin/mke2fs
60
89
COPY --from=debian /sbin/mkfs* /sbin/
61
90
COPY --from=debian /sbin/resize2fs /sbin/resize2fs
@@ -71,14 +100,20 @@ COPY --from=debian /bin/date /bin/date
71
100
COPY --from=debian /bin/grep /bin/grep
72
101
COPY --from=debian /bin/sed /bin/sed
73
102
COPY --from=debian /bin/ln /bin/ln
103
+ COPY --from=debian /bin/cp /bin/cp
74
104
COPY --from=debian /bin/udevadm /bin/udevadm
75
105
76
106
# Copy shared libraries into distroless base.
77
107
COPY --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 \
78
110
/lib/${LIB_DIR_PREFIX}-linux-gnu/libtinfo.so.6 \
79
111
/lib/${LIB_DIR_PREFIX}-linux-gnu/libe2p.so.2 \
80
112
/lib/${LIB_DIR_PREFIX}-linux-gnu/libcom_err.so.2 \
81
113
/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 \
82
117
/lib/${LIB_DIR_PREFIX}-linux-gnu/libext2fs.so.2 \
83
118
/lib/${LIB_DIR_PREFIX}-linux-gnu/libgcc_s.so.1 \
84
119
/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 \
99
134
/lib/${LIB_DIR_PREFIX}-linux-gnu/libzstd.so.1 /lib/${LIB_DIR_PREFIX}-linux-gnu/
100
135
101
136
COPY --from=debian /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libblkid.so.1 \
137
+ /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libsmartcols.so.1 \
102
138
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libbsd.so.0 \
103
139
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libinih.so.1 \
104
140
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libmount.so.1 \
105
141
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libudev.so.1 \
106
142
/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 \
107
148
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libacl.so.1 \
108
149
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libattr.so.1 \
109
150
/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 \
118
159
# Copy NVME support required script and rules into distroless base.
119
160
COPY deploy/kubernetes/udev/google_nvme_id /lib/udev_containerized/google_nvme_id
120
161
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