Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
159 commits
Select commit Hold shift + click to select a range
c1e799d
Add handling for TPC to GetRegionFromZones
hanz-vora Jan 21, 2025
56480be
Bump golang from 1.23.0 to 1.24.0
dependabot[bot] Feb 17, 2025
36019a8
Bump the onsi group across 1 directory with 2 updates
dependabot[bot] Feb 24, 2025
a827d87
Set --provenance=false when building multi-arch images.
tonyzhc Feb 25, 2025
be73207
Print build manifest to debug windows test failure.
tonyzhc Feb 25, 2025
18af03a
Test fix: update windows base image to match the version created by k…
tonyzhc Feb 26, 2025
8ff8d2a
Merge pull request #1924 from kubernetes-sigs/dependabot/go_modules/o…
k8s-ci-robot Feb 27, 2025
cd32252
Bump the golang-x group across 1 directory with 10 updates
dependabot[bot] Feb 27, 2025
22c2d68
Pin buildx builder image to v0.16.0
mauriciopoppe Feb 24, 2025
e11c7a3
Update csi proxy to 1.2.0
tonyzhc Mar 1, 2025
090432a
Only run data cache watcher if a data cache nodepool exist & adding
halimsam Feb 28, 2025
a060235
Merge pull request #1966 from halimsam/watcher-update
k8s-ci-robot Mar 4, 2025
66d41ff
Clean up previously tried workarounds.
tonyzhc Mar 3, 2025
759a080
Merge pull request #1953 from tonyzhc/test-windows
k8s-ci-robot Mar 5, 2025
b240be4
Merge pull request #1943 from kubernetes-sigs/dependabot/docker/golan…
mattcary Mar 5, 2025
6737973
Merge pull request #1963 from kubernetes-sigs/dependabot/go_modules/g…
mattcary Mar 5, 2025
54f9827
Fix CVE-2022-1996
mattcary Feb 28, 2025
d7c5a23
Merge pull request #1967 from mattcary/cve
mattcary Mar 5, 2025
aab8b8a
Bump golang from 1.24.0 to 1.24.1
dependabot[bot] Mar 10, 2025
afa442a
Condense insertDisk for zonal and regional case.
tonyzhc Mar 13, 2025
15e5a6f
Validate the provisioned performance of the disk created.
tonyzhc Mar 13, 2025
efb4c18
Update change log, docs and config yaml for release v1.17.2
Sneha-at Mar 13, 2025
a915c52
Merge pull request #1989 from tonyzhc/hdha
k8s-ci-robot Mar 13, 2025
8cadba4
Merge pull request #1973 from Sneha-at/update-master
k8s-ci-robot Mar 14, 2025
1231388
Fix logic bug while checking available LSSDs for RAIDing for Data Cache
hungnguyen243 Mar 14, 2025
7e0a35b
add exponential backoff for getting Node from API serverr logic
hungnguyen243 Mar 13, 2025
09f2852
Merge pull request #1993 from hungnguyen243/fixFilterAvailableLSSDsBug
k8s-ci-robot Mar 15, 2025
ba89880
Merge pull request #1990 from hungnguyen243/getNodeAPIFix
k8s-ci-robot Mar 17, 2025
47b6ecb
Merge branch 'kubernetes-sigs:master' into get-region-from-location-t…
hanz-vora Mar 17, 2025
daac2c6
Merge pull request #1910 from hanz-vora/get-region-from-location-tpc-fix
k8s-ci-robot Mar 17, 2025
f7a6c26
update debian image to fix CVE
Sneha-at Mar 17, 2025
e38bfeb
Add pageToken response check to ListSnapshots gRPC API
pwschuurman Mar 19, 2025
9c35e66
Merge pull request #1997 from Sneha-at/update-master
mattcary Mar 19, 2025
fd0122c
Use strings.Fields for whitespace splitting to fix issues with string…
hungnguyen243 Mar 19, 2025
c653070
Merge pull request #2006 from hungnguyen243/fixParsingErrorListingLSSDs
k8s-ci-robot Mar 20, 2025
c943c78
Update K8s 1.32 Dependencies
sunnylovestiramisu Mar 6, 2025
47a1c4b
Merge pull request #1947 from sunnylovestiramisu/updatek8s
k8s-ci-robot Mar 20, 2025
285d561
Bump the k8s-dependencies group across 1 directory with 7 updates
dependabot[bot] Mar 20, 2025
561a25e
Merge pull request #1986 from kubernetes-sigs/dependabot/docker/golan…
k8s-ci-robot Mar 20, 2025
d3ddc5a
map insufficient free space error during cache creating to InvalidArg…
hungnguyen243 Mar 20, 2025
e3459b4
Fix units for cache size
Sneha-at Mar 20, 2025
61b05dd
Merge pull request #2010 from hungnguyen243/mapDataCacheErrorToInvali…
k8s-ci-robot Mar 21, 2025
1797aa3
Merge pull request #2007 from Sneha-at/update-master
k8s-ci-robot Mar 21, 2025
d51a58d
enable btrfs
motiejus Mar 19, 2025
3e06d63
Merge pull request #2001 from motiejus/btrfs-progs
k8s-ci-robot Mar 21, 2025
831aa1f
Merge pull request #2009 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Mar 21, 2025
d668a21
Increase csi-snapshotter requeue interval --retry-interval-max=60s
pwschuurman Mar 22, 2025
65febf5
Merge pull request #2004 from pwschuurman/list-snapshot-page-token-fix
mattcary Mar 25, 2025
8498951
Add Attach Limit for Hyperdisk + Gen4 VMs
sunnylovestiramisu Mar 25, 2025
0be5a10
Merge pull request #2019 from sunnylovestiramisu/updatek8s
k8s-ci-robot Mar 25, 2025
12707e1
Make integration tests support windows 2022.
tonyzhc Mar 18, 2025
c5c4c87
Merge pull request #1999 from tonyzhc/windows-2022
k8s-ci-robot Mar 27, 2025
396cda2
Bump csi proxy client version to 1.2.1
hajiler Mar 28, 2025
9837a30
fix outdated metadata error in watcher
hungnguyen243 Mar 31, 2025
86e74a2
Merge pull request #2024 from hajiler/csi-proxy-client-version-bump-b…
k8s-ci-robot Mar 31, 2025
9971c44
Merge pull request #2017 from pwschuurman/bump-retry-interval-snapsho…
k8s-ci-robot Mar 31, 2025
a086f5c
Merge pull request #2028 from hungnguyen243/fixOutdatedMetadataError
k8s-ci-robot Apr 1, 2025
0a3cc3f
Add tonyzhc to owners.
tonyzhc Apr 1, 2025
193aa66
Merge pull request #2031 from tonyzhc/windows-2022
k8s-ci-robot Apr 1, 2025
297c9ee
Relax volumeContentSource restriction for ROX multi-zone dynamic volu…
pwschuurman Mar 5, 2025
2ec1e10
Merge pull request #1975 from pwschuurman/pdcsi-rox-multi-zone-create
k8s-ci-robot Apr 2, 2025
bbd2de4
Enable autoupgrade when creating release channel GKE clusters in CI
julianKatz Apr 2, 2025
86714ab
add comment
julianKatz Apr 2, 2025
3670147
Add flag for extended channel only
julianKatz Apr 2, 2025
d61bcbd
Merge pull request #2033 from julianKatz/ci-tests-autoupgrade-for-rel…
k8s-ci-robot Apr 3, 2025
f246726
update cache logic to calculate chunk size based on toatl cache
Sneha-at Apr 3, 2025
6aa4dc9
Merge pull request #2037 from Sneha-at/update-cache-logic
k8s-ci-robot Apr 3, 2025
7bb4807
Bump golang from 1.24.1 to 1.24.2
dependabot[bot] Apr 7, 2025
e8085ac
Merge pull request #2043 from kubernetes-sigs/dependabot/docker/golan…
k8s-ci-robot Apr 7, 2025
1fb012e
When using the extended channel, also specify the cluster version
julianKatz Apr 7, 2025
1b15343
Merge pull request #2045 from julianKatz/specify-cluster-version-on-e…
k8s-ci-robot Apr 8, 2025
ebd628c
Skip rwop fsgroup tests when node version is below 1.32
julianKatz Apr 8, 2025
0ab0dad
Implementation with unit tests
julianKatz Mar 6, 2025
50214a6
Remove variadic argument in test functions
julianKatz Mar 19, 2025
31e3f89
s/gkeTopologyLabels/fetchGKETopologyLabels/
julianKatz Mar 19, 2025
18c35d2
Only add disk support Topology if all nodes have a disk support label
julianKatz Mar 25, 2025
dec4684
Remove NodeGetInfo kubeclient calls
julianKatz Apr 1, 2025
20609f3
Allow kubeconfig info to be passed in
julianKatz Apr 1, 2025
17b9313
Remove dangling nodegetinfo test
julianKatz Apr 3, 2025
83969d9
Ran hack/update-gofmt.sh
julianKatz Apr 3, 2025
2ad67c2
Remove node get/list from node and add to controller
julianKatz Apr 3, 2025
b972fc1
Remove changes to getZoneFromSegment, no longer required
julianKatz Apr 3, 2025
5b52c11
More cleanup related to NodeGetinfo
julianKatz Apr 3, 2025
1150df0
Remove querying of node labels
julianKatz Apr 4, 2025
74130d1
Add todo comments
julianKatz Apr 4, 2025
25b13f5
Remove unnecessary new flags
julianKatz Apr 4, 2025
9301068
Removed unused kubeclient creation function
julianKatz Apr 4, 2025
e5654b1
Updated vendor after deletions
julianKatz Apr 4, 2025
7586724
Remove error return that is now unused
julianKatz Apr 4, 2025
51b7f9e
Removed unnecessary permission
julianKatz Apr 8, 2025
3d848cf
Switch to `disk-type.gke.io` topology label key
julianKatz Apr 8, 2025
97240c8
Remove erroneous `if` in run-k8s-integration-ci.sh
julianKatz Apr 8, 2025
0151473
Merge pull request #2046 from julianKatz/skip-fsgroup-test-on-node-ve…
k8s-ci-robot Apr 8, 2025
453f3d2
Merge pull request #2047 from julianKatz/fix-integration-shell-script…
k8s-ci-robot Apr 8, 2025
9893e94
Add exception for dual-variable setting in utils.go for extended channel
julianKatz Apr 9, 2025
be0fc03
Clean up unused func pickRandAndConsecutive
sunnylovestiramisu Apr 9, 2025
967de8f
Merge pull request #2052 from sunnylovestiramisu/resize
k8s-ci-robot Apr 9, 2025
624f654
Merge pull request #2050 from julianKatz/allow-two-settings-in-utils
k8s-ci-robot Apr 10, 2025
3bb3c05
Set cluster version on the extended channel
julianKatz Apr 11, 2025
1c4bb8c
Merge pull request #2053 from julianKatz/no-valid-versions-prefix-1-28
k8s-ci-robot Apr 12, 2025
c08bad5
Merge pull request #1983 from julianKatz/machine-serenity-non-allowed…
k8s-ci-robot Apr 12, 2025
3893576
Fix Hyperdisk Resize That Requires Iops/Throughput Adjustment
sunnylovestiramisu Apr 11, 2025
0895747
Fix hyperdisk attach limits
jsafrane Apr 16, 2025
2979f47
Merge pull request #2057 from jsafrane/upstream-fix-hyperdisk-limits
k8s-ci-robot Apr 16, 2025
b370893
Bump sigs.k8s.io/structured-merge-diff/v4 in the k8s-dependencies group
dependabot[bot] Apr 21, 2025
9ac600e
Bump the github-dependencies group across 1 directory with 29 updates
dependabot[bot] Apr 21, 2025
3fcbdda
Merge pull request #2056 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 21, 2025
2858b94
Merge pull request #2054 from sunnylovestiramisu/resizeFix
k8s-ci-robot Apr 22, 2025
391a291
Merge pull request #2055 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Apr 24, 2025
fdd1b50
Bump the k8s-dependencies group with 6 updates
dependabot[bot] Apr 28, 2025
889e8af
Merge pull request #2066 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Apr 28, 2025
ba8ce2d
Bump the golang-x group with 7 updates
dependabot[bot] Apr 28, 2025
6d8d59a
Merge pull request #2065 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 29, 2025
752a144
Update
halimsam Apr 8, 2025
08c8fcc
remove GKE Data Cache Watcher regular event logs since it's generating
halimsam Apr 30, 2025
b63b27e
Merge pull request #2068 from halimsam/remover-watcher-log
k8s-ci-robot Apr 30, 2025
e930f10
remove no-op log statement in reduceVolumeGroup for master branch.
halimsam Apr 30, 2025
a89f221
Merge pull request #2070 from halimsam/remover-watcher-log
k8s-ci-robot Apr 30, 2025
e9f4c48
Adjust Attach Limits for Gen3 Machines + Add Labels Override
sunnylovestiramisu May 1, 2025
d96db88
Merge pull request #2072 from sunnylovestiramisu/attachLimit
k8s-ci-robot May 2, 2025
c671ac0
Update OWNERS to include juliankatz
julianKatz May 5, 2025
db447fd
Merge pull request #2075 from julianKatz/patch-1
k8s-ci-robot May 5, 2025
63c0988
Update 1.17 changelog based on Releases page, make placeholder 1.18
julianKatz May 5, 2025
53d5c56
Merge pull request #2078 from julianKatz/1.17-and-1.18-changelogs
k8s-ci-robot May 6, 2025
52dce20
Upgrade to resizer to v1.13.2
hajiler May 7, 2025
68021f0
Merge pull request #2082 from hajiler/update-resizer-version-branch
k8s-ci-robot May 8, 2025
a4e8e3e
Upgrade images
hajiler May 9, 2025
cb2ad70
Bump golang from 1.24.2 to 1.24.3
dependabot[bot] May 12, 2025
a9acfff
Using Default PD Attach Limit for Gen3 Machines
sunnylovestiramisu May 15, 2025
7f44bae
btrfs recalim on kernel v5.19+: use bg_reclaim_threshold
motiejus Feb 24, 2025
8e820cd
Merge pull request #2091 from motiejus/public_btrfs-reclaim
k8s-ci-robot May 16, 2025
317c8e4
Merge pull request #2092 from sunnylovestiramisu/attachLimit
k8s-ci-robot May 17, 2025
1c3f319
Bump the k8s-dependencies group with 5 updates
dependabot[bot] May 19, 2025
e0cc9d9
Merge pull request #2087 from kubernetes-sigs/dependabot/docker/golan…
k8s-ci-robot May 19, 2025
424f732
Fix breaking unit tests for golang 1.24 and k8s/mount-utils 0.33.1 be…
tonyzhc May 20, 2025
69effd6
Merge pull request #2084 from hajiler/update-image-branch
k8s-ci-robot May 21, 2025
10bb90a
Fix Gen4 Custom VM Cases
sunnylovestiramisu May 20, 2025
938ba73
Merge pull request #2096 from sunnylovestiramisu/attachLimit
k8s-ci-robot May 21, 2025
6cc4c0f
Merge pull request #2095 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot May 22, 2025
8ce41fe
Bump the golang-x group with 8 updates
dependabot[bot] May 26, 2025
55839ca
Merge pull request #2086 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot May 28, 2025
1aceb4b
Only add disk support topologies if StorageClass parameter is true
julianKatz May 12, 2025
36e3389
Add row to "CreateVolume Parameters" section in README.md
julianKatz May 21, 2025
d97780c
ENable disk topology flag in e2e tests
julianKatz May 21, 2025
9d6cf4d
Add new e2e test confirming StorageClass parameter
julianKatz May 22, 2025
5ad3127
Warn and continue instead of erroring for bad disk topology parameters
julianKatz May 28, 2025
9e68dea
Enable metrics on the node server for mount operations.
hajiler Feb 24, 2025
84af6e9
Merge pull request #2089 from julianKatz/enable-disk-topology-with-St…
k8s-ci-robot May 28, 2025
c0695cb
Merge pull request #1952 from hajiler/mount-error-metrics-branch
k8s-ci-robot May 29, 2025
f88d7ee
Add Gen4 Lssd VM Test
sunnylovestiramisu Jun 2, 2025
f39cd24
Merge pull request #2105 from sunnylovestiramisu/attachLimit
k8s-ci-robot Jun 3, 2025
70b4dc1
[WIP] GKE-MT support for PDCSI
cemakd May 7, 2025
98d67be
Debugging logs
cemakd May 20, 2025
76e7c9b
Refactor to move tenant related logic into tennacy package
cemakd May 30, 2025
03c842b
go.mod changes
cemakd Jun 4, 2025
f167d66
Merge pull request #2081 from cemakd/gkemt
k8s-ci-robot Jun 12, 2025
cb79671
Merge remote-tracking branch 'openshift/master' into rebase-v1.20.0
chao007 Jun 27, 2025
823187f
UPSTREAM: <carry>: Add OpenShift files
jsafrane Nov 8, 2023
91e0f7f
UPSTREAM: 2116: Remove check on snapshot create support for multi-wri…
sumanthsuresh1117 Jun 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
3 changes: 1 addition & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
See [CHANGELOG/README.md](./CHANGELOG/README.md).
See the [1.17 changelog in the master branch](https://github.com/kubernetes-sigs/gcp-compute-persistent-disk-csi-driver/blob/master/CHANGELOG/CHANGELOG-1.17.md).
See [CHANGELOG/README.md](./CHANGELOG/README.md).
8 changes: 5 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

FROM --platform=$BUILDPLATFORM golang:1.23.0 AS builder
FROM --platform=$BUILDPLATFORM golang:1.24.3 AS builder

ARG STAGINGVERSION
ARG TARGETPLATFORM
Expand All @@ -23,11 +23,11 @@ RUN GOARCH=$(echo $TARGETPLATFORM | cut -f2 -d '/') GCE_PD_CSI_STAGING_VERSION=$

# Start from Kubernetes Debian base.

FROM gke.gcr.io/debian-base:bookworm-v1.0.4-gke.3 AS debian
FROM gke.gcr.io/debian-base:bookworm-v1.0.4-gke.5 AS debian

# Install necessary dependencies
# google_nvme_id script depends on the following packages: nvme-cli, xxd, bash
RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs nvme-cli xxd bash kmod lvm2 mdadm
RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs nvme-cli xxd bash kmod lvm2 mdadm btrfs-progs

# Since we're leveraging apt to pull in dependencies, we use `gcr.io/distroless/base` because it includes glibc.
FROM gcr.io/distroless/base-debian12 AS distroless-base
Expand All @@ -48,6 +48,7 @@ COPY --from=debian /etc/mke2fs.conf /etc/mke2fs.conf
COPY --from=debian /lib/udev/scsi_id /lib/udev_containerized/scsi_id
COPY --from=debian /bin/mount /bin/mount
COPY --from=debian /bin/umount /bin/umount
COPY --from=debian /bin/btrfs /bin/btrfs
COPY --from=debian /sbin/blkid /sbin/blkid
COPY --from=debian /sbin/blockdev /sbin/blockdev
COPY --from=debian /sbin/dumpe2fs /sbin/dumpe2fs
Expand Down Expand Up @@ -131,6 +132,7 @@ COPY --from=debian /lib/${LIB_DIR_PREFIX}-linux-gnu/libselinux.so.1 \
/lib/${LIB_DIR_PREFIX}-linux-gnu/libnvme.so.1 \
/lib/${LIB_DIR_PREFIX}-linux-gnu/libsystemd.so.0 \
/lib/${LIB_DIR_PREFIX}-linux-gnu/libgpg-error.so.0 \
/lib/${LIB_DIR_PREFIX}-linux-gnu/liblzo2.so.2 \
/lib/${LIB_DIR_PREFIX}-linux-gnu/libzstd.so.1 /lib/${LIB_DIR_PREFIX}-linux-gnu/

COPY --from=debian /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libblkid.so.1 \
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.Windows
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# limitations under the License.

ARG BASE_IMAGE
FROM --platform=$BUILDPLATFORM golang:1.23.0 AS builder
FROM --platform=$BUILDPLATFORM golang:1.24.3 AS builder

ARG TARGETPLATFORM
ARG STAGINGVERSION
Expand Down
6 changes: 3 additions & 3 deletions Dockerfile.debug
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

FROM golang:1.23.0 as builder
FROM golang:1.24.3 as builder
WORKDIR /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver
ADD . .

Expand All @@ -24,11 +24,11 @@ RUN CGO_ENABLED=0 go install -ldflags "-s -w -extldflags '-static'" github.com/g
RUN GOARCH="$(echo $TARGETPLATFORM | cut -f2 -d '/')" GCE_PD_CSI_STAGING_VERSION=$STAGINGVERSION GCE_PD_CSI_DEBUG=1 make gce-pd-driver

# MAD HACKS: Build a version first so we can take the scsi_id bin and put it somewhere else in our real build
FROM gke.gcr.io/debian-base:bullseye-v1.4.3-gke.0 as mad-hack
FROM gke.gcr.io/debian-base:bookworm-v1.0.4-gke.5 as mad-hack
RUN clean-install udev

# Start from Kubernetes Debian base
FROM gke.gcr.io/debian-base:bullseye-v1.4.3-gke.0
FROM gke.gcr.io/debian-base:bookworm-v1.0.4-gke.5

# Copy source code too to correlate the binary and the breakpoints
WORKDIR /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver
Expand Down
29 changes: 18 additions & 11 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ DRIVERWINDOWSBINARY=${DRIVERBINARY}.exe
DOCKER=DOCKER_CLI_EXPERIMENTAL=enabled docker

BASE_IMAGE_LTSC2019=mcr.microsoft.com/windows/servercore:ltsc2019
BASE_IMAGE_LTSC2022=mcr.microsoft.com/windows/servercore:ltsc2022

# Both arrays MUST be index aligned.
WINDOWS_IMAGE_TAGS=ltsc2019
Expand Down Expand Up @@ -56,19 +57,25 @@ build-container: require-GCE_PD_CSI_STAGING_IMAGE require-GCE_PD_CSI_STAGING_VER
--push .

build-and-push-windows-container-ltsc2019: require-GCE_PD_CSI_STAGING_IMAGE init-buildx
$(DOCKER) buildx build --file=Dockerfile.Windows --platform=windows \
$(DOCKER) buildx build --file=Dockerfile.Windows --platform=windows/amd64 \
-t $(STAGINGIMAGE):$(STAGINGVERSION)_ltsc2019 \
--build-arg BASE_IMAGE=$(BASE_IMAGE_LTSC2019) \
--build-arg STAGINGVERSION=$(STAGINGVERSION) --push .
--build-arg STAGINGVERSION=$(STAGINGVERSION) --push --provenance=false .

build-and-push-windows-container-ltsc2022: require-GCE_PD_CSI_STAGING_IMAGE init-buildx
$(DOCKER) buildx build --file=Dockerfile.Windows --platform=windows/amd64 \
-t $(STAGINGIMAGE):$(STAGINGVERSION)_ltsc2022 \
--build-arg BASE_IMAGE=$(BASE_IMAGE_LTSC2022) \
--build-arg STAGINGVERSION=$(STAGINGVERSION) --push --provenance=false .

build-and-push-multi-arch: build-and-push-container-linux-amd64 build-and-push-container-linux-arm64 build-and-push-windows-container-ltsc2019
$(DOCKER) manifest create --amend $(STAGINGIMAGE):$(STAGINGVERSION) $(STAGINGIMAGE):$(STAGINGVERSION)_linux_amd64 $(STAGINGIMAGE):$(STAGINGVERSION)_linux_arm64 $(STAGINGIMAGE):$(STAGINGVERSION)_ltsc2019
STAGINGIMAGE="$(STAGINGIMAGE)" STAGINGVERSION="$(STAGINGVERSION)" WINDOWS_IMAGE_TAGS="$(WINDOWS_IMAGE_TAGS)" WINDOWS_BASE_IMAGES="$(WINDOWS_BASE_IMAGES)" ./manifest_osversion.sh
build-and-push-multi-arch: build-and-push-container-linux-amd64 build-and-push-container-linux-arm64 build-and-push-windows-container-ltsc2019 build-and-push-windows-container-ltsc2022
$(DOCKER) manifest create $(STAGINGIMAGE):$(STAGINGVERSION) $(STAGINGIMAGE):$(STAGINGVERSION)_linux_amd64 $(STAGINGIMAGE):$(STAGINGVERSION)_linux_arm64 $(STAGINGIMAGE):$(STAGINGVERSION)_ltsc2019 $(STAGINGIMAGE):$(STAGINGVERSION)_ltsc2022
STAGINGIMAGE="$(STAGINGIMAGE)" STAGINGVERSION="$(STAGINGVERSION)" WINDOWS_IMAGE_TAGS="ltsc2019, ltsc2022" WINDOWS_BASE_IMAGES="$(BASE_IMAGE_LTSC2019), $(BASE_IMAGE_LTSC2022)" ./manifest_osversion.sh
$(DOCKER) manifest push -p $(STAGINGIMAGE):$(STAGINGVERSION)

build-and-push-multi-arch-debug: build-and-push-container-linux-debug build-and-push-windows-container-ltsc2019
$(DOCKER) manifest create --amend $(STAGINGIMAGE):$(STAGINGVERSION) $(STAGINGIMAGE):$(STAGINGVERSION)_linux $(STAGINGIMAGE):$(STAGINGVERSION)_ltsc2019
STAGINGIMAGE="$(STAGINGIMAGE)" STAGINGVERSION="$(STAGINGVERSION)" WINDOWS_IMAGE_TAGS="ltsc2019" WINDOWS_BASE_IMAGES="$(BASE_IMAGE_LTSC2019)" ./manifest_osversion.sh
build-and-push-multi-arch-debug: build-and-push-container-linux-debug build-and-push-windows-container-ltsc2019 build-and-push-windows-container-ltsc2022
$(DOCKER) manifest create $(STAGINGIMAGE):$(STAGINGVERSION) $(STAGINGIMAGE):$(STAGINGVERSION)_linux $(STAGINGIMAGE):$(STAGINGVERSION)_ltsc2019 $(STAGINGIMAGE):$(STAGINGVERSION)_ltsc2022
STAGINGIMAGE="$(STAGINGIMAGE)" STAGINGVERSION="$(STAGINGVERSION)" WINDOWS_IMAGE_TAGS="ltsc2019, ltsc2022" WINDOWS_BASE_IMAGES="$(BASE_IMAGE_LTSC2019), $(BASE_IMAGE_LTSC2022)" ./manifest_osversion.sh
$(DOCKER) manifest push -p $(STAGINGIMAGE):$(STAGINGVERSION)

push-container: build-container
Expand Down Expand Up @@ -97,13 +104,13 @@ build-and-push-container-linux-amd64: require-GCE_PD_CSI_STAGING_IMAGE init-buil
$(DOCKER) buildx build --platform=linux/amd64 \
-t $(STAGINGIMAGE):$(STAGINGVERSION)_linux_amd64 \
--build-arg BUILDPLATFORM=linux \
--build-arg STAGINGVERSION=$(STAGINGVERSION) --push .
--build-arg STAGINGVERSION=$(STAGINGVERSION) --push --provenance=false .

build-and-push-container-linux-arm64: require-GCE_PD_CSI_STAGING_IMAGE init-buildx
$(DOCKER) buildx build --file=Dockerfile --platform=linux/arm64 \
-t $(STAGINGIMAGE):$(STAGINGVERSION)_linux_arm64 \
--build-arg BUILDPLATFORM=linux \
--build-arg STAGINGVERSION=$(STAGINGVERSION) --push .
--build-arg STAGINGVERSION=$(STAGINGVERSION) --push --provenance=false .

build-and-push-container-linux-debug: require-GCE_PD_CSI_STAGING_IMAGE init-buildx
$(DOCKER) buildx build --file=Dockerfile.debug --platform=linux \
Expand Down Expand Up @@ -131,7 +138,7 @@ init-buildx:
$(DOCKER) run --rm --privileged multiarch/qemu-user-static --reset --credential yes --persistent yes
# Ensure we use a builder that can leverage it (the default on linux will not)
-$(DOCKER) buildx rm multiarch-multiplatform-builder
$(DOCKER) buildx create --use --name=multiarch-multiplatform-builder --driver-opt network=host --driver-opt image=moby/buildkit:v0.14.1
$(DOCKER) buildx create --use --name=multiarch-multiplatform-builder --driver-opt network=host --driver-opt image=moby/buildkit:v0.20.0
# Register gcloud as a Docker credential helper.
# Required for "docker buildx build --push".
gcloud auth configure-docker --quiet
15 changes: 14 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ lifecycle of Google Compute Engine Persistent Disks.
## Project Status

Status: GA
Latest stable image: `registry.k8s.io/cloud-provider-gcp/gcp-compute-persistent-disk-csi-driver:v1.15.0`
Latest stable image: `registry.k8s.io/cloud-provider-gcp/gcp-compute-persistent-disk-csi-driver:v1.17.2`

### Test Status

Expand Down Expand Up @@ -61,6 +61,7 @@ See Github [Issues](https://github.com/kubernetes-sigs/gcp-compute-persistent-di
| provisioned-iops-on-create | string (int64 format). Values typically between 10,000 and 120,000 | | Indicates how many IOPS to provision for the disk. See the [Extreme persistent disk documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk) for details, including valid ranges for IOPS. |
| provisioned-throughput-on-create | string (int64 format). Values typically between 1 and 7,124 mb per second | | Indicates how much throughput to provision for the disk. See the [hyperdisk documentation]([TBD](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/hyperdisk#create)) for details, including valid ranges for throughput. |
| resource-tags | `<parent_id1>/<tag_key1>/<tag_value1>,<parent_id2>/<tag_key2>/<tag_value2>` | | Resource tags allow you to attach user-defined tags to each Compute Disk, Image and Snapshot. See [Tags overview](https://cloud.google.com/resource-manager/docs/tags/tags-overview), [Creating and managing tags](https://cloud.google.com/resource-manager/docs/tags/tags-creating-and-managing). |
| use-allowed-disk-topologies | `true` or `false` | `false` | Allows the use of specific disk topologies for provisioning. Must be used in combination with the `--disk-topology=true` flag on PDCSI binary to yield disk support labels in PV NodeAffinity blocks. |

### Topology

Expand Down Expand Up @@ -92,6 +93,18 @@ As part of the deployment process, the driver is deployed in a newly created nam

Controller-level and node-level deployments will both have priorityClassName set, and the corresponding priority value is close to the maximum possible for user-created PriorityClasses.

## Notes on filesystems

As noted in [GCP PD documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/gce-pd-csi-driver), `ext4` and `xfs` are officially supported. `btrfs` support is experimental:
- As of writing, Ubuntu VM images support btrfs, but [COS does not](https://cloud.google.com/container-optimized-os/docs/concepts/supported-filesystems).

`btrfs` filesystem accepts two "special" mount options:

- `btrfs-data-bg_reclaim_threshold`
- `btrfs-metadata-bg_reclaim_threshold`

Which writes to `/sys/fs/btrfs/FS-UUID/allocation/{,meta}data/bg_reclaim_threshold`, as documented [in btrfs docs](https://btrfs.readthedocs.io/en/latest/ch-sysfs.html#uuid-allocations-data-metadata-system).

## Further Documentation

[Local Development](docs/kubernetes/development.md)
Expand Down
44 changes: 37 additions & 7 deletions cmd/gce-pd-csi-driver/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ var (
enableStoragePoolsFlag = flag.Bool("enable-storage-pools", false, "If set to true, the CSI Driver will allow volumes to be provisioned in Storage Pools")
enableHdHAFlag = flag.Bool("allow-hdha-provisioning", false, "If set to true, will allow the driver to provision Hyperdisk-balanced High Availability disks")
enableDataCacheFlag = flag.Bool("enable-data-cache", false, "If set to true, the CSI Driver will allow volumes to be provisioned with Data Cache configuration")
enableMultitenancyFlag = flag.Bool("enable-multitenancy", false, "If set to true, the CSI Driver will support running on multitenant GKE clusters")
nodeName = flag.String("node-name", "", "The node this driver is running on")

multiZoneVolumeHandleDiskTypesFlag = flag.String("multi-zone-volume-handle-disk-types", "", "Comma separated list of allowed disk types that can use the multi-zone volumeHandle. Used only if --multi-zone-volume-handle-enable")
Expand All @@ -94,6 +95,8 @@ var (

extraTagsStr = flag.String("extra-tags", "", "Extra tags to attach to each Compute Disk, Image, Snapshot created. It is a comma separated list of parent id, key and value like '<parent_id1>/<tag_key1>/<tag_value1>,...,<parent_idN>/<tag_keyN>/<tag_valueN>'. parent_id is the Organization or the Project ID or Project name where the tag key and the tag value resources exist. A maximum of 50 tags bindings is allowed for a resource. See https://cloud.google.com/resource-manager/docs/tags/tags-overview, https://cloud.google.com/resource-manager/docs/tags/tags-creating-and-managing for details")

diskTopology = flag.Bool("disk-topology", false, "If set to true, the driver will add a disk-type.gke.io/[disk-type] topology label when the StorageClass has the use-allowed-disk-topology parameter set to true. That topology label is included in the Topologies returned in CreateVolumeResponse. This flag is disabled by default.")

version string
)

Expand Down Expand Up @@ -149,13 +152,22 @@ func handle() {
}

var metricsManager *metrics.MetricsManager = nil
if *runControllerService && *httpEndpoint != "" {
runServiceWithMetrics := *runControllerService || *runNodeService
if runServiceWithMetrics && *httpEndpoint != "" {
mm := metrics.NewMetricsManager()
mm.InitializeHttpHandler(*httpEndpoint, *metricsPath)
mm.RegisterPDCSIMetric()

if metrics.IsGKEComponentVersionAvailable() {
mm.EmitGKEComponentVersion()
switch {
case *runControllerService:
mm.RegisterPDCSIMetric()
if metrics.IsGKEComponentVersionAvailable() {
mm.EmitGKEComponentVersion()
}
case *runNodeService:
if err := mm.EmmitProcessStartTime(); err != nil {
klog.Errorf("Failed to emit process start time: %v", err.Error())
}
mm.RegisterMountMetric()
}
metricsManager = &mm
}
Expand Down Expand Up @@ -221,13 +233,25 @@ func handle() {
// Initialize requirements for the controller service
var controllerServer *driver.GCEControllerServer
if *runControllerService {
cloudProvider, err := gce.CreateCloudProvider(ctx, version, *cloudConfigFilePath, computeEndpoint, computeEnvironment, waitForAttachConfig, listInstancesConfig)
cloudProvider, err := gce.CreateCloudProvider(ctx, version, *cloudConfigFilePath, computeEndpoint, computeEnvironment, waitForAttachConfig, listInstancesConfig, *enableMultitenancyFlag)
if err != nil {
klog.Fatalf("Failed to get cloud provider: %v", err.Error())
}

if *enableMultitenancyFlag {
ctx, cancel := context.WithCancel(ctx)
defer cancel()
go cloudProvider.TenantInformer.Run(ctx.Done())
}

initialBackoffDuration := time.Duration(*errorBackoffInitialDurationMs) * time.Millisecond
maxBackoffDuration := time.Duration(*errorBackoffMaxDurationMs) * time.Millisecond
controllerServer = driver.NewControllerServer(gceDriver, cloudProvider, initialBackoffDuration, maxBackoffDuration, fallbackRequisiteZones, *enableStoragePoolsFlag, *enableDataCacheFlag, multiZoneVolumeHandleConfig, listVolumesConfig, provisionableDisksConfig, *enableHdHAFlag)
// TODO(2042): Move more of the constructor args into this struct
args := &driver.GCEControllerServerArgs{
EnableDiskTopology: *diskTopology,
}

controllerServer = driver.NewControllerServer(gceDriver, cloudProvider, initialBackoffDuration, maxBackoffDuration, fallbackRequisiteZones, *enableStoragePoolsFlag, *enableDataCacheFlag, multiZoneVolumeHandleConfig, listVolumesConfig, provisionableDisksConfig, *enableHdHAFlag, args)
} else if *cloudConfigFilePath != "" {
klog.Warningf("controller service is disabled but cloud config given - it has no effect")
}
Expand All @@ -239,6 +263,7 @@ func handle() {
if err != nil {
klog.Fatalf("Failed to get safe mounter: %v", err.Error())
}

deviceUtils := deviceutils.NewDeviceUtils()
statter := mountmanager.NewStatter(mounter)
meta, err := metadataservice.NewMetadataService()
Expand All @@ -249,13 +274,18 @@ func handle() {
if err != nil {
klog.Fatalf("Failed to get node info from API server: %v", err.Error())
}
nsArgs := driver.NodeServerArgs{

// TODO(2042): Move more of the constructor args into this struct
nsArgs := &driver.NodeServerArgs{
EnableDeviceInUseCheck: *enableDeviceInUseCheck,
DeviceInUseTimeout: *deviceInUseTimeout,
EnableDataCache: *enableDataCacheFlag,
DataCacheEnabledNodePool: isDataCacheEnabledNodePool,
SysfsPath: "/sys",
MetricsManager: metricsManager,
}
nodeServer = driver.NewNodeServer(gceDriver, mounter, deviceUtils, meta, statter, nsArgs)

if *maxConcurrentFormatAndMount > 0 {
nodeServer = nodeServer.WithSerializedFormatAndMount(*formatAndMountTimeout, *maxConcurrentFormatAndMount)
}
Expand Down
4 changes: 4 additions & 0 deletions deploy/kubernetes/base/controller/controller.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ spec:
- "--leader-election"
- "--leader-election-namespace=$(PDCSI_NAMESPACE)"
- "--timeout=300s"
- "--retry-interval-max=60s"
env:
- name: PDCSI_NAMESPACE
valueFrom:
Expand All @@ -144,6 +145,9 @@ spec:
- "--supports-dynamic-iops-provisioning=hyperdisk-balanced,hyperdisk-extreme"
- "--supports-dynamic-throughput-provisioning=hyperdisk-balanced,hyperdisk-throughput,hyperdisk-ml"
- --enable-data-cache
- --enable-multitenancy
command:
- /gce-pd-csi-driver
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: "/etc/cloud-sa/cloud-sa.json"
Expand Down
2 changes: 2 additions & 0 deletions deploy/kubernetes/base/node_linux/node.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ spec:
- "--endpoint=unix:/csi/csi.sock"
- "--run-controller-service=false"
- "--enable-data-cache"
- "--enable-multitenancy"
- "--node-name=$(KUBE_NODE_NAME)"
securityContext:
privileged: true
Expand Down Expand Up @@ -75,6 +76,7 @@ spec:
mountPath: /sys
- name: lib-modules
mountPath: /lib/modules
readOnly: true
volumes:
- name: registration-dir
hostPath:
Expand Down
2 changes: 2 additions & 0 deletions deploy/kubernetes/base/node_windows/node.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ spec:
- "--v=5"
- "--endpoint=unix:/csi/csi.sock"
- "--run-controller-service=false"
command:
- /gce-pd-csi-driver
volumeMounts:
- name: kubelet-dir
mountPath: C:\var\lib\kubelet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,39 @@ metadata:
name: imagetag-csi-provisioner-prow-rc
imageTag:
name: registry.k8s.io/sig-storage/csi-provisioner
newTag: "v5.1.0"
newTag: "v5.2.0"
---
apiVersion: builtin
kind: ImageTagTransformer
metadata:
name: imagetag-csi-attacher-prow-rc
imageTag:
name: registry.k8s.io/sig-storage/csi-attacher
newTag: "v4.4.3"
newTag: "v4.8.1"
---
apiVersion: builtin
kind: ImageTagTransformer
metadata:
name: imagetag-csi-resize-prow-rc
imageTag:
name: registry.k8s.io/sig-storage/csi-resizer
newTag: "v1.12.0"
newTag: "v1.13.2"
---
apiVersion: builtin
kind: ImageTagTransformer
metadata:
name: imagetag-csi-snapshotter-prow-head
imageTag:
name: registry.k8s.io/sig-storage/csi-snapshotter
newTag: "v7.0.2"
newTag: "v8.2.1"
---
apiVersion: builtin
kind: ImageTagTransformer
metadata:
name: imagetag-csi-node-registrar-prow-rc
imageTag:
name: registry.k8s.io/sig-storage/csi-node-driver-registrar
newTag: "v2.9.3"
newTag: "v2.13.0"
---
apiVersion: builtin
kind: ImageTagTransformer
Expand All @@ -48,6 +48,6 @@ metadata:
imageTag:
name: registry.k8s.io/cloud-provider-gcp/gcp-compute-persistent-disk-csi-driver
newName: gcr.io/k8s-staging-cloud-provider-gcp/gcp-compute-persistent-disk-csi-driver
newTag: "v1.16.0-rc1"
newTag: "v1.17.12"
---

Loading