From c168434cf1ce80987f114b1438e0fe08fab854c2 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Tue, 21 Nov 2023 14:31:27 +0000 Subject: [PATCH] doc: cut v1.23.2 release --- Makefile | 2 +- README.md | 2 +- charts/index.yaml | 81 +++-- charts/latest/blob-csi-driver-v1.23.1.tgz | Bin 5862 -> 0 bytes charts/latest/blob-csi-driver-v1.23.2.tgz | Bin 0 -> 5878 bytes charts/latest/blob-csi-driver/Chart.yaml | 4 +- charts/latest/blob-csi-driver/values.yaml | 2 +- charts/v1.23.2/blob-csi-driver-v1.23.2.tgz | Bin 0 -> 5881 bytes charts/v1.23.2/blob-csi-driver/Chart.yaml | 5 + .../blob-csi-driver/templates/NOTES.txt | 5 + .../blob-csi-driver/templates/_helpers.tpl | 49 +++ .../templates/csi-blob-controller.yaml | 216 ++++++++++++ .../templates/csi-blob-driver.yaml | 14 + .../templates/csi-blob-node.yaml | 319 ++++++++++++++++++ .../templates/rbac-csi-blob-controller.yaml | 115 +++++++ .../templates/rbac-csi-blob-node.yaml | 29 ++ .../serviceaccount-csi-blob-controller.yaml | 17 + .../serviceaccount-csi-blob-node.yaml | 17 + charts/v1.23.2/blob-csi-driver/values.yaml | 180 ++++++++++ deploy/blobfuse-proxy/README.md | 6 +- deploy/csi-blob-controller.yaml | 2 +- deploy/csi-blob-node.yaml | 4 +- deploy/v1.23.2/csi-blob-controller.yaml | 144 ++++++++ deploy/v1.23.2/csi-blob-driver.yaml | 12 + deploy/v1.23.2/csi-blob-node.yaml | 208 ++++++++++++ deploy/v1.23.2/kustomization.yaml | 10 + deploy/v1.23.2/rbac-csi-blob-controller.yaml | 108 ++++++ deploy/v1.23.2/rbac-csi-blob-node.yaml | 30 ++ docs/install-blob-csi-driver.md | 2 +- docs/install-csi-driver-v1.23.2.md | 47 +++ 30 files changed, 1582 insertions(+), 48 deletions(-) delete mode 100644 charts/latest/blob-csi-driver-v1.23.1.tgz create mode 100644 charts/latest/blob-csi-driver-v1.23.2.tgz create mode 100644 charts/v1.23.2/blob-csi-driver-v1.23.2.tgz create mode 100644 charts/v1.23.2/blob-csi-driver/Chart.yaml create mode 100644 charts/v1.23.2/blob-csi-driver/templates/NOTES.txt create mode 100644 charts/v1.23.2/blob-csi-driver/templates/_helpers.tpl create mode 100644 charts/v1.23.2/blob-csi-driver/templates/csi-blob-controller.yaml create mode 100644 charts/v1.23.2/blob-csi-driver/templates/csi-blob-driver.yaml create mode 100644 charts/v1.23.2/blob-csi-driver/templates/csi-blob-node.yaml create mode 100644 charts/v1.23.2/blob-csi-driver/templates/rbac-csi-blob-controller.yaml create mode 100644 charts/v1.23.2/blob-csi-driver/templates/rbac-csi-blob-node.yaml create mode 100644 charts/v1.23.2/blob-csi-driver/templates/serviceaccount-csi-blob-controller.yaml create mode 100644 charts/v1.23.2/blob-csi-driver/templates/serviceaccount-csi-blob-node.yaml create mode 100644 charts/v1.23.2/blob-csi-driver/values.yaml create mode 100644 deploy/v1.23.2/csi-blob-controller.yaml create mode 100644 deploy/v1.23.2/csi-blob-driver.yaml create mode 100644 deploy/v1.23.2/csi-blob-node.yaml create mode 100644 deploy/v1.23.2/kustomization.yaml create mode 100644 deploy/v1.23.2/rbac-csi-blob-controller.yaml create mode 100644 deploy/v1.23.2/rbac-csi-blob-node.yaml create mode 100644 docs/install-csi-driver-v1.23.2.md diff --git a/Makefile b/Makefile index 87722fdf5..e8c7869d2 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ GIT_COMMIT ?= $(shell git rev-parse HEAD) REGISTRY ?= andyzhangx REGISTRY_NAME ?= $(shell echo $(REGISTRY) | sed "s/.azurecr.io//g") IMAGE_NAME ?= blob-csi -IMAGE_VERSION ?= v1.23.1 +IMAGE_VERSION ?= v1.23.2 CLOUD ?= AzurePublicCloud # Use a custom version for E2E tests if we are in Prow ifdef CI diff --git a/README.md b/README.md index 575f7861a..4c798a9c6 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Disclaimer: Deploying this driver manually is not an officially supported Micros |driver version |Image | supported k8s version | |----------------|------------------------------------------------------|-----------------------| |master branch |mcr.microsoft.com/k8s/csi/blob-csi:latest | 1.21+ | -|v1.23.1 |mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.1 | 1.21+ | +|v1.23.2 |mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.2 | 1.21+ | |v1.22.2 |mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.22.2 | 1.21+ | |v1.21.4 |mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.21.4 | 1.21+ | diff --git a/charts/index.yaml b/charts/index.yaml index 9379ce209..cbe647cdb 100644 --- a/charts/index.yaml +++ b/charts/index.yaml @@ -2,26 +2,35 @@ apiVersion: v1 entries: blob-csi-driver: - apiVersion: v1 - appVersion: v1.23.1 - created: "2023-10-19T03:27:46.376001812Z" + appVersion: v1.23.2 + created: "2023-11-21T14:30:40.885804137Z" description: Azure Blob Storage CSI driver - digest: d0345309791c22d197c44e5d74b7acd62ce652b3a8756d08bf878f85adb0de7b + digest: b78ea2ec437d572a0abe8b323f03a98ce61b48d4d36aa9b717a6e87ffe0c9d9c name: blob-csi-driver urls: - - https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/charts/v1.23.1/blob-csi-driver-v1.23.1.tgz - version: v1.23.1 + - https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/charts/latest/blob-csi-driver-v1.23.2.tgz + version: v1.23.2 + - apiVersion: v1 + appVersion: v1.23.2 + created: "2023-11-21T14:30:40.899023115Z" + description: Azure Blob Storage CSI driver + digest: 9452372c032a09eefed4b4064a547143e6f62b7628992db22784844eb35bee7d + name: blob-csi-driver + urls: + - https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/charts/v1.23.2/blob-csi-driver-v1.23.2.tgz + version: v1.23.2 - apiVersion: v1 appVersion: v1.23.1 - created: "2023-10-19T03:27:46.358215061Z" + created: "2023-11-21T14:30:40.898400402Z" description: Azure Blob Storage CSI driver - digest: 20853c4f5ce8b160da5e571a73464c5d17b197937b315b6f393e1a21af622db2 + digest: d0345309791c22d197c44e5d74b7acd62ce652b3a8756d08bf878f85adb0de7b name: blob-csi-driver urls: - - https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/charts/latest/blob-csi-driver-v1.23.1.tgz + - https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/charts/v1.23.1/blob-csi-driver-v1.23.1.tgz version: v1.23.1 - apiVersion: v1 appVersion: v1.23.0 - created: "2023-10-19T03:27:46.375284519Z" + created: "2023-11-21T14:30:40.897760986Z" description: Azure Blob Storage CSI driver digest: 57151e21e33660522f25694bd8ae985e5e17c7ffe09904ad2af4025e8bf1da72 name: blob-csi-driver @@ -30,7 +39,7 @@ entries: version: v1.23.0 - apiVersion: v1 appVersion: v1.22.2 - created: "2023-10-19T03:27:46.374246584Z" + created: "2023-11-21T14:30:40.897143972Z" description: Azure Blob Storage CSI driver digest: 259e66dc12db7310fe1c51e49c964398e0a6b7d511133916dd7d25f748f0b791 name: blob-csi-driver @@ -39,7 +48,7 @@ entries: version: v1.22.2 - apiVersion: v1 appVersion: v1.22.1 - created: "2023-10-19T03:27:46.373256107Z" + created: "2023-11-21T14:30:40.896506046Z" description: Azure Blob Storage CSI driver digest: 8329d477d55c82f97bb09fb172c5f39a1677bedc13c7410bd93b306194516438 name: blob-csi-driver @@ -48,7 +57,7 @@ entries: version: v1.22.1 - apiVersion: v1 appVersion: v1.21.4 - created: "2023-10-19T03:27:46.372625783Z" + created: "2023-11-21T14:30:40.89582397Z" description: Azure Blob Storage CSI driver digest: e4fa13670caf6b0d3e9fefa55d100daa439cd7187dabd45318ab03c7d4b17710 name: blob-csi-driver @@ -57,7 +66,7 @@ entries: version: v1.21.4 - apiVersion: v1 appVersion: v1.20.3 - created: "2023-10-19T03:27:46.372007543Z" + created: "2023-11-21T14:30:40.895143227Z" description: Azure Blob Storage CSI driver digest: 8c2c20547b2e0e1b39d2f2efd04c1bd778f14af5feae2bda86d722dac3c02643 name: blob-csi-driver @@ -66,7 +75,7 @@ entries: version: v1.20.3 - apiVersion: v1 appVersion: v1.19.5 - created: "2023-10-19T03:27:46.370740184Z" + created: "2023-11-21T14:30:40.89300821Z" description: Azure Blob Storage CSI driver digest: 183c3e5cd84b709f1455cc7c84ed5bd573e8a24149fd6442d38999835b0a1711 name: blob-csi-driver @@ -75,7 +84,7 @@ entries: version: v1.19.5 - apiVersion: v1 appVersion: v1.18.0 - created: "2023-10-19T03:27:46.369959898Z" + created: "2023-11-21T14:30:40.892257306Z" description: Azure Blob Storage CSI driver digest: 3eac15488da5be7d1e78431929f7cda35bceb1af3fe107ffbd84606e047c9204 name: blob-csi-driver @@ -84,7 +93,7 @@ entries: version: v1.18.0 - apiVersion: v1 appVersion: v1.17.0 - created: "2023-10-19T03:27:46.368980136Z" + created: "2023-11-21T14:30:40.891586545Z" description: Azure Blob Storage CSI driver digest: 22cfa17fc5e8d771ff8edd26729266a9a8ee55c0e150df85ef15698f7fe985e9 name: blob-csi-driver @@ -93,7 +102,7 @@ entries: version: v1.17.0 - apiVersion: v1 appVersion: v1.16.0 - created: "2023-10-19T03:27:46.367949964Z" + created: "2023-11-21T14:30:40.890967097Z" description: Azure Blob Storage CSI driver digest: bf6249c0e3e3d3d009d4c79ceb7fda9a56c0565b969de753628792ea3ea5ece8 name: blob-csi-driver @@ -102,7 +111,7 @@ entries: version: v1.16.0 - apiVersion: v1 appVersion: v1.15.0 - created: "2023-10-19T03:27:46.365497709Z" + created: "2023-11-21T14:30:40.890357205Z" description: Azure Blob Storage CSI driver digest: 8daa35cd4957695cb64b45da05a15b4020df5545a8ac44c4668dad4bba82c8a9 name: blob-csi-driver @@ -111,7 +120,7 @@ entries: version: v1.15.0 - apiVersion: v1 appVersion: v1.14.0 - created: "2023-10-19T03:27:46.364503044Z" + created: "2023-11-21T14:30:40.889769395Z" description: Azure Blob Storage CSI driver digest: 442bc579b231aab626b9e474e2c0ed3f101d47d61c99aa9a7f863af7ce268d9d name: blob-csi-driver @@ -120,7 +129,7 @@ entries: version: v1.14.0 - apiVersion: v1 appVersion: v1.13.0 - created: "2023-10-19T03:27:46.363698133Z" + created: "2023-11-21T14:30:40.889174665Z" description: Azure Blob Storage CSI driver digest: b577b0b771138109aa90eb09d56fc07273ca0b584a263ee8f789e35796279f31 name: blob-csi-driver @@ -129,7 +138,7 @@ entries: version: v1.13.0 - apiVersion: v1 appVersion: v1.12.0 - created: "2023-10-19T03:27:46.362823835Z" + created: "2023-11-21T14:30:40.888557182Z" description: Azure Blob Storage CSI driver digest: 124e87af2581b374b89a39940698620c23d3eae6dcee518d302461ffea93e9a8 name: blob-csi-driver @@ -138,7 +147,7 @@ entries: version: v1.12.0 - apiVersion: v1 appVersion: v1.11.0 - created: "2023-10-19T03:27:46.36167151Z" + created: "2023-11-21T14:30:40.887936874Z" description: Azure Blob Storage CSI driver digest: 07c4d76017491b3d0bdd70de90e814096938bf7916da0c149c3805294bd57560 name: blob-csi-driver @@ -147,7 +156,7 @@ entries: version: v1.11.0 - apiVersion: v1 appVersion: v1.10.0 - created: "2023-10-19T03:27:46.360841421Z" + created: "2023-11-21T14:30:40.887254521Z" description: Azure Blob Storage CSI driver digest: 79716efa958385adf57eb3570843e1b4512d8c801e8e070625e94264f3e917a9 name: blob-csi-driver @@ -156,7 +165,7 @@ entries: version: v1.10.0 - apiVersion: v1 appVersion: v1.9.0 - created: "2023-10-19T03:27:46.3830158Z" + created: "2023-11-21T14:30:40.904760795Z" description: Azure Blob Storage CSI driver digest: fca0b9215d3277346f68c643fb3ead75158971f0d1945ab01ec559196f3cf842 name: blob-csi-driver @@ -165,7 +174,7 @@ entries: version: v1.9.0 - apiVersion: v1 appVersion: v1.8.0 - created: "2023-10-19T03:27:46.381665129Z" + created: "2023-11-21T14:30:40.904149712Z" description: Azure Blob Storage CSI driver digest: 3b78e2ab4f33577c54d4f57276c824717d2ad2aa3741210e938fcaf927bc751f name: blob-csi-driver @@ -174,7 +183,7 @@ entries: version: v1.8.0 - apiVersion: v1 appVersion: v1.7.0 - created: "2023-10-19T03:27:46.380703733Z" + created: "2023-11-21T14:30:40.903454565Z" description: Azure Blob Storage CSI driver digest: 28da5b55c3d2689d6da85eb7da344385e9cb99bdb2af18c24fea93670abfe7ea name: blob-csi-driver @@ -183,7 +192,7 @@ entries: version: v1.7.0 - apiVersion: v1 appVersion: v1.6.0 - created: "2023-10-19T03:27:46.379893369Z" + created: "2023-11-21T14:30:40.902733353Z" description: Azure Blob Storage CSI driver digest: 6f24f2e6623f6f8862e47d4fbdf13b5f351ceec6bb9a4591ef7fc2fca9fc1eef name: blob-csi-driver @@ -192,7 +201,7 @@ entries: version: v1.6.0 - apiVersion: v1 appVersion: v1.5.0 - created: "2023-10-19T03:27:46.379135515Z" + created: "2023-11-21T14:30:40.901108327Z" description: Azure Blob Storage CSI driver digest: 95d14c9b70b319760d388ea47727c8c97e9287867a8852aeb67b7175b52fe8f5 name: blob-csi-driver @@ -201,7 +210,7 @@ entries: version: v1.5.0 - apiVersion: v1 appVersion: v1.4.1 - created: "2023-10-19T03:27:46.378372571Z" + created: "2023-11-21T14:30:40.900575902Z" description: Azure Blob Storage CSI driver digest: 5fcf69c449f065fa1d5722e5a7fed8a28000efa790907e9ff4b552c5fbd16d22 name: blob-csi-driver @@ -210,7 +219,7 @@ entries: version: v1.4.1 - apiVersion: v1 appVersion: v1.4.0 - created: "2023-10-19T03:27:46.377492827Z" + created: "2023-11-21T14:30:40.90005104Z" description: Azure Blob Storage CSI driver digest: b466543344a6411f6130ba87b093955d39ab8614c6b4ed8505a0a0c96073cb33 name: blob-csi-driver @@ -219,7 +228,7 @@ entries: version: v1.4.0 - apiVersion: v1 appVersion: v1.3.0 - created: "2023-10-19T03:27:46.37673252Z" + created: "2023-11-21T14:30:40.899527865Z" description: Azure Blob Storage CSI driver digest: 58d02cb70a3a966b349d62e880b7149fb06ac009474e35e580784fd3c98a5b07 name: blob-csi-driver @@ -228,7 +237,7 @@ entries: version: v1.3.0 - apiVersion: v1 appVersion: v1.2.0 - created: "2023-10-19T03:27:46.371419138Z" + created: "2023-11-21T14:30:40.893542954Z" description: Azure Blob Storage CSI driver digest: 27fb89f20b5fddc7329e6d7c2374857b22c1d61592e397a53f47121eea68c344 name: blob-csi-driver @@ -237,7 +246,7 @@ entries: version: v1.2.0 - apiVersion: v1 appVersion: v1.1.0 - created: "2023-10-19T03:27:46.359984256Z" + created: "2023-11-21T14:30:40.886627588Z" description: Azure Blob Storage CSI driver digest: a251a55243de207c69ef53f72abee45e93b72fa4fc43dc204b7f1cdfd459acdb name: blob-csi-driver @@ -246,7 +255,7 @@ entries: version: v1.1.0 - apiVersion: v1 appVersion: v1.0.0 - created: "2023-10-19T03:27:46.359221735Z" + created: "2023-11-21T14:30:40.886156505Z" description: Azure Blob Storage CSI driver digest: e83f037a165eafc83a978bd7e6bf6221b052ac34363aecb12e6a73607dc58b89 name: blob-csi-driver @@ -255,11 +264,11 @@ entries: version: v1.0.0 - apiVersion: v1 appVersion: latest - created: "2023-10-19T03:27:46.357535371Z" + created: "2023-11-21T14:30:40.88483708Z" description: Azure Blob Storage CSI driver digest: 33f05e6b1a28a17af824be063512ae8e3ec14e6e5208c11bf0aabc8767d77346 name: blob-csi-driver urls: - https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/charts/latest/blob-csi-driver-v0.0.0.tgz version: v0.0.0 -generated: "2023-10-19T03:27:46.356722964Z" +generated: "2023-11-21T14:30:40.883147372Z" diff --git a/charts/latest/blob-csi-driver-v1.23.1.tgz b/charts/latest/blob-csi-driver-v1.23.1.tgz deleted file mode 100644 index 300d2bd91fd8d987f85c8e814ec4c7e90d5faa4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5862 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 diff --git a/charts/latest/blob-csi-driver-v1.23.2.tgz b/charts/latest/blob-csi-driver-v1.23.2.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f16f7879837755c77067ef7b0221e304104d0573 GIT binary patch literal 5878 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 literal 0 HcmV?d00001 diff --git a/charts/v1.23.2/blob-csi-driver/Chart.yaml b/charts/v1.23.2/blob-csi-driver/Chart.yaml new file mode 100644 index 000000000..c2b93985c --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +appVersion: v1.23.2 +description: Azure Blob Storage CSI driver +name: blob-csi-driver +version: v1.23.2 diff --git a/charts/v1.23.2/blob-csi-driver/templates/NOTES.txt b/charts/v1.23.2/blob-csi-driver/templates/NOTES.txt new file mode 100644 index 000000000..9ad135dd4 --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/NOTES.txt @@ -0,0 +1,5 @@ +The Azure Blob Storage CSI driver is getting deployed to your cluster. + +To check Azure Blob Storage CSI driver pods status, please run: + + kubectl --namespace={{ .Release.Namespace }} get pods --selector="release={{ .Release.Name }}" --watch diff --git a/charts/v1.23.2/blob-csi-driver/templates/_helpers.tpl b/charts/v1.23.2/blob-csi-driver/templates/_helpers.tpl new file mode 100644 index 000000000..d99392f32 --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/_helpers.tpl @@ -0,0 +1,49 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* Expand the name of the chart.*/}} +{{- define "blob.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "blob.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common selectors. +*/}} +{{- define "blob.selectorLabels" -}} +app.kubernetes.io/name: {{ template "blob.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{/* +Common labels. +*/}} +{{- define "blob.labels" -}} +{{- include "blob.selectorLabels" . }} +app.kubernetes.io/component: csi-driver +app.kubernetes.io/part-of: {{ template "blob.name" . }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +helm.sh/chart: {{ template "blob.chart" . }} +{{- if .Values.customLabels }} +{{ toYaml .Values.customLabels }} +{{- end }} +{{- end -}} + + +{{/* pull secrets for containers */}} +{{- define "blob.pullSecrets" -}} +{{- if .Values.imagePullSecrets }} +imagePullSecrets: +{{- range .Values.imagePullSecrets }} + - name: {{ . }} +{{- end }} +{{- end }} +{{- end -}} \ No newline at end of file diff --git a/charts/v1.23.2/blob-csi-driver/templates/csi-blob-controller.yaml b/charts/v1.23.2/blob-csi-driver/templates/csi-blob-controller.yaml new file mode 100644 index 000000000..9ece72de3 --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/csi-blob-controller.yaml @@ -0,0 +1,216 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: {{ .Values.controller.name }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ .Values.controller.name }} + {{- include "blob.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.controller.replicas }} + selector: + matchLabels: + app: {{ .Values.controller.name }} + {{- include "blob.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + app: {{ .Values.controller.name }} + {{- include "blob.labels" . | nindent 8 }} + {{- if .Values.workloadIdentity.clientID }} + azure.workload.identity/use: "true" + {{- end }} + {{- if .Values.podLabels }} +{{- toYaml .Values.podLabels | nindent 8 }} + {{- end }} +{{- if .Values.podAnnotations }} + annotations: +{{ toYaml .Values.podAnnotations | indent 8 }} +{{- end }} + spec: +{{- with .Values.controller.affinity }} + affinity: +{{ toYaml . | indent 8 }} +{{- end }} + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + hostNetwork: {{ .Values.controller.hostNetwork }} + serviceAccountName: {{ .Values.serviceAccount.controller }} + nodeSelector: + kubernetes.io/os: linux + {{- if .Values.controller.runOnMaster}} + node-role.kubernetes.io/master: "" + {{- end}} + {{- if .Values.controller.runOnControlPlane}} + node-role.kubernetes.io/control-plane: "" + {{- end}} +{{- with .Values.controller.nodeSelector }} +{{ toYaml . | indent 8 }} +{{- end }} + priorityClassName: {{ .Values.priorityClassName | quote }} + securityContext: + seccompProfile: + type: RuntimeDefault +{{- with .Values.controller.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} + containers: + - name: csi-provisioner +{{- if hasPrefix "/" .Values.image.csiProvisioner.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}" +{{- else }} + image: "{{ .Values.image.csiProvisioner.repository }}:{{ .Values.image.csiProvisioner.tag }}" +{{- end }} + args: + - "-v=2" + - "--csi-address=$(ADDRESS)" + - "--leader-election" + - "--leader-election-namespace={{ .Release.Namespace }}" + - "--timeout=1200s" + - "--extra-create-metadata=true" + - "--kube-api-qps=50" + - "--kube-api-burst=100" + - "--feature-gates=HonorPVReclaimPolicy=true" + env: + - name: ADDRESS + value: /csi/csi.sock + imagePullPolicy: {{ .Values.image.csiProvisioner.pullPolicy }} + volumeMounts: + - mountPath: /csi + name: socket-dir + resources: {{- toYaml .Values.controller.resources.csiProvisioner | nindent 12 }} + - name: liveness-probe +{{- if hasPrefix "/" .Values.image.livenessProbe.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}" +{{- else }} + image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}" +{{- end }} + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port={{ .Values.controller.livenessProbe.healthPort }} + imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }} + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }} + - name: blob +{{- if hasPrefix "/" .Values.image.blob.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.blob.repository }}:{{ .Values.image.blob.tag }}" +{{- else }} + image: "{{ .Values.image.blob.repository }}:{{ .Values.image.blob.tag }}" +{{- end }} + args: + - "--v={{ .Values.controller.logLevel }}" + - "--endpoint=$(CSI_ENDPOINT)" + - "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}" + - "--drivername={{ .Values.driver.name }}" + - "--custom-user-agent={{ .Values.driver.customUserAgent }}" + - "--user-agent-suffix={{ .Values.driver.userAgentSuffix }}" + - "--cloud-config-secret-name={{ .Values.controller.cloudConfigSecretName }}" + - "--cloud-config-secret-namespace={{ .Values.controller.cloudConfigSecretNamespace }}" + - "--allow-empty-cloud-config={{ .Values.controller.allowEmptyCloudConfig }}" + ports: + - containerPort: {{ .Values.controller.livenessProbe.healthPort }} + name: healthz + protocol: TCP + - containerPort: {{ .Values.controller.metricsPort }} + name: metrics + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + env: + - name: AZURE_CREDENTIAL_FILE + valueFrom: + configMapKeyRef: + name: azure-cred-file + key: path + optional: true + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + {{- if ne .Values.driver.httpsProxy "" }} + - name: HTTPS_PROXY + value: {{ .Values.driver.httpsProxy }} + {{- end }} + {{- if ne .Values.driver.httpProxy "" }} + - name: HTTP_PROXY + value: {{ .Values.driver.httpProxy }} + {{- end }} + - name: AZURE_GO_SDK_LOG_LEVEL + value: {{ .Values.driver.azureGoSDKLogLevel }} + {{- if eq .Values.cloud "AzureStackCloud" }} + - name: AZURE_ENVIRONMENT_FILEPATH + value: /etc/kubernetes/azurestackcloud.json + {{- end }} + imagePullPolicy: {{ .Values.image.blob.pullPolicy }} + volumeMounts: + - mountPath: /csi + name: socket-dir + - mountPath: /etc/kubernetes/ + name: azure-cred + {{- if eq .Values.cloud "AzureStackCloud" }} + - name: ssl + mountPath: /etc/ssl/certs + readOnly: true + {{- end }} + {{- if eq .Values.linux.distro "fedora" }} + - name: ssl + mountPath: /etc/ssl/certs + readOnly: true + - name: ssl-pki + mountPath: /etc/pki/ca-trust/extracted + readOnly: true + {{- end }} + resources: {{- toYaml .Values.controller.resources.blob | nindent 12 }} + - name: csi-resizer +{{- if hasPrefix "/" .Values.image.csiResizer.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.csiResizer.repository }}:{{ .Values.image.csiResizer.tag }}" +{{- else }} + image: "{{ .Values.image.csiResizer.repository }}:{{ .Values.image.csiResizer.tag }}" +{{- end }} + args: + - "-csi-address=$(ADDRESS)" + - "-v=2" + - "-leader-election" + - "--leader-election-namespace={{ .Release.Namespace }}" + - '-handle-volume-inuse-error=false' + env: + - name: ADDRESS + value: /csi/csi.sock + imagePullPolicy: {{ .Values.image.csiResizer.pullPolicy }} + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: {{- toYaml .Values.controller.resources.csiResizer | nindent 12 }} + volumes: + - name: socket-dir + emptyDir: {} + - name: azure-cred + hostPath: + path: /etc/kubernetes/ + type: DirectoryOrCreate + {{- if eq .Values.cloud "AzureStackCloud" }} + - name: ssl + hostPath: + path: /etc/ssl/certs + {{- end }} + {{- if eq .Values.linux.distro "fedora" }} + - name: ssl + hostPath: + path: /etc/ssl/certs + - name: ssl-pki + hostPath: + path: /etc/pki/ca-trust/extracted + {{- end }} + {{- if .Values.securityContext }} + securityContext: {{- toYaml .Values.securityContext | nindent 8 }} + {{- end }} diff --git a/charts/v1.23.2/blob-csi-driver/templates/csi-blob-driver.yaml b/charts/v1.23.2/blob-csi-driver/templates/csi-blob-driver.yaml new file mode 100644 index 000000000..9a6aea64a --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/csi-blob-driver.yaml @@ -0,0 +1,14 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: CSIDriver +metadata: + name: {{ .Values.driver.name }} + labels: + {{- include "blob.labels" . | nindent 4 }} +spec: + attachRequired: false + podInfoOnMount: true + fsGroupPolicy: {{ .Values.feature.fsGroupPolicy }} + volumeLifecycleModes: + - Persistent + - Ephemeral diff --git a/charts/v1.23.2/blob-csi-driver/templates/csi-blob-node.yaml b/charts/v1.23.2/blob-csi-driver/templates/csi-blob-node.yaml new file mode 100644 index 000000000..4874f89b6 --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/csi-blob-node.yaml @@ -0,0 +1,319 @@ +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: {{ .Values.node.name }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ .Values.node.name }} + {{- include "blob.labels" . | nindent 4 }} +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: {{ .Values.node.maxUnavailable }} + type: RollingUpdate + selector: + matchLabels: + app: {{ .Values.node.name }} + {{- include "blob.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + app: {{ .Values.node.name }} + {{- include "blob.labels" . | nindent 8 }} + {{- if .Values.workloadIdentity.clientID }} + azure.workload.identity/use: "true" + {{- end }} + {{- if .Values.podLabels }} +{{- toYaml .Values.podLabels | nindent 8 }} + {{- end }} +{{- if .Values.podAnnotations }} + annotations: +{{ toYaml .Values.podAnnotations | indent 8 }} +{{- end }} + spec: + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + {{- if or .Values.node.enableBlobfuseProxy .Values.node.enableAznfsMount }} + hostPID: true + {{- end }} + hostNetwork: true + dnsPolicy: Default + serviceAccountName: {{ .Values.serviceAccount.node }} + nodeSelector: + kubernetes.io/os: linux +{{- with .Values.node.nodeSelector }} +{{ toYaml . | indent 8 }} +{{- end }} + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: type + operator: NotIn + values: + - virtual-kubelet + {{- if .Values.node.affinity }} +{{- toYaml .Values.node.affinity | nindent 8 }} + {{- end }} + priorityClassName: {{ .Values.priorityClassName | quote }} + securityContext: + seccompProfile: + type: RuntimeDefault +{{- with .Values.node.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} + initContainers: + - name: install-blobfuse-proxy +{{- if hasPrefix "/" .Values.image.blob.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.blob.repository }}:{{ .Values.image.blob.tag }}" +{{- else }} + image: "{{ .Values.image.blob.repository }}:{{ .Values.image.blob.tag }}" +{{- end }} + imagePullPolicy: IfNotPresent + command: + - "/blobfuse-proxy/init.sh" + securityContext: + privileged: true + env: + - name: DEBIAN_FRONTEND + value: "noninteractive" + - name: INSTALL_BLOBFUSE + value: "{{ .Values.node.blobfuseProxy.installBlobfuse }}" + - name: BLOBFUSE_VERSION + value: "{{ .Values.node.blobfuseProxy.blobfuseVersion }}" + - name: INSTALL_BLOBFUSE2 + value: "{{ .Values.node.blobfuseProxy.installBlobfuse2 }}" + - name: BLOBFUSE2_VERSION + value: "{{ .Values.node.blobfuseProxy.blobfuse2Version }}" + - name: INSTALL_BLOBFUSE_PROXY + value: "{{ .Values.node.enableBlobfuseProxy }}" + - name: SET_MAX_OPEN_FILE_NUM + value: "{{ .Values.node.blobfuseProxy.setMaxOpenFileNum }}" + - name: MAX_FILE_NUM + value: "{{ .Values.node.blobfuseProxy.maxOpenFileNum }}" + - name: DISABLE_UPDATEDB + value: "{{ .Values.node.blobfuseProxy.disableUpdateDB }}" + volumeMounts: + - name: host-usr + mountPath: /host/usr + - name: host-usr-local + mountPath: /host/usr/local + - name: host-etc + mountPath: /host/etc + containers: + - name: liveness-probe + imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }} + volumeMounts: + - mountPath: /csi + name: socket-dir +{{- if hasPrefix "/" .Values.image.livenessProbe.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}" +{{- else }} + image: "{{ .Values.image.livenessProbe.repository }}:{{ .Values.image.livenessProbe.tag }}" +{{- end }} + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port={{ .Values.node.livenessProbe.healthPort }} + - --v=2 + resources: {{- toYaml .Values.node.resources.livenessProbe | nindent 12 }} + - name: node-driver-registrar +{{- if hasPrefix "/" .Values.image.nodeDriverRegistrar.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}" +{{- else }} + image: "{{ .Values.image.nodeDriverRegistrar.repository }}:{{ .Values.image.nodeDriverRegistrar.tag }}" +{{- end }} + args: + - --csi-address=$(ADDRESS) + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --v=2 + livenessProbe: + exec: + command: + - /csi-node-driver-registrar + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --mode=kubelet-registration-probe + initialDelaySeconds: 30 + timeoutSeconds: 15 + env: + - name: ADDRESS + value: /csi/csi.sock + - name: DRIVER_REG_SOCK_PATH + value: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /csi + - name: registration-dir + mountPath: /registration + resources: {{- toYaml .Values.node.resources.nodeDriverRegistrar | nindent 12 }} + - name: blob +{{- if hasPrefix "/" .Values.image.blob.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.blob.repository }}:{{ .Values.image.blob.tag }}" +{{- else }} + image: "{{ .Values.image.blob.repository }}:{{ .Values.image.blob.tag }}" +{{- end }} + args: + - "--v={{ .Values.node.logLevel }}" + - "--endpoint=$(CSI_ENDPOINT)" + - "--blobfuse-proxy-endpoint=$(BLOBFUSE_PROXY_ENDPOINT)" + - "--enable-blobfuse-proxy={{ .Values.node.enableBlobfuseProxy }}" + - "--nodeid=$(KUBE_NODE_NAME)" + - "--drivername={{ .Values.driver.name }}" + - "--cloud-config-secret-name={{ .Values.node.cloudConfigSecretName }}" + - "--cloud-config-secret-namespace={{ .Values.node.cloudConfigSecretNamespace }}" + - "--custom-user-agent={{ .Values.driver.customUserAgent }}" + - "--user-agent-suffix={{ .Values.driver.userAgentSuffix }}" + - "--allow-empty-cloud-config={{ .Values.node.allowEmptyCloudConfig }}" + - "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}" + - "--append-timestamp-cache-dir={{ .Values.node.appendTimeStampInCacheDir }}" + - "--mount-permissions={{ .Values.node.mountPermissions }}" + - "--allow-inline-volume-key-access-with-idenitity={{ .Values.node.allowInlineVolumeKeyAccessWithIdentity }}" + - "--enable-aznfs-mount={{ .Values.node.enableAznfsMount }}" + ports: + - containerPort: {{ .Values.node.livenessProbe.healthPort }} + name: healthz + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + env: + - name: AZURE_CREDENTIAL_FILE + valueFrom: + configMapKeyRef: + name: azure-cred-file + key: path + optional: true + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + - name: BLOBFUSE_PROXY_ENDPOINT + value: unix:///csi/blobfuse-proxy.sock + {{- if ne .Values.driver.httpsProxy "" }} + - name: HTTPS_PROXY + value: {{ .Values.driver.httpsProxy }} + {{- end }} + {{- if ne .Values.driver.httpProxy "" }} + - name: HTTP_PROXY + value: {{ .Values.driver.httpProxy }} + {{- end }} + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: AZURE_GO_SDK_LOG_LEVEL + value: {{ .Values.driver.azureGoSDKLogLevel }} + {{- if eq .Values.cloud "AzureStackCloud" }} + - name: AZURE_ENVIRONMENT_FILEPATH + value: /etc/kubernetes/azurestackcloud.json + {{- end }} + imagePullPolicy: {{ .Values.image.blob.pullPolicy }} + securityContext: + privileged: true + volumeMounts: + - mountPath: /csi + name: socket-dir + - mountPath: {{ .Values.linux.kubelet }}/ + mountPropagation: Bidirectional + name: mountpoint-dir + - mountPath: /etc/kubernetes/ + name: azure-cred + - mountPath: /mnt + name: blob-cache + {{- if eq .Values.cloud "AzureStackCloud" }} + - name: ssl + mountPath: /etc/ssl/certs + readOnly: true + {{- end }} + {{- if eq .Values.linux.distro "fedora" }} + - name: ssl + mountPath: /etc/ssl/certs + readOnly: true + - name: ssl-pki + mountPath: /etc/pki/ca-trust/extracted + readOnly: true + {{- end }} + {{- if .Values.node.enableAznfsMount }} + - mountPath: /opt/microsoft/aznfs/data + name: aznfs-data + {{- end }} + resources: {{- toYaml .Values.node.resources.blob | nindent 12 }} +{{- if .Values.node.enableAznfsMount }} + - name: aznfswatchdog +{{- if hasPrefix "/" .Values.image.blob.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.blob.repository }}:{{ .Values.image.blob.tag }}" +{{- else }} + image: "{{ .Values.image.blob.repository }}:{{ .Values.image.blob.tag }}" +{{- end }} + command: + - "aznfswatchdog" + imagePullPolicy: {{ .Values.image.blob.pullPolicy }} + securityContext: + privileged: true + resources: {{- toYaml .Values.node.resources.aznfswatchdog | nindent 12 }} + volumeMounts: + - mountPath: /opt/microsoft/aznfs/data + name: aznfs-data + - mountPath: {{ .Values.linux.kubelet }}/ + mountPropagation: Bidirectional + name: mountpoint-dir +{{- end }} + volumes: + - name: host-usr + hostPath: + path: /usr + - name: host-usr-local + hostPath: + path: /usr/local + - name: host-etc + hostPath: + path: /etc + - hostPath: + path: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }} + type: DirectoryOrCreate + name: socket-dir + - hostPath: + path: {{ .Values.linux.kubelet }}/ + type: DirectoryOrCreate + name: mountpoint-dir + - hostPath: + path: {{ .Values.linux.kubelet }}/plugins_registry/ + type: DirectoryOrCreate + name: registration-dir + - hostPath: + path: /etc/kubernetes/ + type: DirectoryOrCreate + name: azure-cred + - hostPath: + path: {{ .Values.node.blobfuseCachePath }} + name: blob-cache + {{- if eq .Values.cloud "AzureStackCloud" }} + - name: ssl + hostPath: + path: /etc/ssl/certs + {{- end }} + {{- if eq .Values.linux.distro "fedora" }} + - name: ssl + hostPath: + path: /etc/ssl/certs + - name: ssl-pki + hostPath: + path: /etc/pki/ca-trust/extracted + {{- end }} + {{- if .Values.node.enableAznfsMount }} + - hostPath: + path: /opt/microsoft/aznfs/data + type: DirectoryOrCreate + name: aznfs-data + {{- end }} + {{- if .Values.securityContext }} + securityContext: {{- toYaml .Values.securityContext | nindent 8 }} + {{- end }} diff --git a/charts/v1.23.2/blob-csi-driver/templates/rbac-csi-blob-controller.yaml b/charts/v1.23.2/blob-csi-driver/templates/rbac-csi-blob-controller.yaml new file mode 100644 index 000000000..833dcc640 --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/rbac-csi-blob-controller.yaml @@ -0,0 +1,115 @@ +{{- if .Values.rbac.create -}} +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-external-provisioner-role + labels: + {{- include "blob.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "delete"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["get", "list", "watch", "create", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["csinodes"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "list", "watch", "create", "update", "patch"] + +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-csi-provisioner-binding + labels: + {{- include "blob.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccount.controller }} + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: {{ .Values.rbac.name }}-external-provisioner-role + apiGroup: rbac.authorization.k8s.io + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-external-resizer-role + labels: + {{- include "blob.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims/status"] + verbs: ["update", "patch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "list", "watch", "create", "update", "patch"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-csi-resizer-role + labels: + {{- include "blob.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccount.controller }} + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: {{ .Values.rbac.name }}-external-resizer-role + apiGroup: rbac.authorization.k8s.io + +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-{{ .Values.rbac.name }}-controller-secret-role + labels: + {{- include "blob.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get", "create"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-{{ .Values.rbac.name }}-controller-secret-binding + labels: + {{- include "blob.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccount.controller }} + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: csi-{{ .Values.rbac.name }}-controller-secret-role + apiGroup: rbac.authorization.k8s.io +{{ end }} diff --git a/charts/v1.23.2/blob-csi-driver/templates/rbac-csi-blob-node.yaml b/charts/v1.23.2/blob-csi-driver/templates/rbac-csi-blob-node.yaml new file mode 100644 index 000000000..c041cf8db --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/rbac-csi-blob-node.yaml @@ -0,0 +1,29 @@ +{{- if .Values.rbac.create -}} +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-{{ .Values.rbac.name }}-node-secret-role + labels: + {{- include "blob.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-{{ .Values.rbac.name }}-node-secret-binding + labels: + {{- include "blob.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccount.node }} + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: csi-{{ .Values.rbac.name }}-node-secret-role + apiGroup: rbac.authorization.k8s.io +{{ end }} diff --git a/charts/v1.23.2/blob-csi-driver/templates/serviceaccount-csi-blob-controller.yaml b/charts/v1.23.2/blob-csi-driver/templates/serviceaccount-csi-blob-controller.yaml new file mode 100644 index 000000000..7433bccf1 --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/serviceaccount-csi-blob-controller.yaml @@ -0,0 +1,17 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccount.controller }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "blob.labels" . | nindent 4 }} +{{- if .Values.workloadIdentity.clientID }} + azure.workload.identity/use: "true" + annotations: + azure.workload.identity/client-id: {{ .Values.workloadIdentity.clientID }} +{{- if .Values.workloadIdentity.tenantID }} + azure.workload.identity/tenant-id: {{ .Values.workloadIdentity.tenantID }} +{{- end }} +{{- end }} +{{- end -}} diff --git a/charts/v1.23.2/blob-csi-driver/templates/serviceaccount-csi-blob-node.yaml b/charts/v1.23.2/blob-csi-driver/templates/serviceaccount-csi-blob-node.yaml new file mode 100644 index 000000000..a25090e30 --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/templates/serviceaccount-csi-blob-node.yaml @@ -0,0 +1,17 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccount.node }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "blob.labels" . | nindent 4 }} +{{- if .Values.workloadIdentity.clientID }} + azure.workload.identity/use: "true" + annotations: + azure.workload.identity/client-id: {{ .Values.workloadIdentity.clientID }} +{{- if .Values.workloadIdentity.tenantID }} + azure.workload.identity/tenant-id: {{ .Values.workloadIdentity.tenantID }} +{{- end }} +{{- end }} +{{- end -}} diff --git a/charts/v1.23.2/blob-csi-driver/values.yaml b/charts/v1.23.2/blob-csi-driver/values.yaml new file mode 100644 index 000000000..1e8c4c997 --- /dev/null +++ b/charts/v1.23.2/blob-csi-driver/values.yaml @@ -0,0 +1,180 @@ +image: + baseRepo: mcr.microsoft.com + blob: + repository: /oss/kubernetes-csi/blob-csi + tag: v1.23.2 + pullPolicy: IfNotPresent + csiProvisioner: + repository: /oss/kubernetes-csi/csi-provisioner + tag: v3.5.0 + pullPolicy: IfNotPresent + livenessProbe: + repository: /oss/kubernetes-csi/livenessprobe + tag: v2.10.0 + pullPolicy: IfNotPresent + nodeDriverRegistrar: + repository: /oss/kubernetes-csi/csi-node-driver-registrar + tag: v2.8.0 + pullPolicy: IfNotPresent + csiResizer: + repository: /oss/kubernetes-csi/csi-resizer + tag: v1.8.0 + pullPolicy: IfNotPresent + +cloud: AzurePublicCloud + +## Reference to one or more secrets to be used when pulling images +## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ +imagePullSecrets: [] +# - name: myRegistryKeySecretName + +serviceAccount: + create: true # When true, service accounts will be created for you. Set to false if you want to use your own. + controller: csi-blob-controller-sa # Name of Service Account to be created or used + node: csi-blob-node-sa # Name of Service Account to be created or used + +rbac: + create: true + name: blob + +## Collection of annotations to add to all the pods +podAnnotations: {} +## Collection of labels to add to all the pods +podLabels: {} +# -- Custom labels to add into metadata +customLabels: {} + # k8s-app: blob-csi-driver + +## Leverage a PriorityClass to ensure your pods survive resource shortages +## ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/ +priorityClassName: system-cluster-critical +## Security context give the opportunity to run container as nonroot by setting a securityContext +## by example : +## securityContext: { runAsUser: 1001 } +securityContext: {} + +controller: + name: csi-blob-controller + cloudConfigSecretName: azure-cloud-provider + cloudConfigSecretNamespace: kube-system + allowEmptyCloudConfig: true + hostNetwork: true # this setting could be disabled if controller does not depend on MSI setting + metricsPort: 29634 + livenessProbe: + healthPort: 29632 + replicas: 2 + runOnMaster: false + runOnControlPlane: false + logLevel: 5 + resources: + csiProvisioner: + limits: + memory: 500Mi + requests: + cpu: 10m + memory: 20Mi + livenessProbe: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + blob: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 20Mi + csiResizer: + limits: + memory: 500Mi + requests: + cpu: 10m + memory: 20Mi + affinity: {} + nodeSelector: {} + tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Exists" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/controlplane" + operator: "Exists" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/control-plane" + operator: "Exists" + effect: "NoSchedule" + +node: + name: csi-blob-node + cloudConfigSecretName: azure-cloud-provider + cloudConfigSecretNamespace: kube-system + allowEmptyCloudConfig: true + allowInlineVolumeKeyAccessWithIdentity: false + maxUnavailable: 1 + livenessProbe: + healthPort: 29633 + logLevel: 5 + enableBlobfuseProxy: true + blobfuseProxy: + installBlobfuse: true + blobfuseVersion: "1.4.5" + installBlobfuse2: true + blobfuse2Version: "2.1.0" + setMaxOpenFileNum: true + maxOpenFileNum: "9000000" + disableUpdateDB: true + blobfuseCachePath: /mnt + appendTimeStampInCacheDir: false + mountPermissions: 0777 + resources: + livenessProbe: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + nodeDriverRegistrar: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + blob: + limits: + memory: 2100Mi + requests: + cpu: 10m + memory: 20Mi + aznfswatchdog: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + affinity: {} + nodeSelector: {} + tolerations: + - operator: "Exists" + enableAznfsMount: true + +feature: + fsGroupPolicy: ReadWriteOnceWithFSType + enableGetVolumeStats: false + +driver: + name: blob.csi.azure.com + customUserAgent: "" + userAgentSuffix: "OSS-helm" + azureGoSDKLogLevel: "" # available values: ""(no logs), DEBUG, INFO, WARNING, ERROR + httpsProxy: "" + httpProxy: "" + +linux: + kubelet: /var/lib/kubelet + distro: debian + +workloadIdentity: + clientID: "" + # [optional] If the AAD application or user-assigned managed identity is not in the same tenant as the cluster + # then set tenantID with the application or user-assigned managed identity tenant ID + tenantID: "" diff --git a/deploy/blobfuse-proxy/README.md b/deploy/blobfuse-proxy/README.md index 0952af918..c049732a4 100644 --- a/deploy/blobfuse-proxy/README.md +++ b/deploy/blobfuse-proxy/README.md @@ -9,19 +9,19 @@ This guide shows how to install a blobfuse proxy on all agent nodes and the prox - helm install ```console helm repo add blob-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/charts -helm install blob-csi-driver blob-csi-driver/blob-csi-driver --namespace kube-system --version v1.23.1 --set node.enableBlobfuseProxy=true +helm install blob-csi-driver blob-csi-driver/blob-csi-driver --namespace kube-system --version v1.23.2 --set node.enableBlobfuseProxy=true ``` - kubectl install ```console -curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/v1.23.1/deploy/install-driver.sh | bash -s v1.23.1 blobfuse-proxy -- +curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/v1.23.2/deploy/install-driver.sh | bash -s v1.23.2 blobfuse-proxy -- ``` ### Enable blobfuse proxy on existing Blob CSI driver - install blobfuse proxy daemonset > blobfuse proxy is supported on CoreOS(OpenShift) from v1.23.2 ```console -kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/deploy/v1.23.1/blobfuse-proxy.yaml +kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/master/deploy/v1.23.2/blobfuse-proxy.yaml ``` - set `enable-blobfuse-proxy=true` in existing `csi-blob-node` daemonset manually (default is `false`) ```console diff --git a/deploy/csi-blob-controller.yaml b/deploy/csi-blob-controller.yaml index 3c6d03464..7d39cbc35 100644 --- a/deploy/csi-blob-controller.yaml +++ b/deploy/csi-blob-controller.yaml @@ -73,7 +73,7 @@ spec: cpu: 10m memory: 20Mi - name: blob - image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.1 + image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.2 imagePullPolicy: IfNotPresent args: - "--v=5" diff --git a/deploy/csi-blob-node.yaml b/deploy/csi-blob-node.yaml index 107a83a4f..643790fb9 100644 --- a/deploy/csi-blob-node.yaml +++ b/deploy/csi-blob-node.yaml @@ -40,7 +40,7 @@ spec: - operator: "Exists" initContainers: - name: install-blobfuse-proxy - image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.1 + image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.2 imagePullPolicy: IfNotPresent command: - "/blobfuse-proxy/init.sh" @@ -120,7 +120,7 @@ spec: cpu: 10m memory: 20Mi - name: blob - image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.1 + image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.2 imagePullPolicy: IfNotPresent args: - "--v=5" diff --git a/deploy/v1.23.2/csi-blob-controller.yaml b/deploy/v1.23.2/csi-blob-controller.yaml new file mode 100644 index 000000000..7d39cbc35 --- /dev/null +++ b/deploy/v1.23.2/csi-blob-controller.yaml @@ -0,0 +1,144 @@ +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: csi-blob-controller + namespace: kube-system +spec: + replicas: 2 + selector: + matchLabels: + app: csi-blob-controller + template: + metadata: + labels: + app: csi-blob-controller + spec: + hostNetwork: true + serviceAccountName: csi-blob-controller-sa + nodeSelector: + kubernetes.io/os: linux # add "kubernetes.io/role: master" to run controller on master node + priorityClassName: system-cluster-critical + securityContext: + seccompProfile: + type: RuntimeDefault + tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Exists" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/controlplane" + operator: "Exists" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/control-plane" + operator: "Exists" + effect: "NoSchedule" + containers: + - name: csi-provisioner + image: mcr.microsoft.com/oss/kubernetes-csi/csi-provisioner:v3.5.0 + args: + - "-v=2" + - "--csi-address=$(ADDRESS)" + - "--leader-election" + - "--leader-election-namespace=kube-system" + - "--timeout=600s" + - "--extra-create-metadata=true" + - "--kube-api-qps=50" + - "--kube-api-burst=100" + - "--feature-gates=HonorPVReclaimPolicy=true" + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - mountPath: /csi + name: socket-dir + resources: + limits: + memory: 500Mi + requests: + cpu: 10m + memory: 20Mi + - name: liveness-probe + image: mcr.microsoft.com/oss/kubernetes-csi/livenessprobe:v2.10.0 + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port=29632 + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + - name: blob + image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.2 + imagePullPolicy: IfNotPresent + args: + - "--v=5" + - "--endpoint=$(CSI_ENDPOINT)" + - "--metrics-address=0.0.0.0:29634" + - "--user-agent-suffix=OSS-kubectl" + ports: + - containerPort: 29632 + name: healthz + protocol: TCP + - containerPort: 29634 + name: metrics + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + env: + - name: AZURE_CREDENTIAL_FILE + valueFrom: + configMapKeyRef: + name: azure-cred-file + key: path + optional: true + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + volumeMounts: + - mountPath: /csi + name: socket-dir + - mountPath: /etc/kubernetes/ + name: azure-cred + resources: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 20Mi + - name: csi-resizer + image: mcr.microsoft.com/oss/kubernetes-csi/csi-resizer:v1.8.0 + args: + - "-csi-address=$(ADDRESS)" + - "-v=2" + - "-leader-election" + - "--leader-election-namespace=kube-system" + - '-handle-volume-inuse-error=false' + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: + limits: + memory: 500Mi + requests: + cpu: 10m + memory: 20Mi + volumes: + - name: socket-dir + emptyDir: {} + - name: azure-cred + hostPath: + path: /etc/kubernetes/ + type: DirectoryOrCreate diff --git a/deploy/v1.23.2/csi-blob-driver.yaml b/deploy/v1.23.2/csi-blob-driver.yaml new file mode 100644 index 000000000..d2de725d8 --- /dev/null +++ b/deploy/v1.23.2/csi-blob-driver.yaml @@ -0,0 +1,12 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: CSIDriver +metadata: + name: blob.csi.azure.com +spec: + attachRequired: false + podInfoOnMount: true + fsGroupPolicy: ReadWriteOnceWithFSType + volumeLifecycleModes: + - Persistent + - Ephemeral diff --git a/deploy/v1.23.2/csi-blob-node.yaml b/deploy/v1.23.2/csi-blob-node.yaml new file mode 100644 index 000000000..643790fb9 --- /dev/null +++ b/deploy/v1.23.2/csi-blob-node.yaml @@ -0,0 +1,208 @@ +--- +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-blob-node + namespace: kube-system +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate + selector: + matchLabels: + app: csi-blob-node + template: + metadata: + labels: + app: csi-blob-node + spec: + hostNetwork: true + hostPID: true + dnsPolicy: Default + serviceAccountName: csi-blob-node-sa + nodeSelector: + kubernetes.io/os: linux + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: type + operator: NotIn + values: + - virtual-kubelet + priorityClassName: system-node-critical + securityContext: + seccompProfile: + type: RuntimeDefault + tolerations: + - operator: "Exists" + initContainers: + - name: install-blobfuse-proxy + image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.2 + imagePullPolicy: IfNotPresent + command: + - "/blobfuse-proxy/init.sh" + securityContext: + privileged: true + env: + - name: DEBIAN_FRONTEND + value: "noninteractive" + - name: INSTALL_BLOBFUSE_PROXY + value: "true" + - name: INSTALL_BLOBFUSE + value: "true" + - name: BLOBFUSE_VERSION + value: "1.4.5" + - name: INSTALL_BLOBFUSE2 + value: "true" + - name: BLOBFUSE2_VERSION + value: "2.1.0" + - name: SET_MAX_OPEN_FILE_NUM + value: "true" + - name: MAX_FILE_NUM + value: "9000000" + - name: DISABLE_UPDATEDB + value: "true" + volumeMounts: + - name: host-usr + mountPath: /host/usr + - name: host-usr-local + mountPath: /host/usr/local + - name: host-etc + mountPath: /host/etc + containers: + - name: liveness-probe + volumeMounts: + - mountPath: /csi + name: socket-dir + image: mcr.microsoft.com/oss/kubernetes-csi/livenessprobe:v2.10.0 + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port=29633 + - --v=2 + resources: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + - name: node-driver-registrar + image: mcr.microsoft.com/oss/kubernetes-csi/csi-node-driver-registrar:v2.8.0 + args: + - --csi-address=$(ADDRESS) + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --v=2 + livenessProbe: + exec: + command: + - /csi-node-driver-registrar + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --mode=kubelet-registration-probe + initialDelaySeconds: 30 + timeoutSeconds: 15 + env: + - name: ADDRESS + value: /csi/csi.sock + - name: DRIVER_REG_SOCK_PATH + value: /var/lib/kubelet/plugins/blob.csi.azure.com/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /csi + - name: registration-dir + mountPath: /registration + resources: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + - name: blob + image: mcr.microsoft.com/oss/kubernetes-csi/blob-csi:v1.23.2 + imagePullPolicy: IfNotPresent + args: + - "--v=5" + - "--endpoint=$(CSI_ENDPOINT)" + - "--enable-blobfuse-proxy=false" + - "--blobfuse-proxy-endpoint=$(BLOBFUSE_PROXY_ENDPOINT)" + - "--nodeid=$(KUBE_NODE_NAME)" + - "--user-agent-suffix=OSS-kubectl" + ports: + - containerPort: 29633 + name: healthz + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz + port: healthz + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + env: + - name: AZURE_CREDENTIAL_FILE + valueFrom: + configMapKeyRef: + name: azure-cred-file + key: path + optional: true + - name: CSI_ENDPOINT + value: unix:///csi/csi.sock + - name: BLOBFUSE_PROXY_ENDPOINT + value: unix:///csi/blobfuse-proxy.sock + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + securityContext: + privileged: true + volumeMounts: + - mountPath: /csi + name: socket-dir + - mountPath: /var/lib/kubelet/ + mountPropagation: Bidirectional + name: mountpoint-dir + - mountPath: /etc/kubernetes/ + name: azure-cred + - mountPath: /mnt + name: blob-cache + resources: + limits: + memory: 2100Mi + requests: + cpu: 10m + memory: 20Mi + volumes: + - name: host-usr + hostPath: + path: /usr + - name: host-usr-local + hostPath: + path: /usr/local + - name: host-etc + hostPath: + path: /etc + - hostPath: + path: /var/lib/kubelet/plugins/blob.csi.azure.com + type: DirectoryOrCreate + name: socket-dir + - hostPath: + path: /var/lib/kubelet/ + type: DirectoryOrCreate + name: mountpoint-dir + - hostPath: + path: /var/lib/kubelet/plugins_registry/ + type: DirectoryOrCreate + name: registration-dir + - hostPath: + path: /etc/kubernetes/ + type: DirectoryOrCreate + name: azure-cred + - hostPath: + path: /mnt + type: DirectoryOrCreate + name: blob-cache +--- diff --git a/deploy/v1.23.2/kustomization.yaml b/deploy/v1.23.2/kustomization.yaml new file mode 100644 index 000000000..8b7f5fcac --- /dev/null +++ b/deploy/v1.23.2/kustomization.yaml @@ -0,0 +1,10 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - csi-blob-controller.yaml + - csi-blob-driver.yaml + - csi-blob-node.yaml + - rbac-csi-blob-controller.yaml + - rbac-csi-blob-node.yaml + - blobfuse-proxy.yaml diff --git a/deploy/v1.23.2/rbac-csi-blob-controller.yaml b/deploy/v1.23.2/rbac-csi-blob-controller.yaml new file mode 100644 index 000000000..89c2f1f38 --- /dev/null +++ b/deploy/v1.23.2/rbac-csi-blob-controller.yaml @@ -0,0 +1,108 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-blob-controller-sa + namespace: kube-system +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: blob-external-provisioner-role +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "delete"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["get", "list", "watch", "create", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["csinodes"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "list", "watch", "create", "update", "patch"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: blob-csi-provisioner-binding +subjects: + - kind: ServiceAccount + name: csi-blob-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: blob-external-provisioner-role + apiGroup: rbac.authorization.k8s.io +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: blob-external-resizer-role +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims/status"] + verbs: ["update", "patch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "list", "watch", "create", "update", "patch"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: blob-csi-resizer-role +subjects: + - kind: ServiceAccount + name: csi-blob-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: blob-external-resizer-role + apiGroup: rbac.authorization.k8s.io +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-blob-controller-secret-role +rules: + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get", "create"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-blob-controller-secret-binding +subjects: + - kind: ServiceAccount + name: csi-blob-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: csi-blob-controller-secret-role + apiGroup: rbac.authorization.k8s.io diff --git a/deploy/v1.23.2/rbac-csi-blob-node.yaml b/deploy/v1.23.2/rbac-csi-blob-node.yaml new file mode 100644 index 000000000..ce06d862c --- /dev/null +++ b/deploy/v1.23.2/rbac-csi-blob-node.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-blob-node-sa + namespace: kube-system + +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-blob-node-secret-role +rules: + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-blob-node-secret-binding +subjects: + - kind: ServiceAccount + name: csi-blob-node-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: csi-blob-node-secret-role + apiGroup: rbac.authorization.k8s.io diff --git a/docs/install-blob-csi-driver.md b/docs/install-blob-csi-driver.md index 46a8ddbc4..315c70365 100644 --- a/docs/install-blob-csi-driver.md +++ b/docs/install-blob-csi-driver.md @@ -4,6 +4,6 @@ > - please use helm install method for more customization, e.g. Azure Stack, RedHat OpenShift support. > - [install CSI driver master version](./install-csi-driver-master.md) (only for testing purpose) - - [install v1.23.1 CSI driver](./install-csi-driver-v1.23.1.md) + - [install v1.23.2 CSI driver](./install-csi-driver-v1.23.2.md) - [install v1.22.2 CSI driver](./install-csi-driver-v1.22.2.md) - [install v1.21.4 CSI driver](./install-csi-driver-v1.21.4.md) diff --git a/docs/install-csi-driver-v1.23.2.md b/docs/install-csi-driver-v1.23.2.md new file mode 100644 index 000000000..72a8c736e --- /dev/null +++ b/docs/install-csi-driver-v1.23.2.md @@ -0,0 +1,47 @@ +# Install Azure Blob Storage CSI driver v1.23.2 version on a kubernetes cluster +> `blobfuse-proxy` is supported on CoreOS(OpenShift) from v1.23.2 +> +If you have already installed Helm, you can also use it to install this driver. Please check [Installation with Helm](../charts/README.md). + +## Install with kubectl + - Option#1. remote install +```console +curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/v1.23.2/deploy/install-driver.sh | bash -s v1.23.2 blobfuse-proxy -- +``` + + - Option#2. local install +```console +git clone https://github.com/kubernetes-sigs/blob-csi-driver.git +cd blob-csi-driver +./deploy/install-driver.sh v1.23.2 local,blobfuse-proxy +``` + +- check pods status: +```console +kubectl -n kube-system get pod -o wide -l app=csi-blob-controller +kubectl -n kube-system get pod -o wide -l app=csi-blob-node +``` + +example output: + +```console +NAME READY STATUS RESTARTS AGE IP NODE +csi-blob-controller-56bfddd689-dh5tk 4/4 Running 0 35s 10.240.0.19 k8s-agentpool-22533604-0 +csi-blob-controller-56bfddd689-8pgr4 4/4 Running 0 35s 10.240.0.35 k8s-agentpool-22533604-1 +csi-blob-node-cvgbs 3/3 Running 0 35s 10.240.0.35 k8s-agentpool-22533604-1 +csi-blob-node-dr4s4 3/3 Running 0 35s 10.240.0.4 k8s-agentpool-22533604-0 +``` + +### clean up Blob CSI driver +- Option#1. remote uninstall +```console +curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/blob-csi-driver/v1.23.2/deploy/uninstall-driver.sh | bash -s v1.23.2 -- +``` + + - Option#2. local uninstall +```console +git clone https://github.com/kubernetes-sigs/blob-csi-driver.git +cd blob-csi-driver +git checkout v1.23.2 +./deploy/uninstall-driver.sh v1.23.2 local +```