Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
e1aed30
Bump golang from 1.21.5 to 1.21.6
dependabot[bot] Jan 15, 2024
b680ee6
release 1.13 testing and changelog
mattcary Jan 19, 2024
3982e57
Merge pull request #1572 from mattcary/test-release1.13
mattcary Jan 19, 2024
e005a6e
Release 1.13 doc and image update
mattcary Jan 19, 2024
18cee75
Merge pull request #1573 from mattcary/r13.0-docs
mattcary Jan 19, 2024
ddf3fc8
Add changelog for 1.12.7
mattcary Jan 19, 2024
61e24d3
Merge pull request #1574 from mattcary/changelog
mattcary Jan 19, 2024
0aa9e5c
Bump the golang-x group with 1 update
dependabot[bot] Jan 22, 2024
e7e82d9
Bump the google-golang group with 1 update
dependabot[bot] Jan 22, 2024
2cd285d
Bump the onsi group with 2 updates
dependabot[bot] Jan 22, 2024
9a6002e
Merge pull request #1570 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Jan 22, 2024
44f8d56
Merge pull request #1569 from kubernetes-sigs/dependabot/docker/golan…
k8s-ci-robot Jan 23, 2024
f383cf2
Merge pull request #1576 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Jan 23, 2024
616c9a6
Merge pull request #1577 from kubernetes-sigs/dependabot/go_modules/o…
k8s-ci-robot Jan 23, 2024
0bda8e8
update klog version to latest. change %w unwrap to %v
leiyiz Jan 22, 2024
dd1bd02
Add changelog for 1.9.16
mattcary Jan 23, 2024
55c7721
Add changelog for 1.8.19
mattcary Jan 23, 2024
afff184
Merge pull request #1582 from mattcary/changelog
mattcary Jan 23, 2024
091a259
Merge pull request #1579 from leiyiz/pollError
k8s-ci-robot Jan 24, 2024
adde7e2
Bump the google-golang group with 2 updates
dependabot[bot] Jan 29, 2024
b7bee67
Bump the k8s-dependencies group with 1 update
dependabot[bot] Jan 29, 2024
950d946
Merge pull request #1583 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Jan 29, 2024
e75b9a3
Merge pull request #1584 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Jan 29, 2024
f5071fa
update driver to support staging compute
Sneha-at Feb 1, 2024
5006820
Bump the google-golang group with 1 update
dependabot[bot] Feb 5, 2024
70099be
Merge pull request #1588 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Feb 6, 2024
bc0ff7d
Bump the cloud-go group with 3 updates
dependabot[bot] Feb 6, 2024
35ab159
Merge pull request #1587 from kubernetes-sigs/dependabot/go_modules/c…
k8s-ci-robot Feb 6, 2024
4d931b6
add logs for testing
Sneha-at Feb 6, 2024
6aae7d2
add logs for PID
Sneha-at Feb 6, 2024
08d22b0
Bump golang from 1.21.6 to 1.22.0
dependabot[bot] Feb 12, 2024
0b43e57
Bump the golang-x group with 6 updates
dependabot[bot] Feb 12, 2024
2b66e8d
Bump the k8s-dependencies group with 1 update
dependabot[bot] Feb 12, 2024
c206916
Changelog updates
mattcary Feb 13, 2024
87c2e45
Map UNSUPPORTED_OPERATION GCE operation error codes to Invalid Argument
amacaskill Feb 13, 2024
ce810c4
Add checks for compute environment flags and url checks
Sneha-at Feb 9, 2024
db3f3d9
add unit test
Sneha-at Feb 14, 2024
097e5b9
Cleaning up some added debug log
Sneha-at Feb 14, 2024
46ad7e7
fail on incorrect endpoint
Sneha-at Feb 14, 2024
13f981e
remove invalid compute endpoint testcase as updated logic causes cras…
Sneha-at Feb 15, 2024
a569fcb
Merge pull request #1606 from amacaskill/unsupported-op
k8s-ci-robot Feb 15, 2024
5a6795e
Merge pull request #1605 from mattcary/changelog-orphaned
k8s-ci-robot Feb 15, 2024
81485ea
Add url check during initialization
Sneha-at Feb 15, 2024
afe6c38
Update flag to use pointers
Sneha-at Feb 15, 2024
05d893a
Merge pull request #1586 from Sneha-at/add_staging_support
k8s-ci-robot Feb 16, 2024
70148a9
Add support for a multi-zone volumeHandle
pwschuurman Feb 8, 2024
e741fa9
Merge pull request #1595 from kubernetes-sigs/dependabot/docker/golan…
k8s-ci-robot Feb 16, 2024
32067eb
Merge pull request #1596 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Feb 16, 2024
ed8ce6c
Bump the cloud-go group with 2 updates
dependabot[bot] Feb 16, 2024
d69610c
Merge pull request #1593 from pwschuurman/hdml-support-upstream
k8s-ci-robot Feb 16, 2024
3de7dd0
fix pointer issue for GCE staging support
Sneha-at Feb 16, 2024
a911ecd
Merge pull request #1599 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Feb 16, 2024
36edaac
Merge pull request #1607 from kubernetes-sigs/dependabot/go_modules/c…
k8s-ci-robot Feb 17, 2024
55091b9
Merge pull request #1609 from Sneha-at/add_staging_support
k8s-ci-robot Feb 17, 2024
ecd8f7f
Bump the k8s-dependencies group with 1 update
dependabot[bot] Feb 19, 2024
82f859a
Bump the google-golang group with 3 updates
dependabot[bot] Feb 19, 2024
91d6729
Merge pull request #1611 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Feb 20, 2024
1234643
Bump the golang-x group with 1 update
dependabot[bot] Feb 20, 2024
fa42f89
Merge pull request #1612 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Feb 21, 2024
6a1a3de
Merge pull request #1613 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Feb 21, 2024
52ecb88
Add changelog for 1.13.1
amacaskill Feb 21, 2024
26b6ba8
Merge pull request #1618 from amacaskill/changelog
k8s-ci-robot Feb 21, 2024
ba5a34c
Update stable-master with v1.13.1
amacaskill Feb 22, 2024
eda80f1
Merge pull request #1619 from amacaskill/update-stable-image
k8s-ci-robot Feb 22, 2024
7358870
Update to handle when no compute endpoint is passed
Sneha-at Feb 22, 2024
13b8eb9
Merge pull request #1620 from Sneha-at/add_staging_support
amacaskill Feb 23, 2024
9629ffe
1.13.2 Changelog, update rc image
amacaskill Feb 23, 2024
fda4862
release-1.13 cut details for 1.13.2
amacaskill Feb 23, 2024
f634cc9
Merge pull request #1623 from amacaskill/1.13.2-release-notes
k8s-ci-robot Feb 23, 2024
f40f750
Merge pull request #1624 from amacaskill/1.13.2-stable-master
k8s-ci-robot Feb 24, 2024
68e8cdd
Add flag to toggle instances.get over disks.get compute API on Contro…
pwschuurman Mar 2, 2024
7d2ac76
Merge pull request #1626 from pwschuurman/use-instance-api-controller…
k8s-ci-robot Mar 4, 2024
de3b3d1
Add support for read_ahead_kb mount flag
pwschuurman Mar 3, 2024
d6b1856
Merge pull request #1627 from pwschuurman/add-readahead-support
k8s-ci-robot Mar 5, 2024
26b805e
Add 1.13.3 Changelog, update rc image to v1.13.3-rc1
pwschuurman Mar 5, 2024
d3e3251
Merge pull request #1632 from pwschuurman/changelog-rc-13-3
pwschuurman Mar 5, 2024
e19fa90
Fix nvme path filtering logic for udevadm trigger
pwschuurman Mar 7, 2024
dec1fe5
Merge pull request #1633 from pwschuurman/fix-nvme-pattern
k8s-ci-robot Mar 7, 2024
a76d732
Update CHANGELOG-1.13.md for v1.13.4
pwschuurman Mar 7, 2024
825bc59
Merge pull request #1635 from pwschuurman/update-changelog-r13
k8s-ci-robot Mar 8, 2024
ac65c68
Bump the golang-x group with 7 updates
dependabot[bot] Mar 11, 2024
d8da8f2
Bump the k8s-dependencies group with 1 update
dependabot[bot] Mar 11, 2024
33c2867
Bump the onsi group with 1 update
dependabot[bot] Mar 11, 2024
f8e3e57
Bump golang from 1.22.0 to 1.22.1
dependabot[bot] Mar 11, 2024
c6cc542
CVE-2024-24786: bump google.golang.org/protobuf to v1.33.0
dobsonj Mar 12, 2024
a17b6dc
Merge pull request #1642 from dobsonj/CVE-2024-24786-origin-master
k8s-ci-robot Mar 18, 2024
c858e86
Merge pull request #1629 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Mar 18, 2024
8e7f82a
Merge pull request #1637 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Mar 18, 2024
e1b119e
Merge pull request #1640 from kubernetes-sigs/dependabot/go_modules/o…
k8s-ci-robot Mar 18, 2024
f196974
Merge pull request #1641 from kubernetes-sigs/dependabot/docker/golan…
k8s-ci-robot Mar 18, 2024
099edf8
Bump the google-golang group with 4 updates
dependabot[bot] Mar 18, 2024
8a3720c
Bump the k8s-dependencies group with 1 update
dependabot[bot] Mar 18, 2024
24b59f4
Merge pull request #1645 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Mar 18, 2024
e3a4680
Merge pull request #1643 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Mar 20, 2024
c2eb220
Bump the cloud-go group with 3 updates
dependabot[bot] Mar 20, 2024
ece8e05
Merge pull request #1644 from kubernetes-sigs/dependabot/go_modules/c…
k8s-ci-robot Mar 21, 2024
6ac0e7d
Bump the onsi group with 2 updates
dependabot[bot] Mar 25, 2024
449f360
Bump the google-golang group with 2 updates
dependabot[bot] Apr 1, 2024
cde24e7
Bump the k8s-dependencies group with 1 update
dependabot[bot] Apr 1, 2024
2db8ef4
Update isVolumePathMounted log message
songjiaxun Apr 3, 2024
256a2a0
Merge pull request #1654 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 3, 2024
5f953a6
Merge pull request #1649 from kubernetes-sigs/dependabot/go_modules/o…
k8s-ci-robot Apr 4, 2024
ac499d1
Add support for checking if a device is being used by a filesystem
pwschuurman Apr 4, 2024
cb041f3
Merge pull request #1655 from kubernetes-sigs/dependabot/go_modules/k…
k8s-ci-robot Apr 4, 2024
856d26b
Add link to Hyperdisk documentation for provisioned-throughput-on-create
pwschuurman Apr 5, 2024
d81bfcc
Merge pull request #1660 from kubernetes-sigs/pwschuurman-hd-document…
k8s-ci-robot Apr 5, 2024
b5066d9
Bump golang from 1.22.1 to 1.22.2
dependabot[bot] Apr 8, 2024
8de08cb
Bump google.golang.org/grpc in the google-golang group
dependabot[bot] Apr 15, 2024
deee156
migrate hyperdisk/chd/storagepools to GCE v1 disk API
amacaskill Apr 13, 2024
f038ec0
Merge pull request #1666 from amacaskill/migrate-sp-beta
k8s-ci-robot Apr 16, 2024
53cf99a
remove support for GCE Alpha Disks
amacaskill Apr 16, 2024
1055c3c
Merge pull request #1667 from amacaskill/remove-alpha
amacaskill Apr 16, 2024
1be92ef
Record original error code to operation_errors metric for temporary e…
amacaskill Apr 8, 2024
2359a89
Change k8s version from stable->master to stay up to date with cos ch…
amacaskill Apr 17, 2024
89be22e
Merge pull request #1670 from amacaskill/fix-integration-test
amacaskill Apr 17, 2024
28591b6
Merge pull request #1664 from amacaskill/temporary-slo-fix
k8s-ci-robot Apr 18, 2024
d1af651
Remove short variable declaration from validateStoragePools to allow …
amacaskill Apr 18, 2024
d0825e5
Merge pull request #1673 from amacaskill/fix-storage-pools-metric
amacaskill Apr 18, 2024
b67b1eb
Merge pull request #1665 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 19, 2024
9abc400
Bump the golang-x group with 8 updates
dependabot[bot] Apr 19, 2024
33389c1
Merge pull request #1662 from kubernetes-sigs/dependabot/go_modules/g…
k8s-ci-robot Apr 19, 2024
3c4464b
Merge pull request #1656 from kubernetes-sigs/songjiaxun-patch-1
k8s-ci-robot Apr 19, 2024
e26e399
Merge pull request #1658 from pwschuurman/disk-fs-check-at-unstage
k8s-ci-robot Apr 19, 2024
407448c
Fix CVE-2023-45288
dannawang0221 Apr 23, 2024
25246b8
update go version
dannawang0221 Apr 23, 2024
14869fa
update modules.txt
dannawang0221 Apr 23, 2024
71d58f7
update k8s.io/mount-utils to not use alpha version
dannawang0221 Apr 23, 2024
529a643
Merge pull request #1680 from dannawang0221/fix-CVE-2023-45288-1
k8s-ci-robot Apr 23, 2024
8c27a51
Bump cloud.google.com/go/compute/metadata in the cloud-go group
dependabot[bot] Apr 23, 2024
f3f12d6
Merge pull request #1661 from kubernetes-sigs/dependabot/docker/golan…
tyuchn Apr 24, 2024
2fde6e7
Merge pull request #1675 from kubernetes-sigs/dependabot/go_modules/c…
k8s-ci-robot Apr 24, 2024
e703794
Add support for addition of ResoureManagerTags to GCP Compute Disk, I…
arkadeepsen Apr 23, 2024
78ef53b
Merge pull request #1377 from arkadeepsen/resource-manager-tags
k8s-ci-robot Apr 25, 2024
abaaf5c
Fix e2e tests to run on cloudtop
mattcary Apr 29, 2024
9cb6caf
Merge pull request #1692 from mattcary/cloudtop
k8s-ci-robot Apr 29, 2024
24c4c0b
CFE-1021: Rebase to latest upstream master
bharath-b-rh Apr 30, 2024
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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion 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.21.5 as builder
FROM --platform=$BUILDPLATFORM golang:1.22.2 as builder

