diff --git a/deploy/kubernetes/base/controller.yaml b/deploy/kubernetes/base/controller.yaml index 57f198b3b..59c5772cc 100644 --- a/deploy/kubernetes/base/controller.yaml +++ b/deploy/kubernetes/base/controller.yaml @@ -17,6 +17,8 @@ spec: # since it replaces GCE Metadata Server with GKE Metadata Server. Remove # this requirement when issue is resolved and before any exposure of # metrics ports + nodeSelector: + kubernetes.io/os: linux hostNetwork: true serviceAccountName: csi-gce-pd-controller-sa priorityClassName: csi-gce-pd-controller @@ -82,5 +84,10 @@ spec: - name: cloud-sa-volume secret: secretName: cloud-sa + # https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ + # See "special case". This will tolerate everything. Node component should + # be scheduled on all nodes. + tolerations: + - operator: Exists # This is needed due to https://github.com/kubernetes-sigs/kustomize/issues/504 volumeClaimTemplates: [] diff --git a/deploy/kubernetes/base/kustomization.yaml b/deploy/kubernetes/base/kustomization.yaml index 6d665c1c2..8781ea785 100644 --- a/deploy/kubernetes/base/kustomization.yaml +++ b/deploy/kubernetes/base/kustomization.yaml @@ -3,6 +3,5 @@ commonLabels: namespace: gce-pd-csi-driver resources: -- node.yaml - controller.yaml - setup-cluster.yaml diff --git a/deploy/kubernetes/base/setup-cluster.yaml b/deploy/kubernetes/base/setup-cluster.yaml index 0a70f781e..8422ba579 100644 --- a/deploy/kubernetes/base/setup-cluster.yaml +++ b/deploy/kubernetes/base/setup-cluster.yaml @@ -164,15 +164,6 @@ spec: volumes: - '*' hostNetwork: true - allowedHostPaths: - - pathPrefix: "/var/lib/kubelet/plugins_registry/" - - pathPrefix: "/var/lib/kubelet" - - pathPrefix: "/var/lib/kubelet/plugins/pd.csi.storage.gke.io/" - - pathPrefix: "/dev" - - pathPrefix: "/etc/udev" - - pathPrefix: "/lib/udev" - - pathPrefix: "/run/udev" - - pathPrefix: "/sys" --- kind: ClusterRole @@ -199,6 +190,19 @@ subjects: - kind: ServiceAccount name: csi-gce-pd-node-sa +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: csi-gce-pd-controller +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: csi-gce-pd-node-deploy +subjects: +- kind: ServiceAccount + name: csi-gce-pd-controller-sa + --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole diff --git a/deploy/kubernetes/delete-driver.sh b/deploy/kubernetes/delete-driver.sh index 9ab6ffba7..eadb434df 100755 --- a/deploy/kubernetes/delete-driver.sh +++ b/deploy/kubernetes/delete-driver.sh @@ -13,11 +13,16 @@ set -o errexit readonly NAMESPACE="${GCE_PD_DRIVER_NAMESPACE:-gce-pd-csi-driver}" readonly DEPLOY_VERSION="${GCE_PD_DRIVER_VERSION:-stable}" readonly PKGDIR="${GOPATH}/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver" +readonly DEPLOY_OS_VERSIONS=${DEPLOY_OS_VERSIONS:-"linux stable"} source "${PKGDIR}/deploy/common.sh" ensure_kustomize -${KUSTOMIZE_PATH} build ${PKGDIR}/deploy/kubernetes/overlays/${DEPLOY_VERSION} | ${KUBECTL} delete -v="${VERBOSITY}" --ignore-not-found -f - +echo ${DEPLOY_OS_VERSIONS} | tr ';' '\n' | while read -r NODE_OS VERSION; do \ + VERSION="${VERSION:-${DEPLOY_VERSION}}" + ${KUSTOMIZE_PATH} build ${PKGDIR}/deploy/kubernetes/overlays/${NODE_OS}/${VERSION} | ${KUBECTL} delete -v="${VERBOSITY}" --ignore-not-found -f -; \ +done + ${KUBECTL} delete secret cloud-sa -v="${VERBOSITY}" --ignore-not-found if [[ ${NAMESPACE} != "" && ${NAMESPACE} != "default" ]] && \ diff --git a/deploy/kubernetes/deploy-driver.sh b/deploy/kubernetes/deploy-driver.sh index d9e0143d5..c4d3bdad6 100755 --- a/deploy/kubernetes/deploy-driver.sh +++ b/deploy/kubernetes/deploy-driver.sh @@ -19,6 +19,7 @@ set -x readonly NAMESPACE="${GCE_PD_DRIVER_NAMESPACE:-gce-pd-csi-driver}" readonly DEPLOY_VERSION="${GCE_PD_DRIVER_VERSION:-stable}" readonly PKGDIR="${GOPATH}/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver" +readonly DEPLOY_OS_VERSIONS=${DEPLOY_OS_VERSIONS:-"linux stable"} source "${PKGDIR}/deploy/common.sh" print_usage() @@ -94,7 +95,10 @@ fi # Debug log: print ${KUBECTL} version ${KUBECTL} version -readonly tmp_spec=/tmp/gcp-compute-persistent-disk-csi-driver-specs-generated.yaml -${KUSTOMIZE_PATH} build ${PKGDIR}/deploy/kubernetes/overlays/${DEPLOY_VERSION} | tee $tmp_spec -${KUBECTL} apply -v="${VERBOSITY}" -f $tmp_spec +echo ${DEPLOY_OS_VERSIONS} | tr ';' '\n' | while read -r NODE_OS VERSION; do \ + VERSION="${VERSION:-${DEPLOY_VERSION}}"; \ + tmp_spec=/tmp/gcp-compute-persistent-disk-csi-driver-specs-generated-${NODE_OS}.yaml; \ + ${KUSTOMIZE_PATH} build ${PKGDIR}/deploy/kubernetes/overlays/${NODE_OS}/${VERSION} | tee $tmp_spec; \ + ${KUBECTL} apply -v="${VERBOSITY}" -f $tmp_spec; \ +done diff --git a/deploy/kubernetes/overlays/alpha/WARNING.md b/deploy/kubernetes/overlays/linux/alpha/WARNING.md similarity index 100% rename from deploy/kubernetes/overlays/alpha/WARNING.md rename to deploy/kubernetes/overlays/linux/alpha/WARNING.md diff --git a/deploy/kubernetes/overlays/alpha/kustomization.yaml b/deploy/kubernetes/overlays/linux/alpha/kustomization.yaml similarity index 100% rename from deploy/kubernetes/overlays/alpha/kustomization.yaml rename to deploy/kubernetes/overlays/linux/alpha/kustomization.yaml diff --git a/deploy/kubernetes/overlays/linux/base/allowedHostPaths.yaml b/deploy/kubernetes/overlays/linux/base/allowedHostPaths.yaml new file mode 100644 index 000000000..a9124cf21 --- /dev/null +++ b/deploy/kubernetes/overlays/linux/base/allowedHostPaths.yaml @@ -0,0 +1,14 @@ +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: csi-gce-pd-node-psp +spec: + allowedHostPaths: + - pathPrefix: "/var/lib/kubelet/plugins_registry/" + - pathPrefix: "/var/lib/kubelet" + - pathPrefix: "/var/lib/kubelet/plugins/pd.csi.storage.gke.io/" + - pathPrefix: "/dev" + - pathPrefix: "/etc/udev" + - pathPrefix: "/lib/udev" + - pathPrefix: "/run/udev" + - pathPrefix: "/sys" \ No newline at end of file diff --git a/deploy/kubernetes/overlays/linux/base/enableHostNetwork.yaml b/deploy/kubernetes/overlays/linux/base/enableHostNetwork.yaml new file mode 100644 index 000000000..adec7ac37 --- /dev/null +++ b/deploy/kubernetes/overlays/linux/base/enableHostNetwork.yaml @@ -0,0 +1,8 @@ +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-gce-pd-node +spec: + template: + spec: + hostNetwork: true \ No newline at end of file diff --git a/deploy/kubernetes/overlays/linux/base/kustomization.yaml b/deploy/kubernetes/overlays/linux/base/kustomization.yaml new file mode 100644 index 000000000..038c89f9e --- /dev/null +++ b/deploy/kubernetes/overlays/linux/base/kustomization.yaml @@ -0,0 +1,31 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../../base +namespace: + gce-pd-csi-driver +resources: +- node.yaml +patchesStrategicMerge: +- allowedHostPaths.yaml +images: +- name: gke.gcr.io/gcp-compute-persistent-disk-csi-driver + # Don't change stable image without changing pdImagePlaceholder in + # test/k8s-integration/main.go + newName: gke.gcr.io/gcp-compute-persistent-disk-csi-driver + newTag: "v0.7.0-gke.0" +- name: gke.gcr.io/csi-provisioner + newName: gke.gcr.io/csi-provisioner + newTag: "v1.5.0-gke.0" +- name: gke.gcr.io/csi-attacher + newName: gke.gcr.io/csi-attacher + newTag: "v2.1.1-gke.0" +- name: gke.gcr.io/csi-node-driver-registrar + newName: gke.gcr.io/csi-node-driver-registrar + newTag: "v1.2.0-gke.0" +- 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" \ No newline at end of file diff --git a/deploy/kubernetes/base/node.yaml b/deploy/kubernetes/overlays/linux/base/node.yaml similarity index 93% rename from deploy/kubernetes/base/node.yaml rename to deploy/kubernetes/overlays/linux/base/node.yaml index 07397cebe..c6c86e13f 100644 --- a/deploy/kubernetes/base/node.yaml +++ b/deploy/kubernetes/overlays/linux/base/node.yaml @@ -15,10 +15,13 @@ spec: # Host network must be used for interaction with Workload Identity in GKE # since it replaces GCE Metadata Server with GKE Metadata Server. Remove # this requirement when issue is resolved and before any exposure of - # metrics ports. + # metrics ports. But hostNetwork is not working for Windows, might be an issue + # when deploying on GKE Windows node. hostNetwork: true priorityClassName: csi-gce-pd-node serviceAccountName: csi-gce-pd-node-sa + nodeSelector: + kubernetes.io/os: linux containers: - name: csi-driver-registrar image: gke.gcr.io/csi-node-driver-registrar @@ -26,10 +29,6 @@ spec: - "--v=5" - "--csi-address=/csi/csi.sock" - "--kubelet-registration-path=/var/lib/kubelet/plugins/pd.csi.storage.gke.io/csi.sock" - lifecycle: - preStop: - exec: - command: ["/bin/sh", "-c", "rm -rf /registration/pd.csi.storage.gke.io /registration/pd.csi.storage.gke.io-reg.sock"] env: - name: KUBE_NODE_NAME valueFrom: @@ -41,14 +40,14 @@ spec: - name: registration-dir mountPath: /registration - name: gce-pd-driver - securityContext: - privileged: true # Don't change base image without changing pdImagePlaceholder in # test/k8s-integration/main.go image: gke.gcr.io/gcp-compute-persistent-disk-csi-driver args: - "--v=5" - "--endpoint=unix:/csi/csi.sock" + securityContext: + privileged: true volumeMounts: - name: kubelet-dir mountPath: /var/lib/kubelet @@ -67,8 +66,6 @@ spec: mountPath: /run/udev - name: sys mountPath: /sys - nodeSelector: - kubernetes.io/os: linux volumes: - name: registration-dir hostPath: @@ -108,4 +105,4 @@ spec: # See "special case". This will tolerate everything. Node component should # be scheduled on all nodes. tolerations: - - operator: Exists + - operator: Exists \ No newline at end of file diff --git a/deploy/kubernetes/overlays/linux/base/noderegistrar.yaml b/deploy/kubernetes/overlays/linux/base/noderegistrar.yaml new file mode 100644 index 000000000..d12851657 --- /dev/null +++ b/deploy/kubernetes/overlays/linux/base/noderegistrar.yaml @@ -0,0 +1,13 @@ +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-gce-pd-node +spec: + template: + spec: + containers: + - name: csi-driver-registrar + args: + - "--v=5" + - "--csi-address=/csi/csi.sock" + - "--kubelet-registration-path=/var/lib/kubelet/plugins/pd.csi.storage.gke.io/csi.sock" \ No newline at end of file diff --git a/deploy/kubernetes/overlays/dev/WARNING.md b/deploy/kubernetes/overlays/linux/dev/WARNING.md similarity index 70% rename from deploy/kubernetes/overlays/dev/WARNING.md rename to deploy/kubernetes/overlays/linux/dev/WARNING.md index f3191fb3a..026a8d77c 100644 --- a/deploy/kubernetes/overlays/dev/WARNING.md +++ b/deploy/kubernetes/overlays/linux/dev/WARNING.md @@ -5,11 +5,4 @@ BROKEN AT ANY TIME This is the absolute cutting edge development Driver, it is intended for testing and development only and can have vast differences in functionality/behavior/configuration. Use only to try the newest features that -are not guaranteed to work yet. - -APPROXIMATE CHANGELOG in latest: -* Topology -* RePD -* Volume ID Format Changed -* Node ID Format Changed -* Parameter "zone" Removed \ No newline at end of file +are not guaranteed to work yet. \ No newline at end of file diff --git a/deploy/kubernetes/overlays/dev/controller_always_pull.yaml b/deploy/kubernetes/overlays/linux/dev/controller_always_pull.yaml similarity index 100% rename from deploy/kubernetes/overlays/dev/controller_always_pull.yaml rename to deploy/kubernetes/overlays/linux/dev/controller_always_pull.yaml diff --git a/deploy/kubernetes/overlays/dev/kustomization.yaml b/deploy/kubernetes/overlays/linux/dev/kustomization.yaml similarity index 100% rename from deploy/kubernetes/overlays/dev/kustomization.yaml rename to deploy/kubernetes/overlays/linux/dev/kustomization.yaml diff --git a/deploy/kubernetes/overlays/dev/node_always_pull.yaml b/deploy/kubernetes/overlays/linux/dev/node_always_pull.yaml similarity index 100% rename from deploy/kubernetes/overlays/dev/node_always_pull.yaml rename to deploy/kubernetes/overlays/linux/dev/node_always_pull.yaml diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/README.md b/deploy/kubernetes/overlays/linux/prow-gke-release-staging-head/README.md similarity index 100% rename from deploy/kubernetes/overlays/prow-gke-release-staging-head/README.md rename to deploy/kubernetes/overlays/linux/prow-gke-release-staging-head/README.md diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml b/deploy/kubernetes/overlays/linux/prow-gke-release-staging-head/kustomization.yaml similarity index 98% rename from deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml rename to deploy/kubernetes/overlays/linux/prow-gke-release-staging-head/kustomization.yaml index a882ae3d8..bb4f82f76 100644 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-head/kustomization.yaml +++ b/deploy/kubernetes/overlays/linux/prow-gke-release-staging-head/kustomization.yaml @@ -1,7 +1,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization bases: -- ../../base +- ../base images: - name: gke.gcr.io/gcp-compute-persistent-disk-csi-driver newName: gcr.io/gke-release-staging/gcp-compute-persistent-disk-csi-driver diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/README.md b/deploy/kubernetes/overlays/linux/prow-gke-release-staging-rc/README.md similarity index 100% rename from deploy/kubernetes/overlays/prow-gke-release-staging-rc/README.md rename to deploy/kubernetes/overlays/linux/prow-gke-release-staging-rc/README.md diff --git a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml b/deploy/kubernetes/overlays/linux/prow-gke-release-staging-rc/kustomization.yaml similarity index 98% rename from deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml rename to deploy/kubernetes/overlays/linux/prow-gke-release-staging-rc/kustomization.yaml index 2841b734e..21d31701c 100644 --- a/deploy/kubernetes/overlays/prow-gke-release-staging-rc/kustomization.yaml +++ b/deploy/kubernetes/overlays/linux/prow-gke-release-staging-rc/kustomization.yaml @@ -1,7 +1,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization bases: -- ../../base +- ../base images: - name: gke.gcr.io/gcp-compute-persistent-disk-csi-driver newName: gcr.io/gke-release-staging/gcp-compute-persistent-disk-csi-driver diff --git a/deploy/kubernetes/overlays/stable/kustomization.yaml b/deploy/kubernetes/overlays/linux/stable/kustomization.yaml similarity index 98% rename from deploy/kubernetes/overlays/stable/kustomization.yaml rename to deploy/kubernetes/overlays/linux/stable/kustomization.yaml index b02b39c95..a0a2fcbc3 100644 --- a/deploy/kubernetes/overlays/stable/kustomization.yaml +++ b/deploy/kubernetes/overlays/linux/stable/kustomization.yaml @@ -1,7 +1,7 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization bases: -- ../../base +- ../base images: - name: gke.gcr.io/gcp-compute-persistent-disk-csi-driver # Don't change stable image without changing pdImagePlaceholder in diff --git a/deploy/kubernetes/overlays/windows/base/allowedHostPaths.yaml b/deploy/kubernetes/overlays/windows/base/allowedHostPaths.yaml new file mode 100644 index 000000000..f80c31c78 --- /dev/null +++ b/deploy/kubernetes/overlays/windows/base/allowedHostPaths.yaml @@ -0,0 +1,12 @@ +apiVersion: policy/v1beta1 +kind: PodSecurityPolicy +metadata: + name: csi-gce-pd-node-psp +spec: + allowedHostPaths: + - pathPrefix: \var\lib\kubelet + - pathPrefix: \var\lib\kubelet\plugins_registry + - pathPrefix: \var\lib\kubelet\plugins\pd.csi.storage.gke.io + - pathPrefix: \\.\pipe\csi-proxy-disk-v1alpha1 + - pathPrefix: \\.\pipe\csi-proxy-volume-v1alpha1 + - pathPrefix: \\.\pipe\csi-proxy-filesystem-v1alpha1 \ No newline at end of file diff --git a/deploy/kubernetes/overlays/windows/base/kustomization.yaml b/deploy/kubernetes/overlays/windows/base/kustomization.yaml new file mode 100644 index 000000000..51c1e7f6b --- /dev/null +++ b/deploy/kubernetes/overlays/windows/base/kustomization.yaml @@ -0,0 +1,36 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../../../base +namespace: + gce-pd-csi-driver +resources: +- node.yaml +patchesStrategicMerge: +- allowedHostPaths.yaml +images: +- name: gke.gcr.io/gcp-compute-persistent-disk-csi-driver + # Don't change stable image without changing pdImagePlaceholder in + # test/k8s-integration/main.go + newName: gke.gcr.io/gcp-compute-persistent-disk-csi-driver + newTag: "v0.7.0-gke.0" +- name: gke.gcr.io/gcp-compute-persistent-disk-csi-driver-win + # Temporarly set to the private repo. Will swtich to public one + # once it is available. + newName: gcr.io/jing-k8s-dev/gce-pd-windows-2019 + newTag: "0.2.0" +- name: gke.gcr.io/csi-provisioner + newName: gke.gcr.io/csi-provisioner + newTag: "v1.5.0-gke.0" +- name: gke.gcr.io/csi-attacher + newName: gke.gcr.io/csi-attacher + newTag: "v2.1.1-gke.0" +- name: gke.gcr.io/csi-node-driver-registrar + newName: gcr.io/k8s-staging-csi/csi-node-driver-registrar + newTag: "amd64-windows-v20200428-v1.3.0-26-g510710d5" +- 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/deploy/kubernetes/overlays/windows/base/node.yaml b/deploy/kubernetes/overlays/windows/base/node.yaml new file mode 100644 index 000000000..4e52a706e --- /dev/null +++ b/deploy/kubernetes/overlays/windows/base/node.yaml @@ -0,0 +1,82 @@ +#TODO(#40): Force DaemonSet to not run on master. +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-gce-pd-node-win +spec: + selector: + matchLabels: + app: gcp-compute-persistent-disk-csi-driver + template: + metadata: + labels: + app: gcp-compute-persistent-disk-csi-driver + spec: + # Host network must be used for interaction with Workload Identity in GKE + # since it replaces GCE Metadata Server with GKE Metadata Server. Remove + # this requirement when issue is resolved and before any exposure of + # metrics ports. But hostNetwork is not working for Windows, might be an issue + # when deploying on GKE Windows node. + # hostNetwork: true + priorityClassName: csi-gce-pd-node + serviceAccountName: csi-gce-pd-node-sa + nodeSelector: + kubernetes.io/os: windows + containers: + - name: csi-driver-registrar + image: gke.gcr.io/csi-node-driver-registrar + args: + - --v=5 + - --csi-address=unix://C:\\csi\\csi.sock + - --kubelet-registration-path=C:\\var\\lib\\kubelet\\plugins\\pd.csi.storage.gke.io\\csi.sock + env: + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + volumeMounts: + - name: plugin-dir + mountPath: /csi + - name: registration-dir + mountPath: /registration + - name: gce-pd-driver + # Don't change base image without changing pdImagePlaceholder in + # test/k8s-integration/main.go + image: gke.gcr.io/gcp-compute-persistent-disk-csi-driver-win + args: + - "--v=5" + - "--endpoint=unix:/csi/csi.sock" + volumeMounts: + - name: kubelet-dir + mountPath: C:\var\lib\kubelet + mountPropagation: "None" + - name: plugin-dir + mountPath: C:\csi + - name: csi-proxy-disk-pipe + mountPath: \\.\pipe\csi-proxy-disk-v1alpha1 + - name: csi-proxy-volume-pipe + mountPath: \\.\pipe\csi-proxy-volume-v1alpha1 + - name: csi-proxy-filesystem-pipe + mountPath: \\.\pipe\csi-proxy-filesystem-v1alpha1 + volumes: + - name: csi-proxy-disk-pipe + hostPath: + path: \\.\pipe\csi-proxy-disk-v1alpha1 + type: "" + - name: csi-proxy-volume-pipe + hostPath: + path: \\.\pipe\csi-proxy-volume-v1alpha1 + type: "" + - name: csi-proxy-filesystem-pipe + hostPath: + path: \\.\pipe\csi-proxy-filesystem-v1alpha1 + type: "" + - name: registration-dir + hostPath: + path: \var\lib\kubelet\plugins_registry + - name: kubelet-dir + hostPath: + path: \var\lib\kubelet + - name: plugin-dir + hostPath: + path: \var\lib\kubelet\plugins\pd.csi.storage.gke.io diff --git a/deploy/kubernetes/overlays/windows/base/noderegistrar.yaml b/deploy/kubernetes/overlays/windows/base/noderegistrar.yaml new file mode 100644 index 000000000..990691542 --- /dev/null +++ b/deploy/kubernetes/overlays/windows/base/noderegistrar.yaml @@ -0,0 +1,17 @@ +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-gce-pd-node +spec: + template: + spec: + containers: + - name: csi-driver-registrar + args: + - --v=5 + - --csi-address=unix://C:\\csi\\csi.sock + - --kubelet-registration-path=C:\\var\\lib\\kubelet\\plugins\\pd.csi.storage.gke.io\\csi.sock + lifecycle: + preStop: + exec: + command: ["cmd", "/c", "del C:\\registration\\pd.csi.storage.gke.io-reg.sock"] \ No newline at end of file diff --git a/deploy/kubernetes/overlays/windows/dev/kustomization.yaml b/deploy/kubernetes/overlays/windows/dev/kustomization.yaml new file mode 100644 index 000000000..041b45440 --- /dev/null +++ b/deploy/kubernetes/overlays/windows/dev/kustomization.yaml @@ -0,0 +1,16 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +bases: +- ../base +images: +- name: gke.gcr.io/gcp-compute-persistent-disk-csi-driver + # Don't change stable image without changing pdImagePlaceholder in + # test/k8s-integration/main.go + newName: gke.gcr.io/gcp-compute-persistent-disk-csi-driver + newTag: "v0.7.0-gke.0" +- name: gke.gcr.io/gcp-compute-persistent-disk-csi-driver-win + # Temporarly set to the private repo. Will swtich to public one + # once it is available. + newName: gcr.io/jing-k8s-dev/gce-pd-windows-2019 + newTag: "0.2.0" + diff --git a/docs/kubernetes/user-guides/driver-install.md b/docs/kubernetes/user-guides/driver-install.md index a91e79538..175406d58 100644 --- a/docs/kubernetes/user-guides/driver-install.md +++ b/docs/kubernetes/user-guides/driver-install.md @@ -54,6 +54,21 @@ $ GCE_PD_DRIVER_VERSION=stable # Driver version to deploy $ ./deploy/kubernetes/deploy-driver.sh ``` +After adding Windows driver support, we have another environment variable for setting up OS and deployment versions. +For example, if you want to deploy on Windows with alpha version, + +```console +$ DEPLOY_OS_VERSIONS="windows alpha" +$ ./deploy/kubernetes/deploy-driver.sh +``` + +DEPLOY_OS_VERSIONS can also take multiple values for both Linux and Windows. If you have a cluster which has both Windows +and Linux nodes and want to deploy drivers for both, you can set + +```console +$ DEPLOY_OS_VERSIONS="windows dev; linux dev" +``` + ## GCP Permissions Required The `setup-project.sh` script only needs to be run once per project to generate diff --git a/test/k8s-integration/driver.go b/test/k8s-integration/driver.go index 28ac51186..5fbfe7077 100644 --- a/test/k8s-integration/driver.go +++ b/test/k8s-integration/driver.go @@ -9,7 +9,7 @@ import ( ) func getOverlayDir(pkgDir, deployOverlayName string) string { - return filepath.Join(pkgDir, "deploy", "kubernetes", "overlays", deployOverlayName) + return filepath.Join(pkgDir, "deploy", "kubernetes", "overlays", "linux", deployOverlayName) } func installDriver(goPath, pkgDir, stagingImage, stagingVersion, deployOverlayName string, doDriverBuild bool) error {