Skip to content

Commit

Permalink
Support v1beta1 snapshots
Browse files Browse the repository at this point in the history
This change adds support for v1beta1 snapshots. The change is breaking,
meaning that v1alpha1 snapshots cannot be used anymore. Consequently, we
also stop testing for Kubernetes releases below 1.17 which do did not
support v1beta1 snapshots.

Changes in detail:

- Update manifests, including the addition of the new snapshot
  controller and update of the csi-snapshotter and csi-provisioner
  sidecars.
- Split up release manifests into multiple files to limit kustomize
  usage to manifests that require modification for testing. In
  particular, the snapshot controller is excluded which does not support
  running in a dev and non-dev version concurrently.
- Update examples.
- Update CI and build references to Kubernetes releases.
- Remove VolumeSnapshotDataSource feature gate which is enabled by
  default since 1.17.
- Remove integration tests that were needed for Kubernetes <1.14 only.
- Extend documentation.
  • Loading branch information
timoreimann committed Jun 15, 2020
1 parent 0f820be commit 7845c3f
Show file tree
Hide file tree
Showing 1,119 changed files with 826 additions and 418,795 deletions.
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
10 changes: 9 additions & 1 deletion 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 snapshots only. Support for the v1alpha1 has been dropped.

---

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

### Volume Statistics
Expand All @@ -100,14 +107,15 @@ Kubernetes Release | DigitalOcean CSI Driver Version
1.15 | v1.3.x
1.16 | v1.3.x
1.17 | v1.3.x
1.18 | v2.0.x

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

0 comments on commit 7845c3f

Please sign in to comment.