From ab557be8688eff6baea86f3dace8dd81079618f2 Mon Sep 17 00:00:00 2001 From: Saikat Roychowdhury Date: Mon, 4 May 2020 19:42:41 +0000 Subject: [PATCH 1/5] add 2.1-canary csi snapshotter side car to PD CSI driver in release-staging-head --- .../controller_add_snapshotter.yaml | 17 ++++++++++ .../kustomization.yaml | 14 ++++++++ .../rbac_add_snapshots_to_provisioner.yaml | 16 ++++++++++ .../rbac_add_snapshotter.yaml | 32 +++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-head/controller_add_snapshotter.yaml create mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshots_to_provisioner.yaml create mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshotter.yaml diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/controller_add_snapshotter.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-head/controller_add_snapshotter.yaml new file mode 100644 index 000000000..fdc225977 --- /dev/null +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-head/controller_add_snapshotter.yaml @@ -0,0 +1,17 @@ +kind: StatefulSet +apiVersion: apps/v1 +metadata: + name: csi-gce-pd-controller +spec: + template: + spec: + containers: + - name: csi-snapshotter + imagePullPolicy: Always + image: quay.io/k8scsi/csi-snapshotter:canary + args: + - "--v=5" + - "--csi-address=/csi/csi.sock" + volumeMounts: + - name: socket-dir + mountPath: /csi diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml index 31fbdf841..9a91fb988 100644 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml @@ -18,3 +18,17 @@ images: - name: gke.gcr.io/csi-resizer newName: quay.io/k8scsi/csi-resizer newTag: "canary" +patches: +- controller_add_snapshotter.yaml +patchesJson6902: +- target: + group: rbac.authorization.k8s.io + version: v1 + kind: ClusterRole + name: csi-gce-pd-provisioner-role + path: rbac_add_snapshots_to_provisioner.yaml +resources: +- rbac_add_snapshotter.yaml +# Reapplying namespace transformer to include newly added RBAC rules. +namespace: + gce-pd-csi-driver diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshots_to_provisioner.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshots_to_provisioner.yaml new file mode 100644 index 000000000..746ea82fe --- /dev/null +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshots_to_provisioner.yaml @@ -0,0 +1,16 @@ +# arrays without strategic patch merge defined need to be appended +# using jsonpatch +# https://github.com/kubernetes-sigs/kustomize/blob/master/examples/jsonpatch.md +- op: add + path: /rules/- + value: + apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] + verbs: ["get", "list"] + +- op: add + path: /rules/- + value: + apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["get", "list"] diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshotter.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshotter.yaml new file mode 100644 index 000000000..dcc7af90a --- /dev/null +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshotter.yaml @@ -0,0 +1,32 @@ +# xref: https://github.com/kubernetes-csi/external-snapshotter/blob/master/deploy/kubernetes/rbac.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: csi-gce-pd-snapshotter-role +rules: + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + # Secrets resource omitted since GCE PD snapshots does not require them + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents/status"] + verbs: ["update"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-gce-pd-controller-snapshotter-binding +subjects: + - kind: ServiceAccount + name: csi-gce-pd-controller-sa +roleRef: + kind: ClusterRole + name: csi-gce-pd-snapshotter-role + apiGroup: rbac.authorization.k8s.io From 1385635594ac52fd17a72bbcf2a6ef99aa26bcd7 Mon Sep 17 00:00:00 2001 From: Saikat Roychowdhury Date: Wed, 6 May 2020 05:44:27 +0000 Subject: [PATCH 2/5] enable 2.x snapshotter side car in PD CSI driver in staging rc --- .../controller_add_snapshotter.yaml | 17 ++++++++++ .../enable_sidecar_metrics.yaml | 12 +++++-- .../kustomization.yaml | 14 +++++++- .../rbac_add_snapshots_to_provisioner.yaml | 16 ++++++++++ .../rbac_add_snapshotter.yaml | 32 +++++++++++++++++++ 5 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-rc/controller_add_snapshotter.yaml create mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshots_to_provisioner.yaml create mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshotter.yaml diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/controller_add_snapshotter.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/controller_add_snapshotter.yaml new file mode 100644 index 000000000..27f1dd727 --- /dev/null +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/controller_add_snapshotter.yaml @@ -0,0 +1,17 @@ +kind: StatefulSet +apiVersion: apps/v1 +metadata: + name: csi-gce-pd-controller +spec: + template: + spec: + containers: + - name: csi-snapshotter + imagePullPolicy: Always + image: gcr.io/gke-release-staging/csi-snapshotter:v2.1.1-gke.0 + args: + - "--v=5" + - "--csi-address=/csi/csi.sock" + volumeMounts: + - name: socket-dir + mountPath: /csi diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/enable_sidecar_metrics.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/enable_sidecar_metrics.yaml index 9f8f6120f..b4dc7d28f 100644 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/enable_sidecar_metrics.yaml +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/enable_sidecar_metrics.yaml @@ -1,14 +1,20 @@ -# for external-provisioner +# for external-snapshotter - op: add path: /spec/template/spec/containers/0/args/- + value: "--metrics-address=:22014" + +# for external-provisioner +- op: add + path: /spec/template/spec/containers/1/args/- value: "--metrics-address=:22011" # for external-attacher - op: add - path: /spec/template/spec/containers/1/args/- + path: /spec/template/spec/containers/2/args/- value: "--metrics-address=:22012" # for external-resizer - op: add - path: /spec/template/spec/containers/2/args/- + path: /spec/template/spec/containers/3/args/- value: "--metrics-address=:22013" + diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml index 340864393..95150bcbb 100644 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml @@ -18,11 +18,23 @@ images: - name: gke.gcr.io/csi-resizer newName: gcr.io/gke-release-staging/csi-resizer newTag: "v0.5.0-gke.0" - +patches: +- controller_add_snapshotter.yaml patchesJson6902: +- target: + group: rbac.authorization.k8s.io + version: v1 + kind: ClusterRole + name: csi-gce-pd-provisioner-role + path: rbac_add_snapshots_to_provisioner.yaml - target: group: apps version: v1 kind: StatefulSet name: csi-gce-pd-controller path: enable_sidecar_metrics.yaml +resources: +- rbac_add_snapshotter.yaml +# Reapplying namespace transformer to include newly added RBAC rules. +namespace: + gce-pd-csi-driver diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshots_to_provisioner.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshots_to_provisioner.yaml new file mode 100644 index 000000000..746ea82fe --- /dev/null +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshots_to_provisioner.yaml @@ -0,0 +1,16 @@ +# arrays without strategic patch merge defined need to be appended +# using jsonpatch +# https://github.com/kubernetes-sigs/kustomize/blob/master/examples/jsonpatch.md +- op: add + path: /rules/- + value: + apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] + verbs: ["get", "list"] + +- op: add + path: /rules/- + value: + apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["get", "list"] diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshotter.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshotter.yaml new file mode 100644 index 000000000..dcc7af90a --- /dev/null +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshotter.yaml @@ -0,0 +1,32 @@ +# xref: https://github.com/kubernetes-csi/external-snapshotter/blob/master/deploy/kubernetes/rbac.yaml +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: csi-gce-pd-snapshotter-role +rules: + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + # Secrets resource omitted since GCE PD snapshots does not require them + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents/status"] + verbs: ["update"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-gce-pd-controller-snapshotter-binding +subjects: + - kind: ServiceAccount + name: csi-gce-pd-controller-sa +roleRef: + kind: ClusterRole + name: csi-gce-pd-snapshotter-role + apiGroup: rbac.authorization.k8s.io From fe230b44a3ca8996841904fffb7c73936986bea7 Mon Sep 17 00:00:00 2001 From: Saikat Roychowdhury Date: Thu, 7 May 2020 17:00:40 +0000 Subject: [PATCH 3/5] Provide optional flags to run PD CSI driver snapshot tests. --- .../config/pd-volumesnapshotclass.yaml | 6 ++++++ .../config/test-config-template.in | 4 ++++ test/k8s-integration/driver-config.go | 21 +++++++++++++------ test/k8s-integration/main.go | 12 ++++++----- test/run-k8s-integration-local.sh | 10 +++++++++ test/run-k8s-integration.sh | 4 ++++ 6 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 test/k8s-integration/config/pd-volumesnapshotclass.yaml diff --git a/test/k8s-integration/config/pd-volumesnapshotclass.yaml b/test/k8s-integration/config/pd-volumesnapshotclass.yaml new file mode 100644 index 000000000..bff9c3cde --- /dev/null +++ b/test/k8s-integration/config/pd-volumesnapshotclass.yaml @@ -0,0 +1,6 @@ +apiVersion: snapshot.storage.k8s.io/v1beta1 +kind: VolumeSnapshotClass +metadata: + name: csi-gce-pd-snapshot-class +driver: pd.csi.storage.gke.io +deletionPolicy: Delete diff --git a/test/k8s-integration/config/test-config-template.in b/test/k8s-integration/config/test-config-template.in index 9cdc2787e..971986a0b 100644 --- a/test/k8s-integration/config/test-config-template.in +++ b/test/k8s-integration/config/test-config-template.in @@ -1,5 +1,9 @@ StorageClass: FromFile: {{.StorageClassFile}} +{{if .SnapshotClassFile }} +SnapshotClass: + FromFile: {{ .SnapshotClassFile }} +{{end}} DriverInfo: Name: csi-gcepd SupportedFsType: diff --git a/test/k8s-integration/driver-config.go b/test/k8s-integration/driver-config.go index e8705883d..00fdc9daf 100644 --- a/test/k8s-integration/driver-config.go +++ b/test/k8s-integration/driver-config.go @@ -9,8 +9,9 @@ import ( ) type driverConfig struct { - StorageClassFile string - Capabilities []string + StorageClassFile string + SnapshotClassFile string + Capabilities []string } const ( @@ -21,7 +22,7 @@ const ( // generateDriverConfigFile loads a testdriver config template and creates a file // with the test-specific configuration -func generateDriverConfigFile(pkgDir, storageClassFile, deploymentStrat string) (string, error) { +func generateDriverConfigFile(pkgDir, storageClassFile, snapshotClassFile, deploymentStrat string) (string, error) { // Load template t, err := template.ParseFiles(filepath.Join(pkgDir, testConfigDir, configTemplateFile)) if err != nil { @@ -51,7 +52,6 @@ func generateDriverConfigFile(pkgDir, storageClassFile, deploymentStrat string) } /* Unsupported Capabilities: - snapshotDataSource pvcDataSource RWX volumeLimits # PD Supports volume limits but test is very slow @@ -72,9 +72,18 @@ func generateDriverConfigFile(pkgDir, storageClassFile, deploymentStrat string) return "", fmt.Errorf("got unknown deployment strat %s, expected gce or gke", deploymentStrat) } + var absSnapshotClassFilePath string + // If snapshot class is passed in as argument, include snapshot specific driver capabiltiites. + if snapshotClassFile != "" { + caps = append(caps, "snapshotDataSource") + // Update the absolute file path pointing to the snapshot class file, if it is provided as an argument. + absSnapshotClassFilePath = filepath.Join(pkgDir, testConfigDir, snapshotClassFile) + } + params := driverConfig{ - StorageClassFile: filepath.Join(pkgDir, testConfigDir, storageClassFile), - Capabilities: caps, + StorageClassFile: filepath.Join(pkgDir, testConfigDir, storageClassFile), + SnapshotClassFile: absSnapshotClassFilePath, + Capabilities: caps, } // Write config file diff --git a/test/k8s-integration/main.go b/test/k8s-integration/main.go index 63f09725b..b807e776b 100644 --- a/test/k8s-integration/main.go +++ b/test/k8s-integration/main.go @@ -47,6 +47,7 @@ var ( // Test infrastructure flags boskosResourceType = flag.String("boskos-resource-type", "gce-project", "name of the boskos resource type to reserve") storageClassFile = flag.String("storageclass-file", "", "name of storageclass yaml file to use for test relative to test/k8s-integration/config") + snapshotClassFile = flag.String("snapshotclass-file", "", "name of snapshotclass yaml file to use for test relative to test/k8s-integration/config") inProw = flag.Bool("run-in-prow", false, "is the test running in PROW") // Driver flags @@ -300,10 +301,9 @@ func handle() error { } testSkip := generateTestSkip(normalizedVersion) - // Run the tests using the testDir kubernetes if len(*storageClassFile) != 0 { - err = runCSITests(pkgDir, testDir, *testFocus, testSkip, *storageClassFile, cloudProviderArgs, *deploymentStrat) + err = runCSITests(pkgDir, testDir, *testFocus, testSkip, *storageClassFile, *snapshotClassFile, cloudProviderArgs, *deploymentStrat) } else if *migrationTest { err = runMigrationTests(pkgDir, testDir, *testFocus, testSkip, cloudProviderArgs) } else { @@ -318,7 +318,7 @@ func handle() error { } func generateTestSkip(normalizedVersion string) string { - skipString := "\\[Disruptive\\]|\\[Serial\\]|\\[Feature:.+\\]" + skipString := "\\[Disruptive\\]|\\[Serial\\]" switch normalizedVersion { // Fall-through versioning since all test cases we want to skip in 1.15 // should also be skipped in 1.14 @@ -333,6 +333,8 @@ func generateTestSkip(normalizedVersion string) string { // bug-fix introduced in 1.17 // (https://github.com/kubernetes/kubernetes/pull/81163) skipString = skipString + "|volumeMode\\sshould\\snot\\smount\\s/\\smap\\sunused\\svolumes\\sin\\sa\\spod" + // Skip Snapshot tests pre 1.17 + skipString = skipString + "|snapshot" fallthrough case "1.17": case "latest": @@ -359,8 +361,8 @@ func runMigrationTests(pkgDir, testDir, testFocus, testSkip string, cloudProvide return runTestsWithConfig(testDir, testFocus, testSkip, "--storage.migratedPlugins=kubernetes.io/gce-pd", cloudProviderArgs) } -func runCSITests(pkgDir, testDir, testFocus, testSkip, storageClassFile string, cloudProviderArgs []string, deploymentStrat string) error { - testDriverConfigFile, err := generateDriverConfigFile(pkgDir, storageClassFile, deploymentStrat) +func runCSITests(pkgDir, testDir, testFocus, testSkip, storageClassFile, snapshotClassFile string, cloudProviderArgs []string, deploymentStrat string) error { + testDriverConfigFile, err := generateDriverConfigFile(pkgDir, storageClassFile, snapshotClassFile, deploymentStrat) if err != nil { return err } diff --git a/test/run-k8s-integration-local.sh b/test/run-k8s-integration-local.sh index d3f76df32..dd507dda4 100755 --- a/test/run-k8s-integration-local.sh +++ b/test/run-k8s-integration-local.sh @@ -46,6 +46,16 @@ make -C ${PKGDIR} test-k8s-integration # --gce-region="us-central1" --num-nodes=${NUM_NODES:-3} --gke-cluster-version="latest" --deployment-strategy="gke" \ # --test-version="master" +# This version of the command builds and deploys the GCE PD CSI driver. +# Points to a local K8s repository to get the e2e test binary, does not bring up +# or tear down the kubernetes cluster. In addition, it runs External Storage +# snapshot tests for the PD CSI driver. +#${PKGDIR}/bin/k8s-integration-test --run-in-prow=false \ +#--staging-image=${GCE_PD_CSI_STAGING_IMAGE} --service-account-file=${GCE_PD_SA_DIR}/cloud-sa.json \ +#--deploy-overlay-name=prow-gke-release-staging-head --bringup-cluster=false --teardown-cluster=false --test-focus="External.*Storage.*snapshot" --local-k8s-dir=$KTOP \ +#--storageclass-file=sc-standard.yaml --snapshotclass-file=pd-volumesnapshotclass.yaml --do-driver-build=true \ +#--gce-zone="us-central1-b" --num-nodes=${NUM_NODES:-3} + # This version of the command does not build the driver or K8s, points to a # local K8s repo to get the e2e.test binary, and does not bring up or down the cluster diff --git a/test/run-k8s-integration.sh b/test/run-k8s-integration.sh index b321da3d0..07abc9a49 100755 --- a/test/run-k8s-integration.sh +++ b/test/run-k8s-integration.sh @@ -44,4 +44,8 @@ else base_cmd="${base_cmd} --gce-region=${gce_region}" fi +if [[ "$overlay_name" =~ .*"gke-release-staging".* ]]; then + base_cmd="${base_cmd} --snapshotclass-file=pd-volumesnapshotclass.yaml" +fi + eval $base_cmd From 09d40f3eb28c7e94f059a0d50dc86a025457b977 Mon Sep 17 00:00:00 2001 From: Saikat Roychowdhury Date: Wed, 13 May 2020 02:23:59 +0000 Subject: [PATCH 4/5] Enable csi snapshotter to stable overlay --- deploy/kubernetes/base/controller.yaml | 8 ++++ deploy/kubernetes/base/setup-cluster.yaml | 40 +++++++++++++++- .../alpha/controller_add_snapshotter.yaml | 17 ------- .../overlays/alpha/kustomization.yaml | 15 +----- .../rbac_add_snapshots_to_provisioner.yaml | 16 ------- .../overlays/alpha/rbac_add_snapshotter.yaml | 48 ------------------- .../controller_add_snapshotter.yaml | 17 ------- .../kustomization.yaml | 17 ++----- .../rbac_add_snapshots_to_provisioner.yaml | 16 ------- .../rbac_add_snapshotter.yaml | 32 ------------- .../controller_add_snapshotter.yaml | 17 ------- .../enable_sidecar_metrics.yaml | 15 +++--- .../kustomization.yaml | 16 ++----- .../rbac_add_snapshots_to_provisioner.yaml | 16 ------- .../rbac_add_snapshotter.yaml | 32 ------------- .../overlays/stable/kustomization.yaml | 3 ++ test/run-k8s-integration.sh | 6 +-- 17 files changed, 65 insertions(+), 266 deletions(-) delete mode 100644 deploy/kubernetes/overlays/alpha/controller_add_snapshotter.yaml delete mode 100644 deploy/kubernetes/overlays/alpha/rbac_add_snapshots_to_provisioner.yaml delete mode 100644 deploy/kubernetes/overlays/alpha/rbac_add_snapshotter.yaml delete mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-head/controller_add_snapshotter.yaml delete mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshots_to_provisioner.yaml delete mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshotter.yaml delete mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-rc/controller_add_snapshotter.yaml delete mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshots_to_provisioner.yaml delete mode 100644 deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshotter.yaml diff --git a/deploy/kubernetes/base/controller.yaml b/deploy/kubernetes/base/controller.yaml index 1dcb10c46..e357b3166 100644 --- a/deploy/kubernetes/base/controller.yaml +++ b/deploy/kubernetes/base/controller.yaml @@ -48,6 +48,14 @@ spec: volumeMounts: - name: socket-dir mountPath: /csi + - name: csi-snapshotter + image: gke.gcr.io/csi-snapshotter + args: + - "--v=5" + - "--csi-address=/csi/csi.sock" + volumeMounts: + - name: socket-dir + mountPath: /csi - name: gce-pd-driver # Don't change base image without changing pdImagePlaceholder in # test/k8s-integration/main.go diff --git a/deploy/kubernetes/base/setup-cluster.yaml b/deploy/kubernetes/base/setup-cluster.yaml index fc0a896d0..0a70f781e 100644 --- a/deploy/kubernetes/base/setup-cluster.yaml +++ b/deploy/kubernetes/base/setup-cluster.yaml @@ -36,7 +36,12 @@ rules: - apiGroups: [""] resources: ["nodes"] verbs: ["get", "list", "watch"] - + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] + verbs: ["get", "list"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["get", "list"] --- kind: ClusterRoleBinding @@ -193,3 +198,36 @@ roleRef: subjects: - kind: ServiceAccount name: csi-gce-pd-node-sa + +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: csi-gce-pd-snapshotter-role +rules: + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + # Secrets resource omitted since GCE PD snapshots does not require them + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents/status"] + verbs: ["update"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-gce-pd-controller-snapshotter-binding +subjects: + - kind: ServiceAccount + name: csi-gce-pd-controller-sa +roleRef: + kind: ClusterRole + name: csi-gce-pd-snapshotter-role + apiGroup: rbac.authorization.k8s.io diff --git a/deploy/kubernetes/overlays/alpha/controller_add_snapshotter.yaml b/deploy/kubernetes/overlays/alpha/controller_add_snapshotter.yaml deleted file mode 100644 index 76c8039fa..000000000 --- a/deploy/kubernetes/overlays/alpha/controller_add_snapshotter.yaml +++ /dev/null @@ -1,17 +0,0 @@ -kind: StatefulSet -apiVersion: apps/v1 -metadata: - name: csi-gce-pd-controller -spec: - template: - spec: - containers: - - name: csi-snapshotter - imagePullPolicy: Always - image: gke.gcr.io/csi-snapshotter:v1.2.2-gke.0 - args: - - "--v=5" - - "--csi-address=/csi/csi.sock" - volumeMounts: - - name: socket-dir - mountPath: /csi diff --git a/deploy/kubernetes/overlays/alpha/kustomization.yaml b/deploy/kubernetes/overlays/alpha/kustomization.yaml index dbfbc9ec3..06cb34b25 100644 --- a/deploy/kubernetes/overlays/alpha/kustomization.yaml +++ b/deploy/kubernetes/overlays/alpha/kustomization.yaml @@ -2,17 +2,4 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization bases: - ../stable -patches: -- controller_add_snapshotter.yaml -patchesJson6902: -- target: - group: rbac.authorization.k8s.io - version: v1 - kind: ClusterRole - name: csi-gce-pd-provisioner-role - path: rbac_add_snapshots_to_provisioner.yaml -resources: -- rbac_add_snapshotter.yaml -# Reapplying namespace transformer to include newly added RBAC rules. -namespace: - gce-pd-csi-driver + diff --git a/deploy/kubernetes/overlays/alpha/rbac_add_snapshots_to_provisioner.yaml b/deploy/kubernetes/overlays/alpha/rbac_add_snapshots_to_provisioner.yaml deleted file mode 100644 index 746ea82fe..000000000 --- a/deploy/kubernetes/overlays/alpha/rbac_add_snapshots_to_provisioner.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# arrays without strategic patch merge defined need to be appended -# using jsonpatch -# https://github.com/kubernetes-sigs/kustomize/blob/master/examples/jsonpatch.md -- op: add - path: /rules/- - value: - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots"] - verbs: ["get", "list"] - -- op: add - path: /rules/- - value: - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents"] - verbs: ["get", "list"] diff --git a/deploy/kubernetes/overlays/alpha/rbac_add_snapshotter.yaml b/deploy/kubernetes/overlays/alpha/rbac_add_snapshotter.yaml deleted file mode 100644 index 3902b6ae6..000000000 --- a/deploy/kubernetes/overlays/alpha/rbac_add_snapshotter.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# xref: https://github.com/kubernetes-csi/external-snapshotter/blob/master/deploy/kubernetes/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: csi-gce-pd-snapshotter-role -rules: - - apiGroups: [""] - resources: ["persistentvolumes"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["persistentvolumeclaims"] - verbs: ["get", "list", "watch", "update"] - - apiGroups: ["storage.k8s.io"] - resources: ["storageclasses"] - verbs: ["get", "list", "watch"] - - apiGroups: [""] - resources: ["events"] - verbs: ["list", "watch", "create", "update", "patch"] - # Secrets resource omitted since GCE PD snapshots does not require them - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotclasses"] - verbs: ["get", "list", "watch"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents"] - verbs: ["create", "get", "list", "watch", "update", "delete"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots"] - verbs: ["get", "list", "watch", "update"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots/status"] - verbs: ["update"] - - apiGroups: ["apiextensions.k8s.io"] - resources: ["customresourcedefinitions"] - verbs: ["create", "list", "watch", "delete"] - ---- - -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: csi-gce-pd-controller-snapshotter-binding -subjects: - - kind: ServiceAccount - name: csi-gce-pd-controller-sa -roleRef: - kind: ClusterRole - name: csi-gce-pd-snapshotter-role - apiGroup: rbac.authorization.k8s.io diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/controller_add_snapshotter.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-head/controller_add_snapshotter.yaml deleted file mode 100644 index fdc225977..000000000 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-head/controller_add_snapshotter.yaml +++ /dev/null @@ -1,17 +0,0 @@ -kind: StatefulSet -apiVersion: apps/v1 -metadata: - name: csi-gce-pd-controller -spec: - template: - spec: - containers: - - name: csi-snapshotter - imagePullPolicy: Always - image: quay.io/k8scsi/csi-snapshotter:canary - args: - - "--v=5" - - "--csi-address=/csi/csi.sock" - volumeMounts: - - name: socket-dir - mountPath: /csi diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml index 9a91fb988..a882ae3d8 100644 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml @@ -18,17 +18,6 @@ images: - name: gke.gcr.io/csi-resizer newName: quay.io/k8scsi/csi-resizer newTag: "canary" -patches: -- controller_add_snapshotter.yaml -patchesJson6902: -- target: - group: rbac.authorization.k8s.io - version: v1 - kind: ClusterRole - name: csi-gce-pd-provisioner-role - path: rbac_add_snapshots_to_provisioner.yaml -resources: -- rbac_add_snapshotter.yaml -# Reapplying namespace transformer to include newly added RBAC rules. -namespace: - gce-pd-csi-driver +- name: gke.gcr.io/csi-snapshotter + newName: quay.io/k8scsi/csi-snapshotter + newTag: "canary" diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshots_to_provisioner.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshots_to_provisioner.yaml deleted file mode 100644 index 746ea82fe..000000000 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshots_to_provisioner.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# arrays without strategic patch merge defined need to be appended -# using jsonpatch -# https://github.com/kubernetes-sigs/kustomize/blob/master/examples/jsonpatch.md -- op: add - path: /rules/- - value: - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots"] - verbs: ["get", "list"] - -- op: add - path: /rules/- - value: - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents"] - verbs: ["get", "list"] diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshotter.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshotter.yaml deleted file mode 100644 index dcc7af90a..000000000 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-head/rbac_add_snapshotter.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# xref: https://github.com/kubernetes-csi/external-snapshotter/blob/master/deploy/kubernetes/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: csi-gce-pd-snapshotter-role -rules: - - apiGroups: [""] - resources: ["events"] - verbs: ["list", "watch", "create", "update", "patch"] - # Secrets resource omitted since GCE PD snapshots does not require them - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotclasses"] - verbs: ["get", "list", "watch"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents"] - verbs: ["create", "get", "list", "watch", "update", "delete"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents/status"] - verbs: ["update"] ---- - -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: csi-gce-pd-controller-snapshotter-binding -subjects: - - kind: ServiceAccount - name: csi-gce-pd-controller-sa -roleRef: - kind: ClusterRole - name: csi-gce-pd-snapshotter-role - apiGroup: rbac.authorization.k8s.io diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/controller_add_snapshotter.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/controller_add_snapshotter.yaml deleted file mode 100644 index 27f1dd727..000000000 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/controller_add_snapshotter.yaml +++ /dev/null @@ -1,17 +0,0 @@ -kind: StatefulSet -apiVersion: apps/v1 -metadata: - name: csi-gce-pd-controller -spec: - template: - spec: - containers: - - name: csi-snapshotter - imagePullPolicy: Always - image: gcr.io/gke-release-staging/csi-snapshotter:v2.1.1-gke.0 - args: - - "--v=5" - - "--csi-address=/csi/csi.sock" - volumeMounts: - - name: socket-dir - mountPath: /csi diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/enable_sidecar_metrics.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/enable_sidecar_metrics.yaml index b4dc7d28f..1bf04c7be 100644 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/enable_sidecar_metrics.yaml +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/enable_sidecar_metrics.yaml @@ -1,20 +1,19 @@ -# for external-snapshotter -- op: add - path: /spec/template/spec/containers/0/args/- - value: "--metrics-address=:22014" - # for external-provisioner - op: add - path: /spec/template/spec/containers/1/args/- + path: /spec/template/spec/containers/0/args/- value: "--metrics-address=:22011" # for external-attacher - op: add - path: /spec/template/spec/containers/2/args/- + path: /spec/template/spec/containers/1/args/- value: "--metrics-address=:22012" # for external-resizer - op: add - path: /spec/template/spec/containers/3/args/- + path: /spec/template/spec/containers/2/args/- value: "--metrics-address=:22013" +# for external-snapshotter +- op: add + path: /spec/template/spec/containers/3/args/- + value: "--metrics-address=:22014" diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml index 95150bcbb..ae61405a7 100644 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml +++ b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml @@ -18,23 +18,13 @@ images: - name: gke.gcr.io/csi-resizer newName: gcr.io/gke-release-staging/csi-resizer newTag: "v0.5.0-gke.0" -patches: -- controller_add_snapshotter.yaml +- name: gke.gcr.io/csi-snapshotter + newName: gcr.io/gke-release-staging/csi-snapshotter + newTag: "v2.1.1-gke.0" patchesJson6902: -- target: - group: rbac.authorization.k8s.io - version: v1 - kind: ClusterRole - name: csi-gce-pd-provisioner-role - path: rbac_add_snapshots_to_provisioner.yaml - target: group: apps version: v1 kind: StatefulSet name: csi-gce-pd-controller path: enable_sidecar_metrics.yaml -resources: -- rbac_add_snapshotter.yaml -# Reapplying namespace transformer to include newly added RBAC rules. -namespace: - gce-pd-csi-driver diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshots_to_provisioner.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshots_to_provisioner.yaml deleted file mode 100644 index 746ea82fe..000000000 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshots_to_provisioner.yaml +++ /dev/null @@ -1,16 +0,0 @@ -# arrays without strategic patch merge defined need to be appended -# using jsonpatch -# https://github.com/kubernetes-sigs/kustomize/blob/master/examples/jsonpatch.md -- op: add - path: /rules/- - value: - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshots"] - verbs: ["get", "list"] - -- op: add - path: /rules/- - value: - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents"] - verbs: ["get", "list"] diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshotter.yaml b/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshotter.yaml deleted file mode 100644 index dcc7af90a..000000000 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/rbac_add_snapshotter.yaml +++ /dev/null @@ -1,32 +0,0 @@ -# xref: https://github.com/kubernetes-csi/external-snapshotter/blob/master/deploy/kubernetes/rbac.yaml -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: csi-gce-pd-snapshotter-role -rules: - - apiGroups: [""] - resources: ["events"] - verbs: ["list", "watch", "create", "update", "patch"] - # Secrets resource omitted since GCE PD snapshots does not require them - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotclasses"] - verbs: ["get", "list", "watch"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents"] - verbs: ["create", "get", "list", "watch", "update", "delete"] - - apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotcontents/status"] - verbs: ["update"] ---- - -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: csi-gce-pd-controller-snapshotter-binding -subjects: - - kind: ServiceAccount - name: csi-gce-pd-controller-sa -roleRef: - kind: ClusterRole - name: csi-gce-pd-snapshotter-role - apiGroup: rbac.authorization.k8s.io diff --git a/deploy/kubernetes/overlays/stable/kustomization.yaml b/deploy/kubernetes/overlays/stable/kustomization.yaml index 8115c994d..9aac76765 100644 --- a/deploy/kubernetes/overlays/stable/kustomization.yaml +++ b/deploy/kubernetes/overlays/stable/kustomization.yaml @@ -20,3 +20,6 @@ images: - name: gke.gcr.io/csi-resizer newName: gke.gcr.io/csi-resizer newTag: "v0.4.0-gke.0" +- name: gke.gcr.io/csi-snapshotter + newName: gke.gcr.io/csi-snapshotter + newTag: "v2.1.1-gke.0" diff --git a/test/run-k8s-integration.sh b/test/run-k8s-integration.sh index 07abc9a49..625d0ecc6 100755 --- a/test/run-k8s-integration.sh +++ b/test/run-k8s-integration.sh @@ -28,7 +28,7 @@ make -C ${PKGDIR} test-k8s-integration base_cmd="${PKGDIR}/bin/k8s-integration-test \ --run-in-prow=true --deploy-overlay-name=${overlay_name} --service-account-file=${E2E_GOOGLE_APPLICATION_CREDENTIALS} \ --do-driver-build=${do_driver_build} --boskos-resource-type=${boskos_resource_type} \ - --storageclass-file=sc-standard.yaml --test-focus="External.Storage" \ + --storageclass-file=sc-standard.yaml --snapshotclass-file=pd-volumesnapshotclass.yaml --test-focus="External.Storage" \ --deployment-strategy=${deployment_strategy} --test-version=${test_version} --num-nodes=3 \ --image-type=${image_type}" @@ -44,8 +44,4 @@ else base_cmd="${base_cmd} --gce-region=${gce_region}" fi -if [[ "$overlay_name" =~ .*"gke-release-staging".* ]]; then - base_cmd="${base_cmd} --snapshotclass-file=pd-volumesnapshotclass.yaml" -fi - eval $base_cmd From 6daa9d40bf0ae80a439ec7220c60ea2c46a1a8eb Mon Sep 17 00:00:00 2001 From: Saikat Roychowdhury Date: Thu, 14 May 2020 16:43:39 +0000 Subject: [PATCH 5/5] Update documentation and user guides for beta snapshotter --- README.md | 2 +- docs/kubernetes/user-guides/snapshots.md | 56 +++++++++---------- .../snapshot/default-volumesnapshotclass.yaml | 9 ++- examples/kubernetes/snapshot/snapshot.yaml | 6 +- 4 files changed, 35 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 114a2388e..542937959 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ that represents availability by zone. | Snapshots | Alpha | 1.13 | Any | v0.3.0 | Alpha | | Resize (Expand) | Alpha | 1.14 | 1.14 | v0.6.0 | Alpha | | Resize (Expand) | Beta | 1.16 | 1.16 | v0.7.0 | Stable | - +| Snapshots | Beta | 1.17 | Any | master | Stable | ### Future Features diff --git a/docs/kubernetes/user-guides/snapshots.md b/docs/kubernetes/user-guides/snapshots.md index ad013c4ac..f27b8f32b 100644 --- a/docs/kubernetes/user-guides/snapshots.md +++ b/docs/kubernetes/user-guides/snapshots.md @@ -1,25 +1,8 @@ -# Kubernetes Snapshots User Guide (Alpha) +# Kubernetes Snapshots User Guide (Beta) ->**Attention:** VolumeSnapshot is an alpha feature. Make sure you have enabled it in Kubernetes API server using `--feature-gates=VolumeSnapshotDataSource=true` flag. +>**Attention:** Attention: VolumeSnapshot is a Beta feature enabled by default in Kubernetes 1.17+. Attention: VolumeSnapshot is only available in the driver version "master". -### Install Driver with alpha snapshot feature - -1. [One-time per project] Create GCP service account for the CSI driver and set required roles - - ``` - PROJECT=your-project-here # GCP project - GCE_PD_SA_NAME=my-gce-pd-csi-sa # Name of the service account to create - GCE_PD_SA_DIR=/my/safe/credentials/directory # Directory to save the service account key - ./deploy/setup-project.sh - ``` - -1. Deploy driver to Kubernetes Cluster - - ``` - GCE_PD_SA_DIR=/my/safe/credentials/directory # Directory to get the service account key - GCE_PD_DRIVER_VERSION=alpha # Driver version to deploy - ./deploy/kubernetes/deploy-driver.sh - ``` +### Install Driver with beta snapshot feature as described [here](driver-install.md) ### Snapshot Example @@ -79,19 +62,34 @@ The output is similar to this: ```yaml - apiVersion: snapshot.storage.k8s.io/v1alpha1 kind: VolumeSnapshot metadata: - ... - name: snapshot-source-pvc - namespace: default - ... + creationTimestamp: "2020-05-13T21:48:08Z" + finalizers: + - snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection + - snapshot.storage.kubernetes.io/volumesnapshot-bound-protection + generation: 1 + managedFields: + - apiVersion: snapshot.storage.k8s.io/v1beta1 + fieldsType: FieldsV1 + fieldsV1: + f:status: + f:readyToUse: {} + manager: snapshot-controller + operation: Update + time: "2020-05-13T21:49:42Z" + name: snapshot-source-pvc + namespace: default + resourceVersion: "531499" + selfLink: /apis/snapshot.storage.k8s.io/v1beta1/namespaces/default/volumesnapshots/snapshot-source-pvc + uid: a10fd0ff-b868-4527-abe7-74d5b420731e spec: - snapshotClassName: default-snapshot-class - snapshotContentName: snapcontent-b408076b-720b-11e9-b9e3-42010a800014 - ... + source: + persistentVolumeClaimName: source-pvc + volumeSnapshotClassName: csi-gce-pd-snapshot-class status: - creationTime: "2019-05-09T03:37:01Z" + boundVolumeSnapshotContentName: snapcontent-a10fd0ff-b868-4527-abe7-74d5b420731e + creationTime: "2020-05-13T21:48:43Z" readyToUse: true restoreSize: 6Gi ``` diff --git a/examples/kubernetes/snapshot/default-volumesnapshotclass.yaml b/examples/kubernetes/snapshot/default-volumesnapshotclass.yaml index da2feaff8..bff9c3cde 100644 --- a/examples/kubernetes/snapshot/default-volumesnapshotclass.yaml +++ b/examples/kubernetes/snapshot/default-volumesnapshotclass.yaml @@ -1,7 +1,6 @@ -apiVersion: snapshot.storage.k8s.io/v1alpha1 +apiVersion: snapshot.storage.k8s.io/v1beta1 kind: VolumeSnapshotClass metadata: - annotations: - snapshot.storage.kubernetes.io/is-default-class: "true" - name: default-snapshot-class -snapshotter: pd.csi.storage.gke.io + name: csi-gce-pd-snapshot-class +driver: pd.csi.storage.gke.io +deletionPolicy: Delete diff --git a/examples/kubernetes/snapshot/snapshot.yaml b/examples/kubernetes/snapshot/snapshot.yaml index 717e7f354..f9d2c5a1a 100644 --- a/examples/kubernetes/snapshot/snapshot.yaml +++ b/examples/kubernetes/snapshot/snapshot.yaml @@ -1,8 +1,8 @@ -apiVersion: snapshot.storage.k8s.io/v1alpha1 +apiVersion: snapshot.storage.k8s.io/v1beta1 kind: VolumeSnapshot metadata: name: snapshot-source-pvc spec: + volumeSnapshotClassName: csi-gce-pd-snapshot-class source: - kind: PersistentVolumeClaim - name: source-pvc + persistentVolumeClaimName: source-pvc