Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support v1beta1 snapshots #322

Merged
merged 2 commits into from
Jun 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 .github/workflows/delete.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,6 @@ jobs:
run: |
BRANCH=$(echo -n ${BRANCH} | tr -c '[:alnum:]._-' '-')
TOKEN=$(curl -s -H "Content-Type: application/json" -X POST -d '{"username": "'${DOCKER_USER}'", "password": "'${DOCKER_PASS}'"}' https://hub.docker.com/v2/users/login/ | jq -r .token)
images=("${BRANCH}-latest" "${BRANCH}-runtime" "${BRANCH}-tools" "${BRANCH}-tests-1.14" "${BRANCH}-tests-1.15" "${BRANCH}-tests-1.16" "${BRANCH}-tests-1.17" "${BRANCH}-builder" "${BRANCH}-builder-pre-1.16")
images=("${BRANCH}-latest" "${BRANCH}-runtime" "${BRANCH}-tools" "${BRANCH}-tests-1.18" "${BRANCH}-tests-1.17" "${BRANCH}-builder")
for i in ${images[*]}; do curl -s -X DELETE -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/digitalocean/k8s-e2e-test-runner/tags/$i/; done
curl -s -X DELETE -H "Authorization: JWT ${TOKEN}" https://hub.docker.com/v2/repositories/digitalocean/do-csi-plugin-dev/tags/${BRANCH}/
17 changes: 2 additions & 15 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,7 @@ jobs:
needs: push-images
strategy:
matrix:
testdriver: ['']
kube-release: ['1.17.5-do.0', '1.16', '1.15', '1.14']
include:
- kube-release: '1.17.5-do.0'
testdriver: 1.16.snapshot-only
runner-kube-version: 1.16
kube-release: ['1.18.3-do.0', '1.17']

steps:
- name: checkout
Expand Down Expand Up @@ -123,8 +118,6 @@ jobs:
# The upstream end-to-end tests are quite demanding in terms of API
# request volume, and we run them concurrently.
NUM_GINKGO_NODES: "8"
TESTDRIVER: ${{ matrix.testdriver }}
RUNNER_KUBE_VERSION: ${{ matrix.runner-kube-version }}
run: |
BRANCH=$(echo -n ${BRANCH} | tr -c '[:alnum:]._-' '-')
NAME_SUFFIX="${BRANCH}"
Expand All @@ -139,13 +132,7 @@ jobs:
TAG=latest
fi

if [[ $TESTDRIVER ]]; then
NAME_SUFFIX="${NAME_SUFFIX}-snapshot-only"
TESTDRIVER="-testdriver $TESTDRIVER"
RUNNER_KUBE_VERSION="-runner-kube-version $RUNNER_KUBE_VERSION"
fi

TIMEOUT=60m make test-e2e E2E_ARGS="-ginkgo-nodes ${NUM_GINKGO_NODES} -driver-image ${DOCKER_ORG}/do-csi-plugin-dev:${TAG} -runner-image ${DOCKER_ORG}/k8s-e2e-test-runner:${RUNNER_IMAGE_TAG_PREFIX}latest ${RUNNER_KUBE_VERSION} ${TESTDRIVER} -name-suffix ${NAME_SUFFIX} ${{ matrix.kube-release }}"
TIMEOUT=60m make test-e2e E2E_ARGS="-ginkgo-nodes ${NUM_GINKGO_NODES} -driver-image ${DOCKER_ORG}/do-csi-plugin-dev:${TAG} -runner-image ${DOCKER_ORG}/k8s-e2e-test-runner:${RUNNER_IMAGE_TAG_PREFIX}latest -name-suffix ${NAME_SUFFIX} ${{ matrix.kube-release }}"

tag-new-master-image:
runs-on: ubuntu-18.04
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

* Update csi-resizer sidecar to v0.5.0
[[GH-324]](https://github.com/digitalocean/csi-digitalocean/pull/324)
* Support v1beta1 snapshots
[[GH-322]](https://github.com/digitalocean/csi-digitalocean/pull/322)
* Upgrade Kubernetes dependencies to 1.18.3
[[GH-318]](https://github.com/digitalocean/csi-digitalocean/pull/318)

Expand Down
122 changes: 24 additions & 98 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,14 @@ bump-version:
@(echo ${NEW_VERSION} | grep -E "^v") || ( echo "NEW_VERSION must be a semver ('v' prefix is required)"; exit 1 )
@echo "Bumping VERSION from $(VERSION) to $(NEW_VERSION)"
@echo $(NEW_VERSION) > VERSION
@cp deploy/kubernetes/releases/csi-digitalocean-latest.yaml deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}.yaml
@sed -i.sedbak 's#digitalocean/do-csi-plugin:dev#digitalocean/do-csi-plugin:${NEW_VERSION}#g' deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}.yaml
@git add --intent-to-add deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}.yaml
@sed -i.sedbak '/^# This file is only for development use/d' deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}.yaml
@cp -r deploy/kubernetes/releases/csi-digitalocean-latest deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}
@sed -i.sedbak 's#digitalocean/do-csi-plugin:dev#digitalocean/do-csi-plugin:${NEW_VERSION}#g' deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}/*
@git add --intent-to-add deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}
@sed -i.sedbak '/^# This file is only for development use/d' deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}/*
$(eval NEW_DATE = $(shell date +%Y.%m.%d))
@sed -i.sedbak 's/## unreleased/## ${NEW_VERSION} - ${NEW_DATE}/g' CHANGELOG.md
@ echo '## unreleased\n' | cat - CHANGELOG.md > temp && mv temp CHANGELOG.md
@rm -f deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}.yaml.sedbak CHANGELOG.md.sedbak
@rm -f deploy/kubernetes/releases/csi-digitalocean-${NEW_VERSION}/*.sedbak CHANGELOG.md.sedbak

.PHONY: compile
compile:
Expand All @@ -79,11 +79,6 @@ test:
@echo "==> Testing all packages"
@GO111MODULE=on go test -mod=vendor -v ./...

.PHONY: test-integration
test-integration:
@echo "==> Started integration tests"
@env go test -parallel ${INTEGRATION_PARALLEL} -count 1 -v -tags integration ./test/...

.PHONY: test-e2e
test-e2e:
@echo "==> Started end-to-end tests"
Expand Down Expand Up @@ -130,123 +125,63 @@ endif
.PHONY: runner-build
runner-build:
@echo "pulling cache images"
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 || true
@docker pull $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder || true
@docker pull $(CANONICAL_RUNNER_IMAGE):builder || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.18 || true
@docker pull $(CANONICAL_RUNNER_IMAGE):tests-1.18 || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 || true
@docker pull $(CANONICAL_RUNNER_IMAGE):tests-1.17 || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16 || true
@docker pull $(CANONICAL_RUNNER_IMAGE):tests-1.16 || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.15 || true
@docker pull $(CANONICAL_RUNNER_IMAGE):tests-1.15 || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.14 || true
@docker pull $(CANONICAL_RUNNER_IMAGE):tests-1.14 || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tools || true
@docker pull $(CANONICAL_RUNNER_IMAGE):tools || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)runtime || true
@docker pull $(CANONICAL_RUNNER_IMAGE):runtime || true
@docker pull $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)latest || true
@docker pull $(CANONICAL_RUNNER_IMAGE):latest || true

@echo "building target builder-pre-1.16"
@docker build --target builder-pre-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 -f test/e2e/Dockerfile test/e2e

@echo "building target builder"
@docker build --target builder \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder \
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder -f test/e2e/Dockerfile test/e2e

@echo "building target tests-1.17"
@docker build --target tests-1.17 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.17 \
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 -f test/e2e/Dockerfile test/e2e

@echo "building target tests-1.16"
@docker build --target tests-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
@echo "building target tests-1.18"
@docker build --target tests-1.18 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.17 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.16 \
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16 -f test/e2e/Dockerfile test/e2e

@echo "building target tests-1.15"
@docker build --target tests-1.15 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.17 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.15 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.15 \
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.15 -f test/e2e/Dockerfile test/e2e
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.18 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.18 \
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.18 -f test/e2e/Dockerfile test/e2e

@echo "building target tests-1.14"
@docker build --target tests-1.14 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
@echo "building target tests-1.17"
@docker build --target tests-1.17 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.18 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.18 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.17 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.15 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.15 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.14 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.14 \
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.14 -f test/e2e/Dockerfile test/e2e
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 -f test/e2e/Dockerfile test/e2e

@echo "building target tools"
@docker build --target tools \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.18 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.18 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.17 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.15 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.15 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.14 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.14 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tools \
--cache-from $(CANONICAL_RUNNER_IMAGE):tools \
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tools -f test/e2e/Dockerfile test/e2e

@echo "building target runtime"
@docker build --target runtime \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.18 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.18 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.17 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.15 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.15 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.14 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.14 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tools \
--cache-from $(CANONICAL_RUNNER_IMAGE):tools \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)runtime \
Expand All @@ -255,18 +190,12 @@ runner-build:

@echo "building final image"
@docker build \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder-pre-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder \
--cache-from $(CANONICAL_RUNNER_IMAGE):builder \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.18 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.18 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.17 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.16 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.15 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.15 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.14 \
--cache-from $(CANONICAL_RUNNER_IMAGE):tests-1.14 \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tools \
--cache-from $(CANONICAL_RUNNER_IMAGE):tools \
--cache-from $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)runtime \
Expand All @@ -276,12 +205,9 @@ runner-build:
-t $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)latest -f test/e2e/Dockerfile test/e2e

runner-push: runner-build
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder-pre-1.16
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)builder
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.18
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.17
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.16
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.15
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tests-1.14
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)tools
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)runtime
@docker push $(RUNNER_IMAGE):$(RUNNER_IMAGE_TAG_PREFIX)latest
Expand Down
20 changes: 16 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,13 @@ expand the filesystem if you have formatted the device.

Snapshots can be created and restored through `VolumeSnapshot` objects.

---
**Note:**

Since version 2, the CSI plugin support v1beta1 Volume Snapshots only. Support for the v1alpha1 has been dropped. Users that intend to migrate need to remove all v1alpha1 Volume Snapshot CRDs before installing the v1beta1 CRDs.

---

See also [the example](/examples/kubernetes/snapshot).

### Volume Statistics
Expand All @@ -99,15 +106,20 @@ Kubernetes Release | DigitalOcean CSI Driver Version
1.14 | v1.3.x
1.15 | v1.3.x
1.16 | v1.3.x
1.17 | v1.3.x
1.17 | v2.0.x (v1.3.x with v1alpha1 snapshots only)
1.18 | v2.0.x (v1.3.x with v1alpha1 snapshots only)

---
**Note:**

The [DigitalOcean Kubernetes](https://www.digitalocean.com/products/kubernetes/) product comes with the CSI driver pre-installed and no further steps are required.

Note: The [`DigitalOcean Kubernetes`](https://www.digitalocean.com/products/kubernetes/) products comes
with the CSI driver pre-installed and no further steps are required.
---

**Requirements:**

* `--allow-privileged` flag must be set to true for both the API server and the kubelet
* `--feature-gates=VolumeSnapshotDataSource=true,KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true` feature gate flags must be set to true for both the API server and the kubelet
* `--feature-gates=KubeletPluginsWatcher=true,CSINodeInfo=true,CSIDriverRegistry=true` feature gate flags must be set to true for both the API server and the kubelet
* Mount Propagation needs to be enabled. If you use Docker, the Docker daemon of the cluster nodes must allow shared mounts.

#### 1. Create a secret with your DigitalOcean API Access Token
Expand Down
Loading