ARG STAGINGVERSION
ARG TARGETPLATFORM
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.21.5 AS builder
FROM --platform=$BUILDPLATFORM golang:1.22.2 AS builder

ARG TARGETPLATFORM
ARG STAGINGVERSION
Expand Down
2 changes: 1 addition & 1 deletion 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.21.5 as builder
FROM golang:1.22.2 as builder
WORKDIR /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver
ADD . .

Expand Down
11 changes: 6 additions & 5 deletions 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.10.1`
Latest stable image: `registry.k8s.io/cloud-provider-gcp/gcp-compute-persistent-disk-csi-driver:v1.13.2`

### Test Status

Expand All @@ -35,10 +35,10 @@ versions.

| Kubernetes Version | PD CSI Driver Version |
|--------------------|-----------------------|
| HEAD | v1.10.x |
| HEAD | v1.13.x |
| 1.29 | v1.12.x |
| 1.28 | v1.12.x |
| 1.27 | v1.10.x |
| 1.26 | v1.9.x |
| 1.25 | v1.8.x |

The manifest bundle which captures all the driver components (driver pod which includes the containers csi-provisioner, csi-resizer, csi-snapshotter, gce-pd-driver, csi-driver-registrar;
csi driver object, rbacs, pod security policies etc) for the lastest stable
Expand All @@ -59,7 +59,8 @@ See Github [Issues](https://github.com/kubernetes-sigs/gcp-compute-persistent-di
| disk-encryption-kms-key | Fully qualified resource identifier for the key to use to encrypt new disks. | Empty string. | Encrypt disk using Customer Managed Encryption Key (CMEK). See [GKE Docs](https://cloud.google.com/kubernetes-engine/docs/how-to/using-cmek#create_a_cmek_protected_attached_disk) for details. |
| labels | `key1=value1,key2=value2` | | Labels allow you to assign custom [GCE Disk labels](https://cloud.google.com/compute/docs/labeling-resources). |
| 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) for details, including valid ranges for throughput. |
| 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). |

### Topology

Expand Down
78 changes: 71 additions & 7 deletions cmd/gce-pd-csi-driver/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@ package main

import (
"context"
"errors"
"flag"
"fmt"
"math/rand"
"net/url"
"os"
"runtime"
"strings"
Expand All @@ -38,7 +41,6 @@ import (
var (
cloudConfigFilePath = flag.String("cloud-config", "", "Path to GCE cloud provider config")
endpoint = flag.String("endpoint", "unix:/tmp/csi.sock", "CSI endpoint")
computeEndpoint = flag.String("compute-endpoint", "", "If set, used as the endpoint for the GCE API.")
runControllerService = flag.Bool("run-controller-service", true, "If set to false then the CSI driver does not activate its controller service (default: true)")
runNodeService = flag.Bool("run-node-service", true, "If set to false then the CSI driver does not activate its node service (default: true)")
httpEndpoint = flag.String("http-endpoint", "", "The TCP network address where the prometheus metrics endpoint will listen (example: `:8080`). The default is empty string, which means metrics endpoint is disabled.")
Expand Down Expand Up @@ -67,10 +69,19 @@ var (

maxConcurrentFormatAndMount = flag.Int("max-concurrent-format-and-mount", 1, "If set then format and mount operations are serialized on each node. This is stronger than max-concurrent-format as it includes fsck and other mount operations")
formatAndMountTimeout = flag.Duration("format-and-mount-timeout", 1*time.Minute, "The maximum duration of a format and mount operation before another such operation will be started. Used only if --serialize-format-and-mount")
fallbackRequisiteZonesFlag = flag.String("fallback-requisite-zones", "", "Comma separated list of requisite zones that will be used if there are not sufficient zones present in requisite topologies when provisioning a disk")
enableStoragePoolsFlag = flag.Bool("enable-storage-pools", false, "If set to true, the CSI Driver will allow volumes to be provisioned in Storage Pools")

fallbackRequisiteZonesFlag = flag.String("fallback-requisite-zones", "", "Comma separated list of requisite zones that will be used if there are not sufficient zones present in requisite topologies when provisioning a disk")
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")
multiZoneVolumeHandleEnableFlag = flag.Bool("multi-zone-volume-handle-enable", false, "If set to true, the multi-zone volumeHandle feature will be enabled")

enableStoragePoolsFlag = flag.Bool("enable-storage-pools", false, "If set to true, the CSI Driver will allow volumes to be provisioned in Storage Pools")
computeEnvironment gce.Environment = gce.EnvironmentProduction
computeEndpoint *url.URL
allowedComputeEnvironment = []gce.Environment{gce.EnvironmentStaging, gce.EnvironmentProduction}

useInstanceAPIOnWaitForAttachDiskTypesFlag = flag.String("use-instance-api-to-poll-attachment-disk-types", "", "Comma separated list of disk types that should use instances.get API when polling for disk attach during ControllerPublish")

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")

version string
)
Expand All @@ -85,13 +96,16 @@ func init() {
// Use V(4) for general debug information logging
// Use V(5) for GCE Cloud Provider Call informational logging
// Use V(6) for extra repeated/polling information
enumFlag(&computeEnvironment, "compute-environment", allowedComputeEnvironment, "Operating compute environment")
urlFlag(&computeEndpoint, "compute-endpoint", "Compute endpoint")
klog.InitFlags(flag.CommandLine)
flag.Set("logtostderr", "true")
}

func main() {
flag.Parse()
rand.Seed(time.Now().UnixNano())
klog.Infof("Operating compute environment set to: %s and computeEndpoint is set to: %v", computeEnvironment, computeEndpoint)
handle()
os.Exit(0)
}
Expand Down Expand Up @@ -141,6 +155,14 @@ func handle() {
klog.Fatalf("Bad extra volume labels: %v", err.Error())
}

if len(*extraTagsStr) > 0 && !*runControllerService {
klog.Fatalf("Extra tags provided but not running controller")
}
extraTags, err := common.ConvertTagsStringToMap(*extraTagsStr)
if err != nil {
klog.Fatalf("Bad extra tags: %v", err.Error())
}

ctx, cancel := context.WithCancel(context.Background())
defer cancel()

Expand All @@ -150,19 +172,32 @@ func handle() {
// Initialize identity server
identityServer := driver.NewIdentityServer(gceDriver)

// Initilaize requisite zones
// Initialize requisite zones
fallbackRequisiteZones := strings.Split(*fallbackRequisiteZonesFlag, ",")

// Initialize multi-zone disk types
multiZoneVolumeHandleDiskTypes := strings.Split(*multiZoneVolumeHandleDiskTypesFlag, ",")
multiZoneVolumeHandleConfig := driver.MultiZoneVolumeHandleConfig{
Enable: *multiZoneVolumeHandleEnableFlag,
DiskTypes: multiZoneVolumeHandleDiskTypes,
}

// Initialize waitForAttach config
useInstanceAPIOnWaitForAttachDiskTypes := strings.Split(*useInstanceAPIOnWaitForAttachDiskTypesFlag, ",")
waitForAttachConfig := gce.WaitForAttachConfig{
UseInstancesAPIForDiskTypes: useInstanceAPIOnWaitForAttachDiskTypes,
}

// Initialize requirements for the controller service
var controllerServer *driver.GCEControllerServer
if *runControllerService {
cloudProvider, err := gce.CreateCloudProvider(ctx, version, *cloudConfigFilePath, *computeEndpoint)
cloudProvider, err := gce.CreateCloudProvider(ctx, version, *cloudConfigFilePath, computeEndpoint, computeEnvironment, waitForAttachConfig)
if err != nil {
klog.Fatalf("Failed to get cloud provider: %v", err.Error())
}
initialBackoffDuration := time.Duration(*errorBackoffInitialDurationMs) * time.Millisecond
maxBackoffDuration := time.Duration(*errorBackoffMaxDurationMs) * time.Millisecond
controllerServer = driver.NewControllerServer(gceDriver, cloudProvider, initialBackoffDuration, maxBackoffDuration, fallbackRequisiteZones, *enableStoragePoolsFlag)
controllerServer = driver.NewControllerServer(gceDriver, cloudProvider, initialBackoffDuration, maxBackoffDuration, fallbackRequisiteZones, *enableStoragePoolsFlag, multiZoneVolumeHandleConfig)
} else if *cloudConfigFilePath != "" {
klog.Warningf("controller service is disabled but cloud config given - it has no effect")
}
Expand All @@ -186,7 +221,7 @@ func handle() {
}
}

err = gceDriver.SetupGCEDriver(driverName, version, extraVolumeLabels, identityServer, controllerServer, nodeServer)
err = gceDriver.SetupGCEDriver(driverName, version, extraVolumeLabels, extraTags, identityServer, controllerServer, nodeServer)
if err != nil {
klog.Fatalf("Failed to initialize GCE CSI Driver: %v", err.Error())
}
Expand All @@ -205,3 +240,32 @@ func handle() {

gceDriver.Run(*endpoint, *grpcLogCharCap, *enableOtelTracing)
}

func enumFlag(target *gce.Environment, name string, allowedComputeEnvironment []gce.Environment, usage string) {
flag.Func(name, usage, func(flagValue string) error {
for _, allowedValue := range allowedComputeEnvironment {
if gce.Environment(flagValue) == allowedValue {
*target = gce.Environment(flagValue)
return nil
}
}
errMsg := fmt.Sprintf(`must be one of %v`, allowedComputeEnvironment)
return errors.New(errMsg)
})

}

func urlFlag(target **url.URL, name string, usage string) {
flag.Func(name, usage, func(flagValue string) error {
if flagValue == "" {
return nil
}
computeURL, err := url.ParseRequestURI(flagValue)
if err == nil {
*target = computeURL
return nil
}
klog.Errorf("Error parsing endpoint compute endpoint %v", err)
return err
})
}
Original file line number Diff line number Diff line change
Expand Up @@ -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.12.0-rc1"
newTag: "v1.13.3-rc1"
---

12 changes: 6 additions & 6 deletions deploy/kubernetes/images/stable-master/image.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ metadata:
name: imagetag-csi-provisioner
imageTag:
name: registry.k8s.io/sig-storage/csi-provisioner
newTag: "v3.4.0"
newTag: "v3.6.3"

---
apiVersion: builtin
Expand All @@ -13,7 +13,7 @@ metadata:
name: imagetag-csi-attacher
imageTag:
name: registry.k8s.io/sig-storage/csi-attacher
newTag: "v4.2.0"
newTag: "v4.4.3"
---

apiVersion: builtin
Expand All @@ -22,7 +22,7 @@ metadata:
name: imagetag-csi-resizer
imageTag:
name: registry.k8s.io/sig-storage/csi-resizer
newTag: "v1.7.0"
newTag: "v1.9.3"
---

apiVersion: builtin
Expand All @@ -31,7 +31,7 @@ metadata:
name: imagetag-csi-snapshotter
imageTag:
name: registry.k8s.io/sig-storage/csi-snapshotter
newTag: "v6.1.0"
newTag: "v6.3.3"
---

apiVersion: builtin
Expand All @@ -40,7 +40,7 @@ metadata:
name: imagetag-csi-node-registrar
imageTag:
name: registry.k8s.io/sig-storage/csi-node-driver-registrar
newTag: "v2.7.0"
newTag: "v2.9.3"
---

apiVersion: builtin
Expand All @@ -52,5 +52,5 @@ imageTag:
# Don't change stable image without changing pdImagePlaceholder in
# test/k8s-integration/main.go
newName: registry.k8s.io/cloud-provider-gcp/gcp-compute-persistent-disk-csi-driver
newTag: "v1.10.1"
newTag: "v1.13.2"
---
8 changes: 8 additions & 0 deletions examples/kubernetes/demo-sc-with-resource-tags.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-gce-pd-with-resource-tags
provisioner: pd.csi.storage.gke.io
parameters:
resource-tags: parent1/key1/value1,parent2/key2/value2
volumeBindingMode: WaitForFirstConsumer
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshotClass
metadata:
name: csi-gce-pd-snapshot-class-with-resource-tags
parameters:
resource-tags: parent1/key1/value1,parent2/key2/value2
driver: pd.csi.storage.gke.io
deletionPolicy: Delete
Loading