From 5a9b5b9b4f779f1ab90455930d8872b8cc384e37 Mon Sep 17 00:00:00 2001 From: andyzhangx Date: Thu, 10 Oct 2024 03:18:16 +0000 Subject: [PATCH] doc: cut v1.30.6 release --- Makefile | 2 +- README.md | 2 +- charts/index.yaml | 121 +-- .../latest/azurefile-csi-driver-v1.30.5.tgz | Bin 13520 -> 0 bytes .../latest/azurefile-csi-driver-v1.30.6.tgz | Bin 0 -> 13519 bytes charts/latest/azurefile-csi-driver/Chart.yaml | 4 +- .../latest/azurefile-csi-driver/values.yaml | 2 +- .../v1.30.6/azurefile-csi-driver-v1.30.6.tgz | Bin 0 -> 13519 bytes .../v1.30.6/azurefile-csi-driver/Chart.yaml | 5 + .../azurefile-csi-driver/templates/NOTES.txt | 5 + .../templates/_helpers.tpl | 49 + .../templates/crd-csi-snapshot.yaml | 840 ++++++++++++++++++ .../templates/csi-azurefile-controller.yaml | 258 ++++++ .../templates/csi-azurefile-driver.yaml | 19 + ...si-azurefile-node-windows-hostprocess.yaml | 164 ++++ .../templates/csi-azurefile-node-windows.yaml | 239 +++++ .../templates/csi-azurefile-node.yaml | 234 +++++ .../templates/csi-snapshot-controller.yaml | 78 ++ .../rbac-csi-azurefile-controller.yaml | 207 +++++ .../templates/rbac-csi-azurefile-node.yaml | 29 + .../rbac-csi-snapshot-controller.yaml | 80 ++ ...rviceaccount-csi-azurefile-controller.yaml | 17 + .../serviceaccount-csi-azurefile-node.yaml | 17 + ...erviceaccount-csi-snapshot-controller.yaml | 9 + .../v1.30.6/azurefile-csi-driver/values.yaml | 260 ++++++ deploy/csi-azurefile-controller.yaml | 2 +- ...si-azurefile-node-windows-hostprocess.yaml | 4 +- deploy/csi-azurefile-node-windows.yaml | 2 +- deploy/csi-azurefile-node.yaml | 2 +- deploy/v1.30.6/crd-csi-snapshot.yaml | 838 +++++++++++++++++ deploy/v1.30.6/csi-azurefile-controller.yaml | 185 ++++ deploy/v1.30.6/csi-azurefile-driver.yaml | 15 + ...si-azurefile-node-windows-hostprocess.yaml | 122 +++ .../v1.30.6/csi-azurefile-node-windows.yaml | 195 ++++ deploy/v1.30.6/csi-azurefile-node.yaml | 168 ++++ deploy/v1.30.6/csi-snapshot-controller.yaml | 59 ++ .../rbac-csi-azurefile-controller.yaml | 194 ++++ deploy/v1.30.6/rbac-csi-azurefile-node.yaml | 30 + .../v1.30.6/rbac-csi-snapshot-controller.yaml | 78 ++ docs/install-csi-driver-v1.30.6.md | 45 + 40 files changed, 4514 insertions(+), 66 deletions(-) delete mode 100644 charts/latest/azurefile-csi-driver-v1.30.5.tgz create mode 100644 charts/latest/azurefile-csi-driver-v1.30.6.tgz create mode 100644 charts/v1.30.6/azurefile-csi-driver-v1.30.6.tgz create mode 100644 charts/v1.30.6/azurefile-csi-driver/Chart.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/NOTES.txt create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/_helpers.tpl create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/crd-csi-snapshot.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-controller.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-driver.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node-windows-hostprocess.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node-windows.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/csi-snapshot-controller.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-azurefile-controller.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-azurefile-node.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-snapshot-controller.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-azurefile-controller.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-azurefile-node.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-snapshot-controller.yaml create mode 100644 charts/v1.30.6/azurefile-csi-driver/values.yaml create mode 100644 deploy/v1.30.6/crd-csi-snapshot.yaml create mode 100644 deploy/v1.30.6/csi-azurefile-controller.yaml create mode 100644 deploy/v1.30.6/csi-azurefile-driver.yaml create mode 100644 deploy/v1.30.6/csi-azurefile-node-windows-hostprocess.yaml create mode 100644 deploy/v1.30.6/csi-azurefile-node-windows.yaml create mode 100644 deploy/v1.30.6/csi-azurefile-node.yaml create mode 100644 deploy/v1.30.6/csi-snapshot-controller.yaml create mode 100644 deploy/v1.30.6/rbac-csi-azurefile-controller.yaml create mode 100644 deploy/v1.30.6/rbac-csi-azurefile-node.yaml create mode 100644 deploy/v1.30.6/rbac-csi-snapshot-controller.yaml create mode 100644 docs/install-csi-driver-v1.30.6.md diff --git a/Makefile b/Makefile index 970d1590a6..cb189e7377 100755 --- 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 ?= azurefile-csi -IMAGE_VERSION ?= v1.30.5 +IMAGE_VERSION ?= v1.30.6 # Use a custom version for E2E tests if we are testing in CI ifdef CI ifndef PUBLISH diff --git a/README.md b/README.md index 74a42d78c3..e322529b49 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,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/azurefile-csi:latest | 1.21+ | -|v1.30.5 |mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.5 | 1.21+ | +|v1.30.6 |mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6 | 1.21+ | |v1.29.2 |mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.29.2 | 1.21+ | |v1.28.7 |mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.28.7 | 1.21+ | diff --git a/charts/index.yaml b/charts/index.yaml index ccfb0d2b37..b012fa2444 100644 --- a/charts/index.yaml +++ b/charts/index.yaml @@ -2,35 +2,44 @@ apiVersion: v1 entries: azurefile-csi-driver: - apiVersion: v1 - appVersion: v1.30.5 - created: "2024-08-09T02:42:27.116550365Z" + appVersion: v1.30.6 + created: "2024-10-10T03:17:55.659829804Z" description: Azure File Container Storage Interface (CSI) Storage Plugin - digest: 3fee0906ccfbacf68ccbe3b00064c1a6fc636868c2bf7ab195739b01d8679f8f + digest: c2b1e9759857a0e26e7a563a2968839445b48b0932b6e157568951ed4dfac0dc name: azurefile-csi-driver urls: - - https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/charts/v1.30.5/azurefile-csi-driver-v1.30.5.tgz - version: v1.30.5 + - https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/charts/latest/azurefile-csi-driver-v1.30.6.tgz + version: v1.30.6 + - apiVersion: v1 + appVersion: v1.30.6 + created: "2024-10-10T03:17:55.706964863Z" + description: Azure File Container Storage Interface (CSI) Storage Plugin + digest: 2e3a947a66ae6d512919c86ebcef34361bc667d6bb37f7fc873415600b30e8a7 + name: azurefile-csi-driver + urls: + - https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/charts/v1.30.6/azurefile-csi-driver-v1.30.6.tgz + version: v1.30.6 - apiVersion: v1 appVersion: v1.30.5 - created: "2024-08-09T02:42:27.070765704Z" + created: "2024-10-10T03:17:55.705869139Z" description: Azure File Container Storage Interface (CSI) Storage Plugin - digest: 3fee0906ccfbacf68ccbe3b00064c1a6fc636868c2bf7ab195739b01d8679f8f + digest: a616eb2a85a6f87578dbbfdaf58d2f4173217e976bd408d6d970957198c658c8 name: azurefile-csi-driver urls: - - https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/charts/latest/azurefile-csi-driver-v1.30.5.tgz + - https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/charts/v1.30.5/azurefile-csi-driver-v1.30.5.tgz version: v1.30.5 - apiVersion: v1 appVersion: v1.30.4 - created: "2024-08-09T02:42:27.115466789Z" + created: "2024-10-10T03:17:55.703955294Z" description: Azure File Container Storage Interface (CSI) Storage Plugin - digest: c7ead10b2e808f9b22a7ce06642adfdf4c5f198b9cf45a4883a21a30c70a80d7 + digest: 98647e8553d550803ace95e10021fd56825c57069f86d9d845f4d249ff421c7a name: azurefile-csi-driver urls: - https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/charts/v1.30.4/azurefile-csi-driver-v1.30.4.tgz version: v1.30.4 - apiVersion: v1 appVersion: v1.30.3 - created: "2024-08-09T02:42:27.114276157Z" + created: "2024-10-10T03:17:55.702886781Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: ebb094592f19880903946d73e84a6c751149023e157b3694f55c3f91068c14f3 name: azurefile-csi-driver @@ -39,16 +48,16 @@ entries: version: v1.30.3 - apiVersion: v1 appVersion: v1.30.2 - created: "2024-08-09T02:42:27.112342274Z" + created: "2024-10-10T03:17:55.701844946Z" description: Azure File Container Storage Interface (CSI) Storage Plugin - digest: 7180ba55dbe8ce1e9ef3d5ecd351c7e5cb1130b73c323c2c26c2b161bde88cc5 + digest: fc7d733d956e206bb5f2f974e24b78ab503e409d7bf3e4fa546f692ed3f52293 name: azurefile-csi-driver urls: - https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/charts/v1.30.2/azurefile-csi-driver-v1.30.2.tgz version: v1.30.2 - apiVersion: v1 appVersion: v1.30.1 - created: "2024-08-09T02:42:27.111284344Z" + created: "2024-10-10T03:17:55.700749665Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 248e05421df286c74b39e8c789b239a4e20155131caf33c22c7b4215d08d27e5 name: azurefile-csi-driver @@ -57,7 +66,7 @@ entries: version: v1.30.1 - apiVersion: v1 appVersion: v1.30.0 - created: "2024-08-09T02:42:27.110249198Z" + created: "2024-10-10T03:17:55.699686004Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: f661f1a29e69123127fb176c6231bdcf06d928bdea4014dab11e171faa061ee5 name: azurefile-csi-driver @@ -66,7 +75,7 @@ entries: version: v1.30.0 - apiVersion: v1 appVersion: v1.29.2 - created: "2024-08-09T02:42:27.108588138Z" + created: "2024-10-10T03:17:55.697294968Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 1d1a7075f40821228925e1bb2d7addc8418222c923ea9bac311d49510b262cb9 name: azurefile-csi-driver @@ -75,7 +84,7 @@ entries: version: v1.29.2 - apiVersion: v1 appVersion: v1.29.1 - created: "2024-08-09T02:42:27.106511846Z" + created: "2024-10-10T03:17:55.696197418Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: a7e3bc8bb3e17153f35387f2040210d72ac5545a9446b0a37660273b5635e11d name: azurefile-csi-driver @@ -84,7 +93,7 @@ entries: version: v1.29.1 - apiVersion: v1 appVersion: v1.29.0 - created: "2024-08-09T02:42:27.105446486Z" + created: "2024-10-10T03:17:55.695114396Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 2da242b471ff0eaf6ea3f1a9d2c1f6aaa1b78c8cbb4e850bbefb336e043b8098 name: azurefile-csi-driver @@ -93,7 +102,7 @@ entries: version: v1.29.0 - apiVersion: v1 appVersion: v1.28.7 - created: "2024-08-09T02:42:27.104352649Z" + created: "2024-10-10T03:17:55.694005031Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: b662264a632d651132b4069fcdd5f859e3d45559d9071cb8a482396ebdef11a6 name: azurefile-csi-driver @@ -102,7 +111,7 @@ entries: version: v1.28.7 - apiVersion: v1 appVersion: v1.28.6 - created: "2024-08-09T02:42:27.103289456Z" + created: "2024-10-10T03:17:55.69245345Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 6e71c5e9429b99533982895c17ad39159c078154e14a4779a5f12d3f9aca992f name: azurefile-csi-driver @@ -111,7 +120,7 @@ entries: version: v1.28.6 - apiVersion: v1 appVersion: v1.28.3 - created: "2024-08-09T02:42:27.102212975Z" + created: "2024-10-10T03:17:55.691059817Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 58e138f7a8f2a925c56ca26dc220cab2dc723691c23fd011b457624d11889395 name: azurefile-csi-driver @@ -120,7 +129,7 @@ entries: version: v1.28.3 - apiVersion: v1 appVersion: v1.28.2 - created: "2024-08-09T02:42:27.100140266Z" + created: "2024-10-10T03:17:55.690003111Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 426fad83a42035af15af775bd37c73309ef0cfe22686babb0668be71da70a66e name: azurefile-csi-driver @@ -129,7 +138,7 @@ entries: version: v1.28.2 - apiVersion: v1 appVersion: v1.27.3 - created: "2024-08-09T02:42:27.099066129Z" + created: "2024-10-10T03:17:55.688902604Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 330d2b11f93e2b10d36f64ed6de528b61351ca794dd9b2c3690c6f6790008732 name: azurefile-csi-driver @@ -138,7 +147,7 @@ entries: version: v1.27.3 - apiVersion: v1 appVersion: v1.27.2 - created: "2024-08-09T02:42:27.098050953Z" + created: "2024-10-10T03:17:55.687852504Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: ab72e0e5f360a38f63e87147ef47ef213016578e8ba64fbb32ecaf2aad7ffdf3 name: azurefile-csi-driver @@ -147,7 +156,7 @@ entries: version: v1.27.2 - apiVersion: v1 appVersion: v1.26.10 - created: "2024-08-09T02:42:27.094013907Z" + created: "2024-10-10T03:17:55.683969986Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 80d2fccdab497044587f8a3299cc761cdf364c2d2d0b4f4cb0ab8197021dc218 name: azurefile-csi-driver @@ -156,7 +165,7 @@ entries: version: v1.26.10 - apiVersion: v1 appVersion: v1.26.6 - created: "2024-08-09T02:42:27.097008128Z" + created: "2024-10-10T03:17:55.685974326Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 3c20488343b47ed618e8c809f6fcdd83f22e00a4d07c78ca097573cafd7075a9 name: azurefile-csi-driver @@ -165,7 +174,7 @@ entries: version: v1.26.6 - apiVersion: v1 appVersion: v1.26.5 - created: "2024-08-09T02:42:27.095938397Z" + created: "2024-10-10T03:17:55.684962636Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 62ac6ab864264ee1e2fb86e8093c8e8263c2c0d3bafff60704c31fd72e40c604 name: azurefile-csi-driver @@ -174,7 +183,7 @@ entries: version: v1.26.5 - apiVersion: v1 appVersion: v1.25.1 - created: "2024-08-09T02:42:27.093006853Z" + created: "2024-10-10T03:17:55.682977057Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 2bf374cc321c5bc8e76e06cd5df85ce7d7d14574397e7e7f7173077393f554c4 name: azurefile-csi-driver @@ -183,7 +192,7 @@ entries: version: v1.25.1 - apiVersion: v1 appVersion: v1.24.11 - created: "2024-08-09T02:42:27.08997353Z" + created: "2024-10-10T03:17:55.679047125Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 501e27a634966a4ae5528025577e926745d896ffa2c253dc69c13623b84254d2 name: azurefile-csi-driver @@ -192,7 +201,7 @@ entries: version: v1.24.11 - apiVersion: v1 appVersion: v1.24.7 - created: "2024-08-09T02:42:27.092010809Z" + created: "2024-10-10T03:17:55.681965316Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 9e5b3f32ad823f845e5a09af230f7a934851943d6afcab3bd545233838680d83 name: azurefile-csi-driver @@ -201,7 +210,7 @@ entries: version: v1.24.7 - apiVersion: v1 appVersion: v1.24.6 - created: "2024-08-09T02:42:27.09099396Z" + created: "2024-10-10T03:17:55.680043445Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: dbd0a6e27a09fec002c57029bd6e34a6ee92d1c10e708935e3f2150069a35ee5 name: azurefile-csi-driver @@ -210,7 +219,7 @@ entries: version: v1.24.6 - apiVersion: v1 appVersion: v1.23.0 - created: "2024-08-09T02:42:27.087958703Z" + created: "2024-10-10T03:17:55.678014639Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 5fcb33617d16e90df1e7041b0df02e5bd92595e86381db30d356b0b2e3500bc4 name: azurefile-csi-driver @@ -219,7 +228,7 @@ entries: version: v1.23.0 - apiVersion: v1 appVersion: v1.22.0 - created: "2024-08-09T02:42:27.086965631Z" + created: "2024-10-10T03:17:55.677003406Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 253d87a8b876dbdd55870a7fee88547393179d03f193661125f5a0b63411f922 name: azurefile-csi-driver @@ -228,7 +237,7 @@ entries: version: v1.22.0 - apiVersion: v1 appVersion: v1.21.0 - created: "2024-08-09T02:42:27.085944114Z" + created: "2024-10-10T03:17:55.675959336Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: d45bf3455ebadc9cc5afaf9da66aa1ea1d4b719cfdff5af661f93bb26c01a504 name: azurefile-csi-driver @@ -237,7 +246,7 @@ entries: version: v1.21.0 - apiVersion: v1 appVersion: v1.20.0 - created: "2024-08-09T02:42:27.08496072Z" + created: "2024-10-10T03:17:55.673827075Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 7cc43d57a79137aea5414fb51a9bbd77bb679b29ee49c06865c1a5b9ba60be99 name: azurefile-csi-driver @@ -246,7 +255,7 @@ entries: version: v1.20.0 - apiVersion: v1 appVersion: v1.19.0 - created: "2024-08-09T02:42:27.082951524Z" + created: "2024-10-10T03:17:55.672337423Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 18f6efbed424efd661fde43be2e5a48a5012a46a7938c33b36963cbd9875a5af name: azurefile-csi-driver @@ -255,7 +264,7 @@ entries: version: v1.19.0 - apiVersion: v1 appVersion: v1.18.0 - created: "2024-08-09T02:42:27.081360734Z" + created: "2024-10-10T03:17:55.67141832Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 696ca23d9ee517f71ef5e852955c8d0f1017c331c025426c6fcbe7a06d006c66 name: azurefile-csi-driver @@ -264,7 +273,7 @@ entries: version: v1.18.0 - apiVersion: v1 appVersion: v1.17.0 - created: "2024-08-09T02:42:27.080393424Z" + created: "2024-10-10T03:17:55.670494777Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 5632f61265a3b78dce3e2b15e07cc9b14a7f54a778878c02ca2d9fe69ca0344e name: azurefile-csi-driver @@ -273,7 +282,7 @@ entries: version: v1.17.0 - apiVersion: v1 appVersion: v1.16.0 - created: "2024-08-09T02:42:27.079475115Z" + created: "2024-10-10T03:17:55.669556821Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: a7a2d57e8eca7dc06c8b2cffb9bccb857753eb110b8e70760b3e04f4e6a87552 name: azurefile-csi-driver @@ -282,7 +291,7 @@ entries: version: v1.16.0 - apiVersion: v1 appVersion: v1.15.0 - created: "2024-08-09T02:42:27.078552947Z" + created: "2024-10-10T03:17:55.668387294Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: c1a31dadce233a90c19dce70f6cc92ba2e20bbaa1b1883baea72381d09303118 name: azurefile-csi-driver @@ -291,7 +300,7 @@ entries: version: v1.15.0 - apiVersion: v1 appVersion: v1.14.0 - created: "2024-08-09T02:42:27.077614294Z" + created: "2024-10-10T03:17:55.666597426Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 0c9ad4afa5ebfdb2851ad93eb16a0382d61448714b7556899360730a2fdf463a name: azurefile-csi-driver @@ -300,7 +309,7 @@ entries: version: v1.14.0 - apiVersion: v1 appVersion: v1.13.0 - created: "2024-08-09T02:42:27.076618699Z" + created: "2024-10-10T03:17:55.665276321Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 214042b029d858b50a0f8bba33a7aa2b41d1b67bce16f957ca183ae7438dac3f name: azurefile-csi-driver @@ -309,7 +318,7 @@ entries: version: v1.13.0 - apiVersion: v1 appVersion: v1.12.0 - created: "2024-08-09T02:42:27.074787373Z" + created: "2024-10-10T03:17:55.664171602Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: fbd63929671066a26df898d32282a6e79c39499a39c71761c546d069459d847d name: azurefile-csi-driver @@ -318,7 +327,7 @@ entries: version: v1.12.0 - apiVersion: v1 appVersion: v1.11.0 - created: "2024-08-09T02:42:27.073754097Z" + created: "2024-10-10T03:17:55.663076492Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 76bd438f8391d08235b09fbca859f25a9fcf8e018fd1e7e33444ca9ea946ce4b name: azurefile-csi-driver @@ -327,7 +336,7 @@ entries: version: v1.11.0 - apiVersion: v1 appVersion: v1.10.0 - created: "2024-08-09T02:42:27.07277165Z" + created: "2024-10-10T03:17:55.661963776Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 845a9de8b571b255d05ae9c643d9b90a57fe6507ff3fb735c88b41f99f6f28dc name: azurefile-csi-driver @@ -336,7 +345,7 @@ entries: version: v1.10.0 - apiVersion: v1 appVersion: v1.9.0 - created: "2024-08-09T02:42:27.122211079Z" + created: "2024-10-10T03:17:55.712644745Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 59a8057fbbd6d59919b84ef0c3396d5a0a46d1f29df604457db676f4af63c714 name: azurefile-csi-driver @@ -345,7 +354,7 @@ entries: version: v1.9.0 - apiVersion: v1 appVersion: v1.8.0 - created: "2024-08-09T02:42:27.121220251Z" + created: "2024-10-10T03:17:55.711582353Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 455b7c342194311046df526d10926d94f3bef24f753a07003fb1cad211c4cb52 name: azurefile-csi-driver @@ -354,7 +363,7 @@ entries: version: v1.8.0 - apiVersion: v1 appVersion: v1.7.0 - created: "2024-08-09T02:42:27.120168445Z" + created: "2024-10-10T03:17:55.709925401Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 057b3f6ef6001d3457fbffc27f90316c981a089696abd3d38bcc8de5537dfa6f name: azurefile-csi-driver @@ -363,7 +372,7 @@ entries: version: v1.7.0 - apiVersion: v1 appVersion: v1.6.0 - created: "2024-08-09T02:42:27.1185766Z" + created: "2024-10-10T03:17:55.709123368Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: cc2a0dda824cdda4e8141e26878bbb481c5a52e45785a5dbf72e54f2a376e522 name: azurefile-csi-driver @@ -372,7 +381,7 @@ entries: version: v1.6.0 - apiVersion: v1 appVersion: v1.5.0 - created: "2024-08-09T02:42:27.117903779Z" + created: "2024-10-10T03:17:55.708400731Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 2258177477415ddecd83dc46dfd88833223623224c7fe396590b617082bcd845 name: azurefile-csi-driver @@ -381,7 +390,7 @@ entries: version: v1.5.0 - apiVersion: v1 appVersion: v1.4.0 - created: "2024-08-09T02:42:27.117226642Z" + created: "2024-10-10T03:17:55.707683785Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 40e9bc4ee187789166fcb7c3c82b85b33ecd3a6096266fe74e411d6b48961ece name: azurefile-csi-driver @@ -390,7 +399,7 @@ entries: version: v1.4.0 - apiVersion: v1 appVersion: v1.3.0 - created: "2024-08-09T02:42:27.109161123Z" + created: "2024-10-10T03:17:55.697813965Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 12942f422b7cccbfe950bbdbd5c844f5ae4b7c292f32389cba312730a6fe9a62 name: azurefile-csi-driver @@ -399,7 +408,7 @@ entries: version: v1.3.0 - apiVersion: v1 appVersion: v1.2.0 - created: "2024-08-09T02:42:27.083912513Z" + created: "2024-10-10T03:17:55.672854491Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: b62f44b757416a9e1f5a91e19285f5f5056ec6068802dd9cd82373bef40c9ee9 name: azurefile-csi-driver @@ -408,7 +417,7 @@ entries: version: v1.2.0 - apiVersion: v1 appVersion: v1.1.0 - created: "2024-08-09T02:42:27.071794414Z" + created: "2024-10-10T03:17:55.660899861Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 675d96b309a1c5c491053ebbb854c046737420929c4f0692839afdaaf0db3933 name: azurefile-csi-driver @@ -417,11 +426,11 @@ entries: version: v1.1.0 - apiVersion: v1 appVersion: v1.0.0 - created: "2024-08-09T02:42:27.071296328Z" + created: "2024-10-10T03:17:55.660374802Z" description: Azure File Container Storage Interface (CSI) Storage Plugin digest: 6fd5e54e949ef1061a08d5477bc580204c91dde8f01da195e95dd60ade209492 name: azurefile-csi-driver urls: - https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/charts/v1.0.0/azurefile-csi-driver-v1.0.0.tgz version: v1.0.0 -generated: "2024-08-09T02:42:27.069475454Z" +generated: "2024-10-10T03:17:55.658518995Z" diff --git a/charts/latest/azurefile-csi-driver-v1.30.5.tgz b/charts/latest/azurefile-csi-driver-v1.30.5.tgz deleted file mode 100644 index e299d1a8f2a47f24ef0682cd8cc5a31743166a24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13520 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 KR`Ztt<^cfLJg>+A diff --git a/charts/latest/azurefile-csi-driver-v1.30.6.tgz b/charts/latest/azurefile-csi-driver-v1.30.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0e611b4ed256f52a47b3539ef088d09c010e591a GIT binary patch literal 13519 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 J#kc_G0RUcpqtyTa literal 0 HcmV?d00001 diff --git a/charts/latest/azurefile-csi-driver/Chart.yaml b/charts/latest/azurefile-csi-driver/Chart.yaml index c5f52b87d1..a5f3629501 100644 --- a/charts/latest/azurefile-csi-driver/Chart.yaml +++ b/charts/latest/azurefile-csi-driver/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v1 -appVersion: v1.30.5 +appVersion: v1.30.6 description: Azure File Container Storage Interface (CSI) Storage Plugin name: azurefile-csi-driver -version: v1.30.5 +version: v1.30.6 diff --git a/charts/latest/azurefile-csi-driver/values.yaml b/charts/latest/azurefile-csi-driver/values.yaml index 8fd504ca02..b041077053 100644 --- a/charts/latest/azurefile-csi-driver/values.yaml +++ b/charts/latest/azurefile-csi-driver/values.yaml @@ -2,7 +2,7 @@ image: baseRepo: mcr.microsoft.com azurefile: repository: /oss/kubernetes-csi/azurefile-csi - tag: v1.30.5 + tag: v1.30.6 pullPolicy: IfNotPresent csiProvisioner: repository: /oss/kubernetes-csi/csi-provisioner diff --git a/charts/v1.30.6/azurefile-csi-driver-v1.30.6.tgz b/charts/v1.30.6/azurefile-csi-driver-v1.30.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..6d11c88e435e20ea34becc9623a0428e05b93385 GIT binary patch literal 13519 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 J+SmZ*0RY@Ar{(|v literal 0 HcmV?d00001 diff --git a/charts/v1.30.6/azurefile-csi-driver/Chart.yaml b/charts/v1.30.6/azurefile-csi-driver/Chart.yaml new file mode 100644 index 0000000000..a5f3629501 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +appVersion: v1.30.6 +description: Azure File Container Storage Interface (CSI) Storage Plugin +name: azurefile-csi-driver +version: v1.30.6 diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/NOTES.txt b/charts/v1.30.6/azurefile-csi-driver/templates/NOTES.txt new file mode 100644 index 0000000000..bea09b0829 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/NOTES.txt @@ -0,0 +1,5 @@ +The Azure File CSI Driver is getting deployed to your cluster. + +To check Azure File CSI Driver pods status, please run: + + kubectl --namespace={{ .Release.Namespace }} get pods --selector="app.kubernetes.io/name={{ .Release.Name }}" --watch diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/_helpers.tpl b/charts/v1.30.6/azurefile-csi-driver/templates/_helpers.tpl new file mode 100644 index 0000000000..b1bf4dc1b6 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/_helpers.tpl @@ -0,0 +1,49 @@ +{{/* vim: set filetype=mustache: */}} + +{{/* Expand the name of the chart.*/}} +{{- define "azurefile.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "azurefile.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Common selectors. +*/}} +{{- define "azurefile.selectorLabels" -}} +app.kubernetes.io/name: {{ template "azurefile.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end -}} + +{{/* +Common labels. +*/}} +{{- define "azurefile.labels" -}} +{{- include "azurefile.selectorLabels" . }} +app.kubernetes.io/component: csi-driver +app.kubernetes.io/part-of: {{ template "azurefile.name" . }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +helm.sh/chart: {{ template "azurefile.chart" . }} +{{- if .Values.customLabels }} +{{ toYaml .Values.customLabels }} +{{- end }} +{{- end -}} + + +{{/* pull secrets for containers */}} +{{- define "azurefile.pullSecrets" -}} +{{- if .Values.imagePullSecrets }} +imagePullSecrets: +{{- range .Values.imagePullSecrets }} + - name: {{ . }} +{{- end }} +{{- end }} +{{- end -}} diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/crd-csi-snapshot.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/crd-csi-snapshot.yaml new file mode 100644 index 0000000000..76df8af7e9 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/crd-csi-snapshot.yaml @@ -0,0 +1,840 @@ +{{- if .Values.snapshot.enabled -}} +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/665" + creationTimestamp: null + name: volumesnapshots.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshot + listKind: VolumeSnapshotList + plural: volumesnapshots + shortNames: + - vs + singular: volumesnapshot + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: If a new snapshot needs to be created, this contains the name of + the source PVC from which this snapshot was (or will be) created. + jsonPath: .spec.source.persistentVolumeClaimName + name: SourcePVC + type: string + - description: If a snapshot already exists, this contains the name of the existing + VolumeSnapshotContent object representing the existing snapshot. + jsonPath: .spec.source.volumeSnapshotContentName + name: SourceSnapshotContent + type: string + - description: Represents the minimum size of volume required to rehydrate from + this snapshot. + jsonPath: .status.restoreSize + name: RestoreSize + type: string + - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. + jsonPath: .spec.volumeSnapshotClassName + name: SnapshotClass + type: string + - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot + object intends to bind to. Please note that verification of binding actually + requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure + both are pointing at each other. Binding MUST be verified prior to usage of + this object. + jsonPath: .status.boundVolumeSnapshotContentName + name: SnapshotContent + type: string + - description: Timestamp when the point-in-time snapshot was taken by the underlying + storage system. + jsonPath: .status.creationTime + name: CreationTime + type: date + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: VolumeSnapshot is a user's request for either creating a point-in-time + snapshot of a persistent volume, or binding to a pre-existing snapshot. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: 'spec defines the desired characteristics of a snapshot requested + by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots + Required.' + properties: + source: + description: source specifies where a snapshot will be created from. + This field is immutable after creation. Required. + properties: + persistentVolumeClaimName: + description: persistentVolumeClaimName specifies the name of the + PersistentVolumeClaim object representing the volume from which + a snapshot should be created. This PVC is assumed to be in the + same namespace as the VolumeSnapshot object. This field should + be set if the snapshot does not exists, and needs to be created. + This field is immutable. + type: string + volumeSnapshotContentName: + description: volumeSnapshotContentName specifies the name of a + pre-existing VolumeSnapshotContent object representing an existing + volume snapshot. This field should be set if the snapshot already + exists and only needs a representation in Kubernetes. This field + is immutable. + type: string + type: object + oneOf: + - required: ["persistentVolumeClaimName"] + - required: ["volumeSnapshotContentName"] + volumeSnapshotClassName: + description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass + requested by the VolumeSnapshot. VolumeSnapshotClassName may be + left nil to indicate that the default SnapshotClass should be used. + A given cluster may have multiple default Volume SnapshotClasses: + one default per CSI Driver. If a VolumeSnapshot does not specify + a SnapshotClass, VolumeSnapshotSource will be checked to figure + out what the associated CSI Driver is, and the default VolumeSnapshotClass + associated with that CSI Driver will be used. If more than one VolumeSnapshotClass + exist for a given CSI Driver and more than one have been marked + as default, CreateSnapshot will fail and generate an event. Empty + string is not allowed for this field.' + type: string + required: + - source + type: object + status: + description: status represents the current information of a snapshot. + Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent + objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent + point at each other) before using this object. + properties: + boundVolumeSnapshotContentName: + description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent + object to which this VolumeSnapshot object intends to bind to. If + not specified, it indicates that the VolumeSnapshot object has not + been successfully bound to a VolumeSnapshotContent object yet. NOTE: + To avoid possible security issues, consumers must verify binding + between VolumeSnapshot and VolumeSnapshotContent objects is successful + (by validating that both VolumeSnapshot and VolumeSnapshotContent + point at each other) before using this object.' + type: string + creationTime: + description: creationTime is the timestamp when the point-in-time + snapshot is taken by the underlying storage system. In dynamic snapshot + creation case, this field will be filled in by the snapshot controller + with the "creation_time" value returned from CSI "CreateSnapshot" + gRPC call. For a pre-existing snapshot, this field will be filled + with the "creation_time" value returned from the CSI "ListSnapshots" + gRPC call if the driver supports it. If not specified, it may indicate + that the creation time of the snapshot is unknown. + format: date-time + type: string + error: + description: error is the last observed error during snapshot creation, + if any. This field could be helpful to upper level controllers(i.e., + application controller) to decide whether they should continue on + waiting for the snapshot to be created based on the type of error + reported. The snapshot controller will keep retrying when an error + occurs during the snapshot creation. Upon success, this error field + will be cleared. + properties: + message: + description: 'message is a string detailing the encountered error + during snapshot creation if specified. NOTE: message may be + logged, and it should not contain sensitive information.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + description: readyToUse indicates if the snapshot is ready to be used + to restore a volume. In dynamic snapshot creation case, this field + will be filled in by the snapshot controller with the "ready_to_use" + value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing + snapshot, this field will be filled with the "ready_to_use" value + returned from the CSI "ListSnapshots" gRPC call if the driver supports + it, otherwise, this field will be set to "True". If not specified, + it means the readiness of a snapshot is unknown. + type: boolean + restoreSize: + type: string + description: restoreSize represents the minimum size of volume required + to create a volume from this snapshot. In dynamic snapshot creation + case, this field will be filled in by the snapshot controller with + the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. + For a pre-existing snapshot, this field will be filled with the + "size_bytes" value returned from the CSI "ListSnapshots" gRPC call + if the driver supports it. When restoring a volume from this snapshot, + the size of the volume MUST NOT be smaller than the restoreSize + if it is specified, otherwise the restoration will fail. If not + specified, it indicates that the size is unknown. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created. + jsonPath: .spec.source.persistentVolumeClaimName + name: SourcePVC + type: string + - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot. + jsonPath: .spec.source.volumeSnapshotContentName + name: SourceSnapshotContent + type: string + - description: Represents the minimum size of volume required to rehydrate from this snapshot. + jsonPath: .status.restoreSize + name: RestoreSize + type: string + - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. + jsonPath: .spec.volumeSnapshotClassName + name: SnapshotClass + type: string + - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object. + jsonPath: .status.boundVolumeSnapshotContentName + name: SnapshotContent + type: string + - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system. + jsonPath: .status.creationTime + name: CreationTime + type: date + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + # This indicates the v1beta1 version of the custom resource is deprecated. + # API requests to this version receive a warning in the server response. + deprecated: true + # This overrides the default warning returned to clients making v1beta1 API requests. + deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshot is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshot" + schema: + openAPIV3Schema: + description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.' + properties: + source: + description: source specifies where a snapshot will be created from. This field is immutable after creation. Required. + properties: + persistentVolumeClaimName: + description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable. + type: string + volumeSnapshotContentName: + description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable. + type: string + type: object + volumeSnapshotClassName: + description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.' + type: string + required: + - source + type: object + status: + description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object. + properties: + boundVolumeSnapshotContentName: + description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.' + type: string + creationTime: + description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown. + format: date-time + type: string + error: + description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurs during the snapshot creation. Upon success, this error field will be cleared. + properties: + message: + description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. + type: boolean + restoreSize: + type: string + description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + required: + - spec + type: object + served: false + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/665" + creationTimestamp: null + name: volumesnapshotclasses.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshotClass + listKind: VolumeSnapshotClassList + plural: volumesnapshotclasses + shortNames: + - vsclass + - vsclasses + singular: volumesnapshotclass + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .driver + name: Driver + type: string + - description: Determines whether a VolumeSnapshotContent created through the + VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. + jsonPath: .deletionPolicy + name: DeletionPolicy + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: VolumeSnapshotClass specifies parameters that a underlying storage + system uses when creating a volume snapshot. A specific VolumeSnapshotClass + is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses + are non-namespaced + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + deletionPolicy: + description: deletionPolicy determines whether a VolumeSnapshotContent + created through the VolumeSnapshotClass should be deleted when its bound + VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". + "Retain" means that the VolumeSnapshotContent and its physical snapshot + on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent + and its physical snapshot on underlying storage system are deleted. + Required. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the storage driver that handles this + VolumeSnapshotClass. Required. + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + parameters: + additionalProperties: + type: string + description: parameters is a key-value map with storage driver specific + parameters for creating snapshots. These values are opaque to Kubernetes. + type: object + required: + - deletionPolicy + - driver + type: object + served: true + storage: true + subresources: {} + - additionalPrinterColumns: + - jsonPath: .driver + name: Driver + type: string + - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. + jsonPath: .deletionPolicy + name: DeletionPolicy + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + # This indicates the v1beta1 version of the custom resource is deprecated. + # API requests to this version receive a warning in the server response. + deprecated: true + # This overrides the default warning returned to clients making v1beta1 API requests. + deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshotClass is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotClass" + schema: + openAPIV3Schema: + description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + deletionPolicy: + description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required. + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + parameters: + additionalProperties: + type: string + description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes. + type: object + required: + - deletionPolicy + - driver + type: object + served: false + storage: false + subresources: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/665" + creationTimestamp: null + name: volumesnapshotcontents.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshotContent + listKind: VolumeSnapshotContentList + plural: volumesnapshotcontents + shortNames: + - vsc + - vscs + singular: volumesnapshotcontent + scope: Cluster + versions: + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: Represents the complete size of the snapshot in bytes + jsonPath: .status.restoreSize + name: RestoreSize + type: integer + - description: Determines whether this VolumeSnapshotContent and its physical + snapshot on the underlying storage system should be deleted when its bound + VolumeSnapshot is deleted. + jsonPath: .spec.deletionPolicy + name: DeletionPolicy + type: string + - description: Name of the CSI driver used to create the physical snapshot on + the underlying storage system. + jsonPath: .spec.driver + name: Driver + type: string + - description: Name of the VolumeSnapshotClass to which this snapshot belongs. + jsonPath: .spec.volumeSnapshotClassName + name: VolumeSnapshotClass + type: string + - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent + object is bound. + jsonPath: .spec.volumeSnapshotRef.name + name: VolumeSnapshot + type: string + - description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. + jsonPath: .spec.volumeSnapshotRef.namespace + name: VolumeSnapshotNamespace + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: VolumeSnapshotContent represents the actual "on-disk" snapshot + object in the underlying storage system + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: spec defines properties of a VolumeSnapshotContent created + by the underlying storage system. Required. + properties: + deletionPolicy: + description: deletionPolicy determines whether this VolumeSnapshotContent + and its physical snapshot on the underlying storage system should + be deleted when its bound VolumeSnapshot is deleted. Supported values + are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent + and its physical snapshot on underlying storage system are kept. + "Delete" means that the VolumeSnapshotContent and its physical snapshot + on underlying storage system are deleted. For dynamically provisioned + snapshots, this field will automatically be filled in by the CSI + snapshotter sidecar with the "DeletionPolicy" field defined in the + corresponding VolumeSnapshotClass. For pre-existing snapshots, users + MUST specify this field when creating the VolumeSnapshotContent + object. Required. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the CSI driver used to create the + physical snapshot on the underlying storage system. This MUST be + the same as the name returned by the CSI GetPluginName() call for + that driver. Required. + type: string + source: + description: source specifies whether the snapshot is (or should be) + dynamically provisioned or already exists, and just requires a Kubernetes + object representation. This field is immutable after creation. Required. + properties: + snapshotHandle: + description: snapshotHandle specifies the CSI "snapshot_id" of + a pre-existing snapshot on the underlying storage system for + which a Kubernetes object representation was (or should be) + created. This field is immutable. + type: string + volumeHandle: + description: volumeHandle specifies the CSI "volume_id" of the + volume from which a snapshot should be dynamically taken from. + This field is immutable. + type: string + type: object + oneOf: + - required: ["snapshotHandle"] + - required: ["volumeHandle"] + sourceVolumeMode: + description: SourceVolumeMode is the mode of the volume whose snapshot + is taken. Can be either “Filesystem” or “Block”. If not specified, + it indicates the source volume's mode is unknown. This field is + immutable. This field is an alpha field. + type: string + volumeSnapshotClassName: + description: name of the VolumeSnapshotClass from which this snapshot + was (or will be) created. Note that after provisioning, the VolumeSnapshotClass + may be deleted or recreated with different set of values, and as + such, should not be referenced post-snapshot creation. + type: string + volumeSnapshotRef: + description: volumeSnapshotRef specifies the VolumeSnapshot object + to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName + field must reference to this VolumeSnapshotContent's name for the + bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent + object, name and namespace of the VolumeSnapshot object MUST be + provided for binding to happen. This field is immutable after creation. + Required. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead of + an entire object, this string should contain a valid JSON/Go + field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within + a pod, this would take on a value like: "spec.containers{name}" + (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" + (container with index 2 in this pod). This syntax is chosen + only to have some well-defined way of referencing a part of + an object. TODO: this design is not final and this field is + subject to change in the future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + required: + - deletionPolicy + - driver + - source + - volumeSnapshotRef + type: object + status: + description: status represents the current information of a snapshot. + properties: + creationTime: + description: creationTime is the timestamp when the point-in-time + snapshot is taken by the underlying storage system. In dynamic snapshot + creation case, this field will be filled in by the CSI snapshotter + sidecar with the "creation_time" value returned from CSI "CreateSnapshot" + gRPC call. For a pre-existing snapshot, this field will be filled + with the "creation_time" value returned from the CSI "ListSnapshots" + gRPC call if the driver supports it. If not specified, it indicates + the creation time is unknown. The format of this field is a Unix + nanoseconds time encoded as an int64. On Unix, the command `date + +%s%N` returns the current time in nanoseconds since 1970-01-01 + 00:00:00 UTC. + format: int64 + type: integer + error: + description: error is the last observed error during snapshot creation, + if any. Upon success after retry, this error field will be cleared. + properties: + message: + description: 'message is a string detailing the encountered error + during snapshot creation if specified. NOTE: message may be + logged, and it should not contain sensitive information.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + description: readyToUse indicates if a snapshot is ready to be used + to restore a volume. In dynamic snapshot creation case, this field + will be filled in by the CSI snapshotter sidecar with the "ready_to_use" + value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing + snapshot, this field will be filled with the "ready_to_use" value + returned from the CSI "ListSnapshots" gRPC call if the driver supports + it, otherwise, this field will be set to "True". If not specified, + it means the readiness of a snapshot is unknown. + type: boolean + restoreSize: + description: restoreSize represents the complete size of the snapshot + in bytes. In dynamic snapshot creation case, this field will be + filled in by the CSI snapshotter sidecar with the "size_bytes" value + returned from CSI "CreateSnapshot" gRPC call. For a pre-existing + snapshot, this field will be filled with the "size_bytes" value + returned from the CSI "ListSnapshots" gRPC call if the driver supports + it. When restoring a volume from this snapshot, the size of the + volume MUST NOT be smaller than the restoreSize if it is specified, + otherwise the restoration will fail. If not specified, it indicates + that the size is unknown. + format: int64 + minimum: 0 + type: integer + snapshotHandle: + description: snapshotHandle is the CSI "snapshot_id" of a snapshot + on the underlying storage system. If not specified, it indicates + that dynamic snapshot creation has either failed or it is still + in progress. + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: Represents the complete size of the snapshot in bytes + jsonPath: .status.restoreSize + name: RestoreSize + type: integer + - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. + jsonPath: .spec.deletionPolicy + name: DeletionPolicy + type: string + - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system. + jsonPath: .spec.driver + name: Driver + type: string + - description: Name of the VolumeSnapshotClass to which this snapshot belongs. + jsonPath: .spec.volumeSnapshotClassName + name: VolumeSnapshotClass + type: string + - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. + jsonPath: .spec.volumeSnapshotRef.name + name: VolumeSnapshot + type: string + - description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. + jsonPath: .spec.volumeSnapshotRef.namespace + name: VolumeSnapshotNamespace + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + # This indicates the v1beta1 version of the custom resource is deprecated. + # API requests to this version receive a warning in the server response. + deprecated: true + # This overrides the default warning returned to clients making v1beta1 API requests. + deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshotContent is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotContent" + schema: + openAPIV3Schema: + description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required. + properties: + deletionPolicy: + description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. Required. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required. + type: string + source: + description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required. + properties: + snapshotHandle: + description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable. + type: string + volumeHandle: + description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable. + type: string + type: object + volumeSnapshotClassName: + description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation. + type: string + volumeSnapshotRef: + description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + required: + - deletionPolicy + - driver + - source + - volumeSnapshotRef + type: object + status: + description: status represents the current information of a snapshot. + properties: + creationTime: + description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC. + format: int64 + type: integer + error: + description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared. + properties: + message: + description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. + type: boolean + restoreSize: + description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. + format: int64 + minimum: 0 + type: integer + snapshotHandle: + description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress. + type: string + type: object + required: + - spec + type: object + served: false + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +{{- end -}} diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-controller.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-controller.yaml new file mode 100644 index 0000000000..c3d0b23823 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-controller.yaml @@ -0,0 +1,258 @@ +kind: Deployment +apiVersion: apps/v1 +metadata: + name: {{ .Values.controller.name }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ .Values.controller.name }} + {{- include "azurefile.labels" . | nindent 4 }} +{{- with .Values.controller.labels }} +{{ . | toYaml | indent 4 }} +{{- end }} +{{- with .Values.controller.annotations }} + annotations: +{{ . | toYaml | indent 4 }} +{{- end }} +spec: + replicas: {{ .Values.controller.replicas }} + selector: + matchLabels: + {{- include "azurefile.selectorLabels" . | nindent 6 }} + app: {{ .Values.controller.name }} + strategy: + type: {{ .Values.controller.strategyType }} + template: + metadata: + labels: + {{- include "azurefile.labels" . | nindent 8 }} + app: {{ .Values.controller.name }} + {{- if .Values.workloadIdentity.clientID }} + azure.workload.identity/use: "true" + {{- end }} +{{- with .Values.controller.podLabels }} +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.controller.podAnnotations }} + annotations: +{{ toYaml . | indent 8 }} +{{- end }} + spec: + hostNetwork: {{ .Values.controller.hostNetwork }} + serviceAccountName: {{ .Values.serviceAccount.controller }} + nodeSelector: + kubernetes.io/os: linux +{{- with .Values.controller.nodeSelector }} +{{ toYaml . | indent 8 }} +{{- end }} + {{- if .Values.controller.runOnMaster}} + node-role.kubernetes.io/master: "" + {{- end}} + {{- if .Values.controller.runOnControlPlane}} + node-role.kubernetes.io/control-plane: "" + {{- end}} + priorityClassName: system-cluster-critical +{{- with .Values.controller.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.controller.affinity }} + affinity: +{{ toYaml . | indent 8 }} +{{- end }} + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | 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: csi-snapshotter +{{- if hasPrefix "/" .Values.snapshot.image.csiSnapshotter.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.snapshot.image.csiSnapshotter.repository }}:{{ .Values.snapshot.image.csiSnapshotter.tag }}" +{{- else }} + image: "{{ .Values.snapshot.image.csiSnapshotter.repository }}:{{ .Values.snapshot.image.csiSnapshotter.tag }}" +{{- end }} + args: + - "-csi-address=$(ADDRESS)" + - "-leader-election" + - "--leader-election-namespace={{ .Release.Namespace }}" + - "-v=2" + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: {{- toYaml .Values.controller.resources.csiSnapshotter | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + - 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' + - '-timeout=120s' + - '-feature-gates=RecoverVolumeExpansionFailure=true' + 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 }} + securityContext: + capabilities: + drop: + - ALL + - 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 +{{- if eq .Values.controller.hostNetwork true }} + - --http-endpoint=localhost:{{ .Values.controller.livenessProbe.healthPort }} +{{- else }} + - --health-port={{ .Values.controller.livenessProbe.healthPort }} +{{- end }} + - --v=2 + imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }} + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: {{- toYaml .Values.controller.resources.livenessProbe | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + - name: azurefile +{{- if hasPrefix "/" .Values.image.azurefile.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}" +{{- else }} + image: "{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}" +{{- end }} + args: + - "--v={{ .Values.controller.logLevel }}" + - "--endpoint=$(CSI_ENDPOINT)" + - "--metrics-address=0.0.0.0:{{ .Values.controller.metricsPort }}" + - "--kubeconfig={{ .Values.controller.kubeconfig }}" + - "--drivername={{ .Values.driver.name }}" + - "--cloud-config-secret-name={{ .Values.controller.cloudConfigSecretName }}" + - "--cloud-config-secret-namespace={{ .Values.controller.cloudConfigSecretNamespace }}" + - "--custom-user-agent={{ .Values.driver.customUserAgent }}" + - "--user-agent-suffix={{ .Values.driver.userAgentSuffix }}" + - "--allow-empty-cloud-config={{ .Values.controller.allowEmptyCloudConfig }}" + ports: + - containerPort: {{ .Values.controller.metricsPort }} + name: metrics + protocol: TCP +{{- if ne .Values.controller.hostNetwork true }} + - containerPort: {{ .Values.controller.livenessProbe.healthPort }} + name: healthz + protocol: TCP +{{- end }} + livenessProbe: + failureThreshold: 5 + httpGet: + path: /healthz +{{- if eq .Values.controller.hostNetwork true }} + host: localhost + port: {{ .Values.controller.livenessProbe.healthPort }} +{{- else }} + port: healthz +{{- end }} + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + env: + - name: AZURE_CREDENTIAL_FILE + valueFrom: + configMapKeyRef: + name: {{ .Values.azureCredentialFileConfigMap }} + 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 }} + imagePullPolicy: {{ .Values.image.azurefile.pullPolicy }} + volumeMounts: + - mountPath: /csi + name: socket-dir + - mountPath: /root/.azcopy + name: azcopy-dir + - mountPath: /etc/kubernetes/ + name: azure-cred + {{- 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.azurefile | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + volumes: + - name: socket-dir + emptyDir: {} + - name: azcopy-dir + emptyDir: {} + - name: azure-cred + hostPath: + path: /etc/kubernetes/ + type: DirectoryOrCreate + {{- if eq .Values.linux.distro "fedora" }} + - name: ssl + hostPath: + path: /etc/ssl/certs + - name: ssl-pki + hostPath: + path: /etc/pki/ca-trust/extracted + {{- end }} diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-driver.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-driver.yaml new file mode 100644 index 0000000000..77df01e32d --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-driver.yaml @@ -0,0 +1,19 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: CSIDriver +metadata: + name: {{ .Values.driver.name }} + labels: + {{- include "azurefile.labels" . | nindent 4 }} + annotations: + csiDriver: "{{ .Values.image.azurefile.tag }}" + snapshot: "{{ .Values.snapshot.image.csiSnapshotter.tag }}" +spec: + attachRequired: {{ .Values.controller.attachRequired }} + podInfoOnMount: true + volumeLifecycleModes: + - Persistent + - Ephemeral + fsGroupPolicy: {{ .Values.feature.fsGroupPolicy }} + tokenRequests: + - audience: api://AzureADTokenExchange diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node-windows-hostprocess.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node-windows-hostprocess.yaml new file mode 100644 index 0000000000..30acee27fb --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node-windows-hostprocess.yaml @@ -0,0 +1,164 @@ +{{- if and .Values.windows.enabled .Values.windows.useHostProcessContainers }} +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: {{ .Values.windows.dsName }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ .Values.windows.dsName }} + {{- include "azurefile.labels" . | nindent 4 }} +{{- with .Values.windows.labels }} +{{ . | toYaml | indent 4 }} +{{- end }} +{{- with .Values.windows.annotations }} + annotations: +{{ . | toYaml | indent 4 }} +{{- end }} +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: {{ .Values.node.maxUnavailable }} + type: {{ .Values.node.strategyType }} + selector: + matchLabels: + app: {{ .Values.windows.dsName }} + {{- include "azurefile.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + app: {{ .Values.windows.dsName }} + {{- include "azurefile.labels" . | nindent 8 }} +{{- with .Values.windows.podLabels }} +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.windows.podAnnotations }} + annotations: +{{ toYaml . | indent 8 }} +{{- end }} + spec: + serviceAccountName: {{ .Values.serviceAccount.node }} +{{- with .Values.windows.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} + nodeSelector: + kubernetes.io/os: windows +{{- with .Values.windows.nodeSelector }} +{{ toYaml . | indent 8 }} +{{- end }} + affinity: +{{- with .Values.windows.affinity }} +{{ toYaml . | indent 8 }} +{{- end }} + nodeAffinity: +{{ toYaml .Values.windows.nodeAffinity | indent 10 }} + priorityClassName: system-node-critical + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + securityContext: + seccompProfile: + type: RuntimeDefault + windowsOptions: + hostProcess: true + runAsUserName: "NT AUTHORITY\\SYSTEM" + hostNetwork: true + initContainers: + - name: init +{{- if hasPrefix "/" .Values.image.azurefile.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}-windows-hp" +{{- else }} + image: "{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}-windows-hp" +{{- end }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - "powershell.exe" + - "-c" + - "New-Item -ItemType Directory -Path C:\\var\\lib\\kubelet\\plugins\\{{ .Values.driver.name }}\\ -Force" + securityContext: + capabilities: + drop: + - ALL + containers: + - 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 }} + command: + - "csi-node-driver-registrar.exe" + args: + - "--csi-address=$(CSI_ENDPOINT)" + - "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)" + - "--plugin-registration-path=$(PLUGIN_REG_DIR)" + - "--v=2" + env: + - name: CSI_ENDPOINT + value: unix://{{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\csi.sock + - name: DRIVER_REG_SOCK_PATH + value: C:\\var\\lib\\kubelet\\plugins\\{{ .Values.driver.name }}\\csi.sock + - name: PLUGIN_REG_DIR + value: C:\\var\\lib\\kubelet\\plugins_registry\\ + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }} + resources: {{- toYaml .Values.windows.resources.nodeDriverRegistrar | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + - name: azurefile +{{- if hasPrefix "/" .Values.image.azurefile.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}-windows-hp" +{{- else }} + image: "{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}-windows-hp" +{{- end }} + command: + - "azurefileplugin.exe" + args: + - "--v={{ .Values.node.logLevel }}" + - "--endpoint=$(CSI_ENDPOINT)" + - "--nodeid=$(KUBE_NODE_NAME)" + - "--kubeconfig={{ .Values.windows.kubeconfig }}" + - "--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 }}" + - "--enable-windows-host-process=true" + - "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}" + env: + - name: AZURE_CREDENTIAL_FILE + valueFrom: + configMapKeyRef: + name: {{ .Values.azureCredentialFileConfigMap }} + key: path-windows + optional: true + - name: CSI_ENDPOINT + value: unix://{{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\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: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + imagePullPolicy: {{ .Values.image.pullPolicy }} + resources: {{- toYaml .Values.windows.resources.azurefile | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL +{{- end -}} diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node-windows.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node-windows.yaml new file mode 100644 index 0000000000..7b69012a1f --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node-windows.yaml @@ -0,0 +1,239 @@ +{{- if and .Values.windows.enabled (not .Values.windows.useHostProcessContainers) }} +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: {{ .Values.windows.dsName }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ .Values.windows.dsName }} + {{- include "azurefile.labels" . | nindent 4 }} +{{- with .Values.windows.labels }} +{{ . | toYaml | indent 4 }} +{{- end }} +{{- with .Values.windows.annotations }} + annotations: +{{ . | toYaml | indent 4 }} +{{- end }} +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: {{ .Values.node.maxUnavailable }} + type: {{ .Values.node.strategyType }} + selector: + matchLabels: + app: {{ .Values.windows.dsName }} + {{- include "azurefile.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + app: {{ .Values.windows.dsName }} + {{- include "azurefile.labels" . | nindent 8 }} +{{- with .Values.windows.podLabels }} +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.windows.podAnnotations }} + annotations: +{{ toYaml . | indent 8 }} +{{- end }} + spec: + serviceAccountName: {{ .Values.serviceAccount.node }} +{{- with .Values.windows.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} + nodeSelector: + kubernetes.io/os: windows +{{- with .Values.windows.nodeSelector }} +{{ toYaml . | indent 8 }} +{{- end }} + affinity: +{{- with .Values.windows.affinity }} +{{ toYaml . | indent 8 }} +{{- end }} + nodeAffinity: +{{ toYaml .Values.windows.nodeAffinity | indent 10 }} + priorityClassName: system-node-critical + securityContext: + seccompProfile: + type: RuntimeDefault + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + containers: + - name: liveness-probe + volumeMounts: + - mountPath: C:\csi + name: plugin-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_ENDPOINT)" + - "--probe-timeout=3s" + - "--health-port={{ .Values.node.livenessProbe.healthPort }}" + - "--v=2" + env: + - name: CSI_ENDPOINT + value: unix://C:\\csi\\csi.sock + imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }} + resources: {{- toYaml .Values.windows.resources.livenessProbe | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + - 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=$(CSI_ENDPOINT)" + - "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)" + - "--v=2" +{{- if .Values.windows.enableRegistrationProbe }} + livenessProbe: + exec: + command: + - /csi-node-driver-registrar.exe + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --mode=kubelet-registration-probe + initialDelaySeconds: 60 + timeoutSeconds: 30 +{{- end }} + env: + - name: CSI_ENDPOINT + value: unix://C:\\csi\\csi.sock + - name: DRIVER_REG_SOCK_PATH + value: C:\\var\\lib\\kubelet\\plugins\\{{ .Values.driver.name }}\\csi.sock + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }} + volumeMounts: + - name: kubelet-dir + mountPath: "C:\\var\\lib\\kubelet" + - name: plugin-dir + mountPath: C:\csi + - name: registration-dir + mountPath: C:\registration + resources: {{- toYaml .Values.windows.resources.nodeDriverRegistrar | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + - name: azurefile +{{- if hasPrefix "/" .Values.image.azurefile.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}" +{{- else }} + image: "{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}" +{{- end }} + args: + - "--v={{ .Values.node.logLevel }}" + - "--endpoint=$(CSI_ENDPOINT)" + - "--nodeid=$(KUBE_NODE_NAME)" + - "--kubeconfig={{ .Values.windows.kubeconfig }}" + - "--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 }}" + - "--allow-inline-volume-key-access-with-identity={{ .Values.node.allowInlineVolumeKeyAccessWithIdentity }}" + - "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}" + 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: {{ .Values.azureCredentialFileConfigMap }} + key: path-windows + optional: true + - name: CSI_ENDPOINT + value: unix://C:\\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: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: AZURE_GO_SDK_LOG_LEVEL + value: {{ .Values.driver.azureGoSDKLogLevel }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + volumeMounts: + - name: kubelet-dir + mountPath: "C:\\var\\lib\\kubelet" + - name: plugin-dir + mountPath: C:\csi + - name: azure-config + mountPath: C:\k + - name: csi-proxy-fs-pipe-v1 + mountPath: \\.\pipe\csi-proxy-filesystem-v1 + - name: csi-proxy-smb-pipe-v1 + mountPath: \\.\pipe\csi-proxy-smb-v1 + # these paths are still included for compatibility, they're used + # only if the node has still the beta version of the CSI proxy + - name: csi-proxy-fs-pipe-v1beta1 + mountPath: \\.\pipe\csi-proxy-filesystem-v1beta1 + - name: csi-proxy-smb-pipe-v1beta1 + mountPath: \\.\pipe\csi-proxy-smb-v1beta1 + resources: {{- toYaml .Values.windows.resources.azurefile | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + volumes: + - name: csi-proxy-fs-pipe-v1 + hostPath: + path: \\.\pipe\csi-proxy-filesystem-v1 + - name: csi-proxy-smb-pipe-v1 + hostPath: + path: \\.\pipe\csi-proxy-smb-v1 + # these paths are still included for compatibility, they're used + # only if the node has still the beta version of the CSI proxy + - name: csi-proxy-fs-pipe-v1beta1 + hostPath: + path: \\.\pipe\csi-proxy-filesystem-v1beta1 + - name: csi-proxy-smb-pipe-v1beta1 + hostPath: + path: \\.\pipe\csi-proxy-smb-v1beta1 + - name: registration-dir + hostPath: + path: {{ .Values.windows.kubelet }}\plugins_registry\ + type: Directory + - name: kubelet-dir + hostPath: + path: {{ .Values.windows.kubelet }}\ + type: Directory + - name: plugin-dir + hostPath: + path: {{ .Values.windows.kubelet }}\plugins\{{ .Values.driver.name }}\ + type: DirectoryOrCreate + - name: azure-config + hostPath: + path: C:\k + type: Directory +{{- end -}} diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node.yaml new file mode 100644 index 0000000000..c7a2d8b5b0 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/csi-azurefile-node.yaml @@ -0,0 +1,234 @@ +{{- if .Values.linux.enabled}} +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: {{ .Values.linux.dsName }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ .Values.linux.dsName }} + {{- include "azurefile.labels" . | nindent 4 }} +{{- with .Values.linux.labels }} +{{ . | toYaml | indent 4 }} +{{- end }} +{{- with .Values.linux.annotations }} + annotations: +{{ . | toYaml | indent 4 }} +{{- end }} +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: {{ .Values.node.maxUnavailable }} + type: {{ .Values.node.strategyType }} + selector: + matchLabels: + app: {{ .Values.linux.dsName }} + {{- include "azurefile.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + app: {{ .Values.linux.dsName }} + {{- include "azurefile.labels" . | nindent 8 }} + {{- if .Values.workloadIdentity.clientID }} + azure.workload.identity/use: "true" + {{- end }} +{{- with .Values.linux.podLabels }} +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.linux.podAnnotations }} + annotations: +{{ toYaml . | indent 8 }} +{{- end }} + spec: + hostNetwork: true + dnsPolicy: {{ .Values.linux.dnsPolicy }} + serviceAccountName: {{ .Values.serviceAccount.node }} + nodeSelector: + kubernetes.io/os: linux +{{- with .Values.linux.nodeSelector }} +{{ toYaml . | indent 8 }} +{{- end }} + affinity: +{{- with .Values.linux.affinity }} +{{ toYaml . | indent 8 }} +{{- end }} + nodeAffinity: +{{ toYaml .Values.linux.nodeAffinity | indent 10 }} + priorityClassName: system-node-critical + securityContext: + seccompProfile: + type: RuntimeDefault +{{- with .Values.linux.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + containers: + - name: liveness-probe + 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 + - --http-endpoint=localhost:{{ .Values.node.livenessProbe.healthPort }} + - --v=2 + imagePullPolicy: {{ .Values.image.livenessProbe.pullPolicy }} + resources: {{- toYaml .Values.linux.resources.livenessProbe | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + - 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 +{{- if .Values.linux.enableRegistrationProbe }} + livenessProbe: + exec: + command: + - /csi-node-driver-registrar + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --mode=kubelet-registration-probe + initialDelaySeconds: 30 + timeoutSeconds: 15 +{{- end }} + env: + - name: ADDRESS + value: /csi/csi.sock + - name: DRIVER_REG_SOCK_PATH + value: {{ .Values.linux.kubelet }}/plugins/{{ .Values.driver.name }}/csi.sock + imagePullPolicy: {{ .Values.image.nodeDriverRegistrar.pullPolicy }} + volumeMounts: + - name: socket-dir + mountPath: /csi + - name: registration-dir + mountPath: /registration + resources: {{- toYaml .Values.linux.resources.nodeDriverRegistrar | nindent 12 }} + securityContext: + capabilities: + drop: + - ALL + - name: azurefile +{{- if hasPrefix "/" .Values.image.azurefile.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}" +{{- else }} + image: "{{ .Values.image.azurefile.repository }}:{{ .Values.image.azurefile.tag }}" +{{- end }} + args: + - "--v={{ .Values.node.logLevel }}" + - "--endpoint=$(CSI_ENDPOINT)" + - "--nodeid=$(KUBE_NODE_NAME)" + - "--kubeconfig={{ .Values.linux.kubeconfig }}" + - "--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-volume-mount-group={{ .Values.feature.enableVolumeMountGroup }}" + - "--enable-get-volume-stats={{ .Values.feature.enableGetVolumeStats }}" + - "--mount-permissions={{ .Values.linux.mountPermissions }}" + - "--allow-inline-volume-key-access-with-identity={{ .Values.node.allowInlineVolumeKeyAccessWithIdentity }}" + - "--metrics-address=0.0.0.0:{{ .Values.node.metricsPort }}" + livenessProbe: + failureThreshold: 5 + httpGet: + host: localhost + path: /healthz + port: {{ .Values.node.livenessProbe.healthPort }} + initialDelaySeconds: 30 + timeoutSeconds: 10 + periodSeconds: 30 + env: + - name: AZURE_CREDENTIAL_FILE + valueFrom: + configMapKeyRef: + name: {{ .Values.azureCredentialFileConfigMap }} + 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: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: AZURE_GO_SDK_LOG_LEVEL + value: {{ .Values.driver.azureGoSDKLogLevel }} + imagePullPolicy: {{ .Values.image.azurefile.pullPolicy }} + securityContext: + privileged: true + capabilities: + drop: + - ALL + volumeMounts: + - mountPath: /csi + name: socket-dir + - mountPath: {{ .Values.linux.kubelet }}/ + mountPropagation: Bidirectional + name: mountpoint-dir + - mountPath: /etc/kubernetes/ + name: azure-cred + - mountPath: /dev + name: device-dir + {{- 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.linux.resources.azurefile | nindent 12 }} + volumes: + - 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: /dev + type: Directory + name: device-dir + {{- if eq .Values.linux.distro "fedora" }} + - name: ssl + hostPath: + path: /etc/ssl/certs + - name: ssl-pki + hostPath: + path: /etc/pki/ca-trust/extracted + {{- end }} +{{- end -}} diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/csi-snapshot-controller.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/csi-snapshot-controller.yaml new file mode 100644 index 0000000000..4d83a4b7f3 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/csi-snapshot-controller.yaml @@ -0,0 +1,78 @@ +{{- if .Values.snapshot.enabled -}} +kind: Deployment +apiVersion: apps/v1 +metadata: + name: {{ .Values.snapshot.snapshotController.name}} + namespace: {{ .Release.Namespace }} + labels: + app: {{ .Values.snapshot.snapshotController.name}} + {{- include "azurefile.labels" . | nindent 4 }} +{{- with .Values.snapshot.snapshotController.labels }} +{{ . | toYaml | indent 4 }} +{{- end }} +{{- with .Values.snapshot.snapshotController.annotations }} + annotations: +{{ . | toYaml | indent 4 }} +{{- end }} +spec: + replicas: {{ .Values.snapshot.snapshotController.replicas }} + selector: + matchLabels: + app: {{ .Values.snapshot.snapshotController.name}} + {{- include "azurefile.selectorLabels" . | nindent 6 }} + # the snapshot controller won't be marked as ready if the v1 CRDs are unavailable + # in #504 the snapshot-controller will exit after around 7.5 seconds if it + # can't find the v1 CRDs so this value should be greater than that + minReadySeconds: 15 + strategy: + rollingUpdate: + maxSurge: 0 + maxUnavailable: 1 + type: {{ .Values.snapshot.snapshotController.strategyType }} + template: + metadata: + labels: + app: {{ .Values.snapshot.snapshotController.name}} + {{- include "azurefile.labels" . | nindent 8 }} +{{- with .Values.snapshot.snapshotController.podLabels }} +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.snapshot.snapshotController.podAnnotations }} + annotations: +{{ toYaml . | indent 8 }} +{{- end }} + spec: + serviceAccountName: {{ .Values.serviceAccount.snapshotController }} + nodeSelector: + kubernetes.io/os: linux + priorityClassName: system-cluster-critical +{{- with .Values.controller.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} +{{- end }} +{{- with .Values.controller.affinity }} + affinity: +{{ toYaml . | indent 8 }} +{{- end }} + {{- if .Values.imagePullSecrets }} + imagePullSecrets: +{{ toYaml .Values.imagePullSecrets | indent 8 }} + {{- end }} + containers: + - name: {{ .Values.snapshot.snapshotController.name}} +{{- if hasPrefix "/" .Values.snapshot.image.csiSnapshotController.repository }} + image: "{{ .Values.image.baseRepo }}{{ .Values.snapshot.image.csiSnapshotController.repository }}:{{ .Values.snapshot.image.csiSnapshotController.tag }}" +{{- else }} + image: "{{ .Values.snapshot.image.csiSnapshotController.repository }}:{{ .Values.snapshot.image.csiSnapshotController.tag }}" +{{- end }} + args: + - "--v=2" + - "--leader-election=true" + - "--leader-election-namespace={{ .Release.Namespace }}" + resources: {{- toYaml .Values.snapshot.snapshotController.resources | nindent 12 }} + imagePullPolicy: {{ .Values.snapshot.image.csiSnapshotController.pullPolicy }} + securityContext: + capabilities: + drop: + - ALL +{{- end -}} diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-azurefile-controller.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-azurefile-controller.yaml new file mode 100644 index 0000000000..e0a2e14d95 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-azurefile-controller.yaml @@ -0,0 +1,207 @@ +{{- if .Values.rbac.create -}} +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-external-provisioner-role + labels: + {{- include "azurefile.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "patch", "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: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] + verbs: ["get", "list"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["get", "list"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create", "patch"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-csi-provisioner-binding + labels: + {{- include "azurefile.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-attacher-role + labels: + {{- include "azurefile.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["csi.storage.k8s.io"] + resources: ["csinodeinfos"] + verbs: ["get", "list", "watch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments/status"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create", "patch"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-csi-attacher-binding + labels: + {{- include "azurefile.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccount.controller }} + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: {{ .Values.rbac.name }}-external-attacher-role + apiGroup: rbac.authorization.k8s.io + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-external-snapshotter-role + labels: + {{- include "azurefile.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents/status"] + verbs: ["update", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create", "patch"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-csi-snapshotter-binding + labels: + {{- include "azurefile.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccount.controller }} + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: {{ .Values.rbac.name }}-external-snapshotter-role + apiGroup: rbac.authorization.k8s.io + +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-external-resizer-role + labels: + {{- include "azurefile.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", "watch", "list", "delete", "update", "create", "patch"] +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: {{ .Values.rbac.name }}-csi-resizer-role + labels: + {{- include "azurefile.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 "azurefile.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 "azurefile.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.30.6/azurefile-csi-driver/templates/rbac-csi-azurefile-node.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-azurefile-node.yaml new file mode 100644 index 0000000000..4e1fbcde94 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-azurefile-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 "azurefile.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 "azurefile.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.30.6/azurefile-csi-driver/templates/rbac-csi-snapshot-controller.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-snapshot-controller.yaml new file mode 100644 index 0000000000..0cff1ff01f --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/rbac-csi-snapshot-controller.yaml @@ -0,0 +1,80 @@ +{{- if and .Values.snapshot.enabled .Values.rbac.create -}} +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-snapshot-controller-role + labels: + {{- include "azurefile.labels" . | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents/status"] + verbs: ["patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots/status"] + verbs: ["update", "patch"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-snapshot-controller-binding + labels: + {{- include "azurefile.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccount.snapshotController }} + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: csi-snapshot-controller-role + apiGroup: rbac.authorization.k8s.io + +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-snapshot-controller-leaderelection-role + labels: + {{- include "azurefile.labels" . | nindent 4 }} +rules: + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create", "patch"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-snapshot-controller-leaderelection-binding + labels: + {{- include "azurefile.labels" . | nindent 4 }} +subjects: + - kind: ServiceAccount + name: {{ .Values.serviceAccount.snapshotController }} + namespace: {{ .Release.Namespace }} +roleRef: + kind: ClusterRole + name: csi-snapshot-controller-leaderelection-role + apiGroup: rbac.authorization.k8s.io +{{ end }} diff --git a/charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-azurefile-controller.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-azurefile-controller.yaml new file mode 100644 index 0000000000..71442b70dc --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-azurefile-controller.yaml @@ -0,0 +1,17 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccount.controller }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "azurefile.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.30.6/azurefile-csi-driver/templates/serviceaccount-csi-azurefile-node.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-azurefile-node.yaml new file mode 100644 index 0000000000..ab2074429d --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-azurefile-node.yaml @@ -0,0 +1,17 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccount.node }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "azurefile.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.30.6/azurefile-csi-driver/templates/serviceaccount-csi-snapshot-controller.yaml b/charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-snapshot-controller.yaml new file mode 100644 index 0000000000..e77ef8f991 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/templates/serviceaccount-csi-snapshot-controller.yaml @@ -0,0 +1,9 @@ +{{- if and .Values.snapshot.enabled .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.serviceAccount.snapshotController }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "azurefile.labels" . | nindent 4 }} +{{- end -}} diff --git a/charts/v1.30.6/azurefile-csi-driver/values.yaml b/charts/v1.30.6/azurefile-csi-driver/values.yaml new file mode 100644 index 0000000000..b041077053 --- /dev/null +++ b/charts/v1.30.6/azurefile-csi-driver/values.yaml @@ -0,0 +1,260 @@ +image: + baseRepo: mcr.microsoft.com + azurefile: + repository: /oss/kubernetes-csi/azurefile-csi + tag: v1.30.6 + pullPolicy: IfNotPresent + csiProvisioner: + repository: /oss/kubernetes-csi/csi-provisioner + tag: v5.1.0 + pullPolicy: IfNotPresent + csiResizer: + repository: /oss/kubernetes-csi/csi-resizer + tag: v1.12.0 + pullPolicy: IfNotPresent + livenessProbe: + repository: /oss/kubernetes-csi/livenessprobe + tag: v2.14.0 + pullPolicy: IfNotPresent + nodeDriverRegistrar: + repository: /oss/kubernetes-csi/csi-node-driver-registrar + tag: v2.12.0 + pullPolicy: IfNotPresent + +## 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 + +# -- Custom labels to add into metadata +customLabels: {} + # k8s-app: azurefile-csi-driver + +serviceAccount: + create: true # When true, service accounts will be created for you. Set to false if you want to use your own. + controller: csi-azurefile-controller-sa # Name of Service Account to be created or used + node: csi-azurefile-node-sa # Name of Service Account to be created or used + snapshotController: csi-snapshot-controller-sa # Name of Service Account to be created or used + +rbac: + create: true + name: azurefile + +controller: + name: csi-azurefile-controller + cloudConfigSecretName: azure-cloud-provider + cloudConfigSecretNamespace: kube-system + allowEmptyCloudConfig: true + replicas: 2 + strategyType: RollingUpdate + hostNetwork: true # this setting could be disabled if controller does not depend on MSI setting + metricsPort: 29614 + livenessProbe: + healthPort: 29612 + runOnMaster: false + runOnControlPlane: false + attachRequired: false + logLevel: 5 + labels: {} + annotations: {} + podLabels: {} + podAnnotations: {} + resources: + csiProvisioner: + limits: + cpu: 1 + memory: 500Mi + requests: + cpu: 10m + memory: 20Mi + csiResizer: + limits: + cpu: 1 + memory: 500Mi + requests: + cpu: 10m + memory: 20Mi + csiSnapshotter: + limits: + cpu: 1 + memory: 200Mi + requests: + cpu: 10m + memory: 20Mi + livenessProbe: + limits: + cpu: 1 + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + azurefile: + limits: + cpu: 1 + memory: 200Mi + requests: + cpu: 10m + memory: 20Mi + kubeconfig: "" + 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: + strategyType: RollingUpdate + maxUnavailable: 1 + cloudConfigSecretName: azure-cloud-provider + cloudConfigSecretNamespace: kube-system + allowEmptyCloudConfig: true + allowInlineVolumeKeyAccessWithIdentity: false + metricsPort: 29615 + livenessProbe: + healthPort: 29613 + logLevel: 5 + +snapshot: + enabled: false + image: + csiSnapshotter: + repository: /oss/kubernetes-csi/csi-snapshotter + tag: v8.1.0 + pullPolicy: IfNotPresent + csiSnapshotController: + repository: /oss/kubernetes-csi/snapshot-controller + tag: v8.1.0 + pullPolicy: IfNotPresent + snapshotController: + name: csi-snapshot-controller + replicas: 2 + strategyType: RollingUpdate + labels: {} + annotations: {} + podLabels: {} + podAnnotations: {} + resources: + limits: + cpu: 1 + memory: 300Mi + requests: + cpu: 10m + memory: 20Mi + +feature: + enableGetVolumeStats: true + enableVolumeMountGroup: true + fsGroupPolicy: ReadWriteOnceWithFSType + +driver: + name: file.csi.azure.com + customUserAgent: "" + userAgentSuffix: "OSS-helm" + azureGoSDKLogLevel: "" # available values: ""(no logs), DEBUG, INFO, WARNING, ERROR + httpsProxy: "" + httpProxy: "" + +linux: + enabled: true + dsName: csi-azurefile-node # daemonset name + dnsPolicy: Default # available values: Default, ClusterFirst, ClusterFirstWithHostNet, None + kubelet: /var/lib/kubelet + kubeconfig: "" + distro: debian # available values: debian, fedora + mountPermissions: 0777 + enableRegistrationProbe: true + labels: {} + annotations: {} + podLabels: {} + podAnnotations: {} + resources: + livenessProbe: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + nodeDriverRegistrar: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + azurefile: + limits: + memory: 400Mi + requests: + cpu: 10m + memory: 20Mi + tolerations: + - operator: "Exists" + nodeSelector: {} + affinity: {} + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: type + operator: NotIn + values: + - virtual-kubelet + +windows: + enabled: true + useHostProcessContainers: true + dsName: csi-azurefile-node-win # daemonset name + kubelet: 'C:\var\lib\kubelet' + kubeconfig: "" + enableRegistrationProbe: true + labels: {} + annotations: {} + podLabels: {} + podAnnotations: {} + resources: + livenessProbe: + limits: + memory: 150Mi + requests: + cpu: 10m + memory: 40Mi + nodeDriverRegistrar: + limits: + memory: 150Mi + requests: + cpu: 30m + memory: 40Mi + azurefile: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 40Mi + tolerations: + - key: "node.kubernetes.io/os" + operator: "Exists" + effect: "NoSchedule" + nodeSelector: {} + affinity: {} + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: type + operator: NotIn + values: + - virtual-kubelet + +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: "" + +azureCredentialFileConfigMap: azure-cred-file diff --git a/deploy/csi-azurefile-controller.yaml b/deploy/csi-azurefile-controller.yaml index f9e980f8ed..1c9ccb140f 100644 --- a/deploy/csi-azurefile-controller.yaml +++ b/deploy/csi-azurefile-controller.yaml @@ -128,7 +128,7 @@ spec: drop: - ALL - name: azurefile - image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.5 + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6 imagePullPolicy: IfNotPresent args: - "--v=5" diff --git a/deploy/csi-azurefile-node-windows-hostprocess.yaml b/deploy/csi-azurefile-node-windows-hostprocess.yaml index e3b7cc4aad..0dcc13bc11 100644 --- a/deploy/csi-azurefile-node-windows-hostprocess.yaml +++ b/deploy/csi-azurefile-node-windows-hostprocess.yaml @@ -43,7 +43,7 @@ spec: hostNetwork: true initContainers: - name: init - image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.5-windows-hp + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6-windows-hp imagePullPolicy: IfNotPresent command: - "powershell.exe" @@ -86,7 +86,7 @@ spec: drop: - ALL - name: azurefile - image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.5-windows-hp + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6-windows-hp imagePullPolicy: IfNotPresent command: - "azurefileplugin.exe" diff --git a/deploy/csi-azurefile-node-windows.yaml b/deploy/csi-azurefile-node-windows.yaml index d7f8ed1e39..78d841c4ec 100644 --- a/deploy/csi-azurefile-node-windows.yaml +++ b/deploy/csi-azurefile-node-windows.yaml @@ -102,7 +102,7 @@ spec: drop: - ALL - name: azurefile - image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.5 + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6 imagePullPolicy: IfNotPresent args: - --v=5 diff --git a/deploy/csi-azurefile-node.yaml b/deploy/csi-azurefile-node.yaml index c6dcc1304d..bcd516ba93 100644 --- a/deploy/csi-azurefile-node.yaml +++ b/deploy/csi-azurefile-node.yaml @@ -93,7 +93,7 @@ spec: drop: - ALL - name: azurefile - image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.5 + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6 imagePullPolicy: IfNotPresent args: - "--v=5" diff --git a/deploy/v1.30.6/crd-csi-snapshot.yaml b/deploy/v1.30.6/crd-csi-snapshot.yaml new file mode 100644 index 0000000000..d4b90b266d --- /dev/null +++ b/deploy/v1.30.6/crd-csi-snapshot.yaml @@ -0,0 +1,838 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/665" + creationTimestamp: null + name: volumesnapshots.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshot + listKind: VolumeSnapshotList + plural: volumesnapshots + shortNames: + - vs + singular: volumesnapshot + scope: Namespaced + versions: + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: If a new snapshot needs to be created, this contains the name of + the source PVC from which this snapshot was (or will be) created. + jsonPath: .spec.source.persistentVolumeClaimName + name: SourcePVC + type: string + - description: If a snapshot already exists, this contains the name of the existing + VolumeSnapshotContent object representing the existing snapshot. + jsonPath: .spec.source.volumeSnapshotContentName + name: SourceSnapshotContent + type: string + - description: Represents the minimum size of volume required to rehydrate from + this snapshot. + jsonPath: .status.restoreSize + name: RestoreSize + type: string + - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. + jsonPath: .spec.volumeSnapshotClassName + name: SnapshotClass + type: string + - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot + object intends to bind to. Please note that verification of binding actually + requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure + both are pointing at each other. Binding MUST be verified prior to usage of + this object. + jsonPath: .status.boundVolumeSnapshotContentName + name: SnapshotContent + type: string + - description: Timestamp when the point-in-time snapshot was taken by the underlying + storage system. + jsonPath: .status.creationTime + name: CreationTime + type: date + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: VolumeSnapshot is a user's request for either creating a point-in-time + snapshot of a persistent volume, or binding to a pre-existing snapshot. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: 'spec defines the desired characteristics of a snapshot requested + by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots + Required.' + properties: + source: + description: source specifies where a snapshot will be created from. + This field is immutable after creation. Required. + properties: + persistentVolumeClaimName: + description: persistentVolumeClaimName specifies the name of the + PersistentVolumeClaim object representing the volume from which + a snapshot should be created. This PVC is assumed to be in the + same namespace as the VolumeSnapshot object. This field should + be set if the snapshot does not exists, and needs to be created. + This field is immutable. + type: string + volumeSnapshotContentName: + description: volumeSnapshotContentName specifies the name of a + pre-existing VolumeSnapshotContent object representing an existing + volume snapshot. This field should be set if the snapshot already + exists and only needs a representation in Kubernetes. This field + is immutable. + type: string + type: object + oneOf: + - required: ["persistentVolumeClaimName"] + - required: ["volumeSnapshotContentName"] + volumeSnapshotClassName: + description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass + requested by the VolumeSnapshot. VolumeSnapshotClassName may be + left nil to indicate that the default SnapshotClass should be used. + A given cluster may have multiple default Volume SnapshotClasses: + one default per CSI Driver. If a VolumeSnapshot does not specify + a SnapshotClass, VolumeSnapshotSource will be checked to figure + out what the associated CSI Driver is, and the default VolumeSnapshotClass + associated with that CSI Driver will be used. If more than one VolumeSnapshotClass + exist for a given CSI Driver and more than one have been marked + as default, CreateSnapshot will fail and generate an event. Empty + string is not allowed for this field.' + type: string + required: + - source + type: object + status: + description: status represents the current information of a snapshot. + Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent + objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent + point at each other) before using this object. + properties: + boundVolumeSnapshotContentName: + description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent + object to which this VolumeSnapshot object intends to bind to. If + not specified, it indicates that the VolumeSnapshot object has not + been successfully bound to a VolumeSnapshotContent object yet. NOTE: + To avoid possible security issues, consumers must verify binding + between VolumeSnapshot and VolumeSnapshotContent objects is successful + (by validating that both VolumeSnapshot and VolumeSnapshotContent + point at each other) before using this object.' + type: string + creationTime: + description: creationTime is the timestamp when the point-in-time + snapshot is taken by the underlying storage system. In dynamic snapshot + creation case, this field will be filled in by the snapshot controller + with the "creation_time" value returned from CSI "CreateSnapshot" + gRPC call. For a pre-existing snapshot, this field will be filled + with the "creation_time" value returned from the CSI "ListSnapshots" + gRPC call if the driver supports it. If not specified, it may indicate + that the creation time of the snapshot is unknown. + format: date-time + type: string + error: + description: error is the last observed error during snapshot creation, + if any. This field could be helpful to upper level controllers(i.e., + application controller) to decide whether they should continue on + waiting for the snapshot to be created based on the type of error + reported. The snapshot controller will keep retrying when an error + occurs during the snapshot creation. Upon success, this error field + will be cleared. + properties: + message: + description: 'message is a string detailing the encountered error + during snapshot creation if specified. NOTE: message may be + logged, and it should not contain sensitive information.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + description: readyToUse indicates if the snapshot is ready to be used + to restore a volume. In dynamic snapshot creation case, this field + will be filled in by the snapshot controller with the "ready_to_use" + value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing + snapshot, this field will be filled with the "ready_to_use" value + returned from the CSI "ListSnapshots" gRPC call if the driver supports + it, otherwise, this field will be set to "True". If not specified, + it means the readiness of a snapshot is unknown. + type: boolean + restoreSize: + type: string + description: restoreSize represents the minimum size of volume required + to create a volume from this snapshot. In dynamic snapshot creation + case, this field will be filled in by the snapshot controller with + the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. + For a pre-existing snapshot, this field will be filled with the + "size_bytes" value returned from the CSI "ListSnapshots" gRPC call + if the driver supports it. When restoring a volume from this snapshot, + the size of the volume MUST NOT be smaller than the restoreSize + if it is specified, otherwise the restoration will fail. If not + specified, it indicates that the size is unknown. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: If a new snapshot needs to be created, this contains the name of the source PVC from which this snapshot was (or will be) created. + jsonPath: .spec.source.persistentVolumeClaimName + name: SourcePVC + type: string + - description: If a snapshot already exists, this contains the name of the existing VolumeSnapshotContent object representing the existing snapshot. + jsonPath: .spec.source.volumeSnapshotContentName + name: SourceSnapshotContent + type: string + - description: Represents the minimum size of volume required to rehydrate from this snapshot. + jsonPath: .status.restoreSize + name: RestoreSize + type: string + - description: The name of the VolumeSnapshotClass requested by the VolumeSnapshot. + jsonPath: .spec.volumeSnapshotClassName + name: SnapshotClass + type: string + - description: Name of the VolumeSnapshotContent object to which the VolumeSnapshot object intends to bind to. Please note that verification of binding actually requires checking both VolumeSnapshot and VolumeSnapshotContent to ensure both are pointing at each other. Binding MUST be verified prior to usage of this object. + jsonPath: .status.boundVolumeSnapshotContentName + name: SnapshotContent + type: string + - description: Timestamp when the point-in-time snapshot was taken by the underlying storage system. + jsonPath: .status.creationTime + name: CreationTime + type: date + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + # This indicates the v1beta1 version of the custom resource is deprecated. + # API requests to this version receive a warning in the server response. + deprecated: true + # This overrides the default warning returned to clients making v1beta1 API requests. + deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshot is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshot" + schema: + openAPIV3Schema: + description: VolumeSnapshot is a user's request for either creating a point-in-time snapshot of a persistent volume, or binding to a pre-existing snapshot. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: 'spec defines the desired characteristics of a snapshot requested by a user. More info: https://kubernetes.io/docs/concepts/storage/volume-snapshots#volumesnapshots Required.' + properties: + source: + description: source specifies where a snapshot will be created from. This field is immutable after creation. Required. + properties: + persistentVolumeClaimName: + description: persistentVolumeClaimName specifies the name of the PersistentVolumeClaim object representing the volume from which a snapshot should be created. This PVC is assumed to be in the same namespace as the VolumeSnapshot object. This field should be set if the snapshot does not exists, and needs to be created. This field is immutable. + type: string + volumeSnapshotContentName: + description: volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent object representing an existing volume snapshot. This field should be set if the snapshot already exists and only needs a representation in Kubernetes. This field is immutable. + type: string + type: object + volumeSnapshotClassName: + description: 'VolumeSnapshotClassName is the name of the VolumeSnapshotClass requested by the VolumeSnapshot. VolumeSnapshotClassName may be left nil to indicate that the default SnapshotClass should be used. A given cluster may have multiple default Volume SnapshotClasses: one default per CSI Driver. If a VolumeSnapshot does not specify a SnapshotClass, VolumeSnapshotSource will be checked to figure out what the associated CSI Driver is, and the default VolumeSnapshotClass associated with that CSI Driver will be used. If more than one VolumeSnapshotClass exist for a given CSI Driver and more than one have been marked as default, CreateSnapshot will fail and generate an event. Empty string is not allowed for this field.' + type: string + required: + - source + type: object + status: + description: status represents the current information of a snapshot. Consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object. + properties: + boundVolumeSnapshotContentName: + description: 'boundVolumeSnapshotContentName is the name of the VolumeSnapshotContent object to which this VolumeSnapshot object intends to bind to. If not specified, it indicates that the VolumeSnapshot object has not been successfully bound to a VolumeSnapshotContent object yet. NOTE: To avoid possible security issues, consumers must verify binding between VolumeSnapshot and VolumeSnapshotContent objects is successful (by validating that both VolumeSnapshot and VolumeSnapshotContent point at each other) before using this object.' + type: string + creationTime: + description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it may indicate that the creation time of the snapshot is unknown. + format: date-time + type: string + error: + description: error is the last observed error during snapshot creation, if any. This field could be helpful to upper level controllers(i.e., application controller) to decide whether they should continue on waiting for the snapshot to be created based on the type of error reported. The snapshot controller will keep retrying when an error occurs during the snapshot creation. Upon success, this error field will be cleared. + properties: + message: + description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + description: readyToUse indicates if the snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. + type: boolean + restoreSize: + type: string + description: restoreSize represents the minimum size of volume required to create a volume from this snapshot. In dynamic snapshot creation case, this field will be filled in by the snapshot controller with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + required: + - spec + type: object + served: false + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/665" + creationTimestamp: null + name: volumesnapshotclasses.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshotClass + listKind: VolumeSnapshotClassList + plural: volumesnapshotclasses + shortNames: + - vsclass + - vsclasses + singular: volumesnapshotclass + scope: Cluster + versions: + - additionalPrinterColumns: + - jsonPath: .driver + name: Driver + type: string + - description: Determines whether a VolumeSnapshotContent created through the + VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. + jsonPath: .deletionPolicy + name: DeletionPolicy + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: VolumeSnapshotClass specifies parameters that a underlying storage + system uses when creating a volume snapshot. A specific VolumeSnapshotClass + is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses + are non-namespaced + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + deletionPolicy: + description: deletionPolicy determines whether a VolumeSnapshotContent + created through the VolumeSnapshotClass should be deleted when its bound + VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". + "Retain" means that the VolumeSnapshotContent and its physical snapshot + on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent + and its physical snapshot on underlying storage system are deleted. + Required. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the storage driver that handles this + VolumeSnapshotClass. Required. + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + parameters: + additionalProperties: + type: string + description: parameters is a key-value map with storage driver specific + parameters for creating snapshots. These values are opaque to Kubernetes. + type: object + required: + - deletionPolicy + - driver + type: object + served: true + storage: true + subresources: {} + - additionalPrinterColumns: + - jsonPath: .driver + name: Driver + type: string + - description: Determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. + jsonPath: .deletionPolicy + name: DeletionPolicy + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + # This indicates the v1beta1 version of the custom resource is deprecated. + # API requests to this version receive a warning in the server response. + deprecated: true + # This overrides the default warning returned to clients making v1beta1 API requests. + deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshotClass is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotClass" + schema: + openAPIV3Schema: + description: VolumeSnapshotClass specifies parameters that a underlying storage system uses when creating a volume snapshot. A specific VolumeSnapshotClass is used by specifying its name in a VolumeSnapshot object. VolumeSnapshotClasses are non-namespaced + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + deletionPolicy: + description: deletionPolicy determines whether a VolumeSnapshotContent created through the VolumeSnapshotClass should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. Required. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the storage driver that handles this VolumeSnapshotClass. Required. + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + parameters: + additionalProperties: + type: string + description: parameters is a key-value map with storage driver specific parameters for creating snapshots. These values are opaque to Kubernetes. + type: object + required: + - deletionPolicy + - driver + type: object + served: false + storage: false + subresources: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.8.0 + api-approved.kubernetes.io: "https://github.com/kubernetes-csi/external-snapshotter/pull/665" + creationTimestamp: null + name: volumesnapshotcontents.snapshot.storage.k8s.io +spec: + group: snapshot.storage.k8s.io + names: + kind: VolumeSnapshotContent + listKind: VolumeSnapshotContentList + plural: volumesnapshotcontents + shortNames: + - vsc + - vscs + singular: volumesnapshotcontent + scope: Cluster + versions: + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: Represents the complete size of the snapshot in bytes + jsonPath: .status.restoreSize + name: RestoreSize + type: integer + - description: Determines whether this VolumeSnapshotContent and its physical + snapshot on the underlying storage system should be deleted when its bound + VolumeSnapshot is deleted. + jsonPath: .spec.deletionPolicy + name: DeletionPolicy + type: string + - description: Name of the CSI driver used to create the physical snapshot on + the underlying storage system. + jsonPath: .spec.driver + name: Driver + type: string + - description: Name of the VolumeSnapshotClass to which this snapshot belongs. + jsonPath: .spec.volumeSnapshotClassName + name: VolumeSnapshotClass + type: string + - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent + object is bound. + jsonPath: .spec.volumeSnapshotRef.name + name: VolumeSnapshot + type: string + - description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. + jsonPath: .spec.volumeSnapshotRef.namespace + name: VolumeSnapshotNamespace + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1 + schema: + openAPIV3Schema: + description: VolumeSnapshotContent represents the actual "on-disk" snapshot + object in the underlying storage system + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: spec defines properties of a VolumeSnapshotContent created + by the underlying storage system. Required. + properties: + deletionPolicy: + description: deletionPolicy determines whether this VolumeSnapshotContent + and its physical snapshot on the underlying storage system should + be deleted when its bound VolumeSnapshot is deleted. Supported values + are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent + and its physical snapshot on underlying storage system are kept. + "Delete" means that the VolumeSnapshotContent and its physical snapshot + on underlying storage system are deleted. For dynamically provisioned + snapshots, this field will automatically be filled in by the CSI + snapshotter sidecar with the "DeletionPolicy" field defined in the + corresponding VolumeSnapshotClass. For pre-existing snapshots, users + MUST specify this field when creating the VolumeSnapshotContent + object. Required. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the CSI driver used to create the + physical snapshot on the underlying storage system. This MUST be + the same as the name returned by the CSI GetPluginName() call for + that driver. Required. + type: string + source: + description: source specifies whether the snapshot is (or should be) + dynamically provisioned or already exists, and just requires a Kubernetes + object representation. This field is immutable after creation. Required. + properties: + snapshotHandle: + description: snapshotHandle specifies the CSI "snapshot_id" of + a pre-existing snapshot on the underlying storage system for + which a Kubernetes object representation was (or should be) + created. This field is immutable. + type: string + volumeHandle: + description: volumeHandle specifies the CSI "volume_id" of the + volume from which a snapshot should be dynamically taken from. + This field is immutable. + type: string + type: object + oneOf: + - required: ["snapshotHandle"] + - required: ["volumeHandle"] + sourceVolumeMode: + description: SourceVolumeMode is the mode of the volume whose snapshot + is taken. Can be either “Filesystem” or “Block”. If not specified, + it indicates the source volume's mode is unknown. This field is + immutable. This field is an alpha field. + type: string + volumeSnapshotClassName: + description: name of the VolumeSnapshotClass from which this snapshot + was (or will be) created. Note that after provisioning, the VolumeSnapshotClass + may be deleted or recreated with different set of values, and as + such, should not be referenced post-snapshot creation. + type: string + volumeSnapshotRef: + description: volumeSnapshotRef specifies the VolumeSnapshot object + to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName + field must reference to this VolumeSnapshotContent's name for the + bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent + object, name and namespace of the VolumeSnapshot object MUST be + provided for binding to happen. This field is immutable after creation. + Required. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead of + an entire object, this string should contain a valid JSON/Go + field access statement, such as desiredState.manifest.containers[2]. + For example, if the object reference is to a container within + a pod, this would take on a value like: "spec.containers{name}" + (where "name" refers to the name of the container that triggered + the event) or if no container name is specified "spec.containers[2]" + (container with index 2 in this pod). This syntax is chosen + only to have some well-defined way of referencing a part of + an object. TODO: this design is not final and this field is + subject to change in the future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference + is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + required: + - deletionPolicy + - driver + - source + - volumeSnapshotRef + type: object + status: + description: status represents the current information of a snapshot. + properties: + creationTime: + description: creationTime is the timestamp when the point-in-time + snapshot is taken by the underlying storage system. In dynamic snapshot + creation case, this field will be filled in by the CSI snapshotter + sidecar with the "creation_time" value returned from CSI "CreateSnapshot" + gRPC call. For a pre-existing snapshot, this field will be filled + with the "creation_time" value returned from the CSI "ListSnapshots" + gRPC call if the driver supports it. If not specified, it indicates + the creation time is unknown. The format of this field is a Unix + nanoseconds time encoded as an int64. On Unix, the command `date + +%s%N` returns the current time in nanoseconds since 1970-01-01 + 00:00:00 UTC. + format: int64 + type: integer + error: + description: error is the last observed error during snapshot creation, + if any. Upon success after retry, this error field will be cleared. + properties: + message: + description: 'message is a string detailing the encountered error + during snapshot creation if specified. NOTE: message may be + logged, and it should not contain sensitive information.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + description: readyToUse indicates if a snapshot is ready to be used + to restore a volume. In dynamic snapshot creation case, this field + will be filled in by the CSI snapshotter sidecar with the "ready_to_use" + value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing + snapshot, this field will be filled with the "ready_to_use" value + returned from the CSI "ListSnapshots" gRPC call if the driver supports + it, otherwise, this field will be set to "True". If not specified, + it means the readiness of a snapshot is unknown. + type: boolean + restoreSize: + description: restoreSize represents the complete size of the snapshot + in bytes. In dynamic snapshot creation case, this field will be + filled in by the CSI snapshotter sidecar with the "size_bytes" value + returned from CSI "CreateSnapshot" gRPC call. For a pre-existing + snapshot, this field will be filled with the "size_bytes" value + returned from the CSI "ListSnapshots" gRPC call if the driver supports + it. When restoring a volume from this snapshot, the size of the + volume MUST NOT be smaller than the restoreSize if it is specified, + otherwise the restoration will fail. If not specified, it indicates + that the size is unknown. + format: int64 + minimum: 0 + type: integer + snapshotHandle: + description: snapshotHandle is the CSI "snapshot_id" of a snapshot + on the underlying storage system. If not specified, it indicates + that dynamic snapshot creation has either failed or it is still + in progress. + type: string + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} + - additionalPrinterColumns: + - description: Indicates if the snapshot is ready to be used to restore a volume. + jsonPath: .status.readyToUse + name: ReadyToUse + type: boolean + - description: Represents the complete size of the snapshot in bytes + jsonPath: .status.restoreSize + name: RestoreSize + type: integer + - description: Determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. + jsonPath: .spec.deletionPolicy + name: DeletionPolicy + type: string + - description: Name of the CSI driver used to create the physical snapshot on the underlying storage system. + jsonPath: .spec.driver + name: Driver + type: string + - description: Name of the VolumeSnapshotClass to which this snapshot belongs. + jsonPath: .spec.volumeSnapshotClassName + name: VolumeSnapshotClass + type: string + - description: Name of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. + jsonPath: .spec.volumeSnapshotRef.name + name: VolumeSnapshot + type: string + - description: Namespace of the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. + jsonPath: .spec.volumeSnapshotRef.namespace + name: VolumeSnapshotNamespace + type: string + - jsonPath: .metadata.creationTimestamp + name: Age + type: date + name: v1beta1 + # This indicates the v1beta1 version of the custom resource is deprecated. + # API requests to this version receive a warning in the server response. + deprecated: true + # This overrides the default warning returned to clients making v1beta1 API requests. + deprecationWarning: "snapshot.storage.k8s.io/v1beta1 VolumeSnapshotContent is deprecated; use snapshot.storage.k8s.io/v1 VolumeSnapshotContent" + schema: + openAPIV3Schema: + description: VolumeSnapshotContent represents the actual "on-disk" snapshot object in the underlying storage system + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + spec: + description: spec defines properties of a VolumeSnapshotContent created by the underlying storage system. Required. + properties: + deletionPolicy: + description: deletionPolicy determines whether this VolumeSnapshotContent and its physical snapshot on the underlying storage system should be deleted when its bound VolumeSnapshot is deleted. Supported values are "Retain" and "Delete". "Retain" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are kept. "Delete" means that the VolumeSnapshotContent and its physical snapshot on underlying storage system are deleted. For dynamically provisioned snapshots, this field will automatically be filled in by the CSI snapshotter sidecar with the "DeletionPolicy" field defined in the corresponding VolumeSnapshotClass. For pre-existing snapshots, users MUST specify this field when creating the VolumeSnapshotContent object. Required. + enum: + - Delete + - Retain + type: string + driver: + description: driver is the name of the CSI driver used to create the physical snapshot on the underlying storage system. This MUST be the same as the name returned by the CSI GetPluginName() call for that driver. Required. + type: string + source: + description: source specifies whether the snapshot is (or should be) dynamically provisioned or already exists, and just requires a Kubernetes object representation. This field is immutable after creation. Required. + properties: + snapshotHandle: + description: snapshotHandle specifies the CSI "snapshot_id" of a pre-existing snapshot on the underlying storage system for which a Kubernetes object representation was (or should be) created. This field is immutable. + type: string + volumeHandle: + description: volumeHandle specifies the CSI "volume_id" of the volume from which a snapshot should be dynamically taken from. This field is immutable. + type: string + type: object + volumeSnapshotClassName: + description: name of the VolumeSnapshotClass from which this snapshot was (or will be) created. Note that after provisioning, the VolumeSnapshotClass may be deleted or recreated with different set of values, and as such, should not be referenced post-snapshot creation. + type: string + volumeSnapshotRef: + description: volumeSnapshotRef specifies the VolumeSnapshot object to which this VolumeSnapshotContent object is bound. VolumeSnapshot.Spec.VolumeSnapshotContentName field must reference to this VolumeSnapshotContent's name for the bidirectional binding to be valid. For a pre-existing VolumeSnapshotContent object, name and namespace of the VolumeSnapshot object MUST be provided for binding to happen. This field is immutable after creation. Required. + properties: + apiVersion: + description: API version of the referent. + type: string + fieldPath: + description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.' + type: string + kind: + description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' + type: string + namespace: + description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' + type: string + resourceVersion: + description: 'Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' + type: string + uid: + description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' + type: string + type: object + required: + - deletionPolicy + - driver + - source + - volumeSnapshotRef + type: object + status: + description: status represents the current information of a snapshot. + properties: + creationTime: + description: creationTime is the timestamp when the point-in-time snapshot is taken by the underlying storage system. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "creation_time" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "creation_time" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. If not specified, it indicates the creation time is unknown. The format of this field is a Unix nanoseconds time encoded as an int64. On Unix, the command `date +%s%N` returns the current time in nanoseconds since 1970-01-01 00:00:00 UTC. + format: int64 + type: integer + error: + description: error is the last observed error during snapshot creation, if any. Upon success after retry, this error field will be cleared. + properties: + message: + description: 'message is a string detailing the encountered error during snapshot creation if specified. NOTE: message may be logged, and it should not contain sensitive information.' + type: string + time: + description: time is the timestamp when the error was encountered. + format: date-time + type: string + type: object + readyToUse: + description: readyToUse indicates if a snapshot is ready to be used to restore a volume. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "ready_to_use" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "ready_to_use" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it, otherwise, this field will be set to "True". If not specified, it means the readiness of a snapshot is unknown. + type: boolean + restoreSize: + description: restoreSize represents the complete size of the snapshot in bytes. In dynamic snapshot creation case, this field will be filled in by the CSI snapshotter sidecar with the "size_bytes" value returned from CSI "CreateSnapshot" gRPC call. For a pre-existing snapshot, this field will be filled with the "size_bytes" value returned from the CSI "ListSnapshots" gRPC call if the driver supports it. When restoring a volume from this snapshot, the size of the volume MUST NOT be smaller than the restoreSize if it is specified, otherwise the restoration will fail. If not specified, it indicates that the size is unknown. + format: int64 + minimum: 0 + type: integer + snapshotHandle: + description: snapshotHandle is the CSI "snapshot_id" of a snapshot on the underlying storage system. If not specified, it indicates that dynamic snapshot creation has either failed or it is still in progress. + type: string + type: object + required: + - spec + type: object + served: false + storage: false + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: [] + storedVersions: [] diff --git a/deploy/v1.30.6/csi-azurefile-controller.yaml b/deploy/v1.30.6/csi-azurefile-controller.yaml new file mode 100644 index 0000000000..1c9ccb140f --- /dev/null +++ b/deploy/v1.30.6/csi-azurefile-controller.yaml @@ -0,0 +1,185 @@ +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: csi-azurefile-controller + namespace: kube-system +spec: + replicas: 2 + selector: + matchLabels: + app: csi-azurefile-controller + template: + metadata: + labels: + app: csi-azurefile-controller + spec: + hostNetwork: true # only required for MSI enabled cluster + serviceAccountName: csi-azurefile-controller-sa + nodeSelector: + kubernetes.io/os: linux # add "kubernetes.io/role: master" to run controller on master node + priorityClassName: system-cluster-critical + 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:v5.1.0 + args: + - "-v=2" + - "--csi-address=$(ADDRESS)" + - "--leader-election" + - "--leader-election-namespace=kube-system" + - "--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 + volumeMounts: + - mountPath: /csi + name: socket-dir + resources: + limits: + memory: 500Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + capabilities: + drop: + - ALL + - name: csi-snapshotter + image: mcr.microsoft.com/oss/kubernetes-csi/csi-snapshotter:v8.1.0 + args: + - "-v=2" + - "-csi-address=$(ADDRESS)" + - "--leader-election" + - "--leader-election-namespace=kube-system" + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + capabilities: + drop: + - ALL + - name: csi-resizer + image: mcr.microsoft.com/oss/kubernetes-csi/csi-resizer:v1.12.0 + args: + - "-csi-address=$(ADDRESS)" + - "-v=2" + - "--leader-election" + - "--leader-election-namespace=kube-system" + - '-handle-volume-inuse-error=false' + - '-feature-gates=RecoverVolumeExpansionFailure=true' + - '-timeout=120s' + env: + - name: ADDRESS + value: /csi/csi.sock + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: + limits: + memory: 500Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + capabilities: + drop: + - ALL + - name: liveness-probe + image: mcr.microsoft.com/oss/kubernetes-csi/livenessprobe:v2.14.0 + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --http-endpoint=localhost:29612 + - --v=2 + volumeMounts: + - name: socket-dir + mountPath: /csi + resources: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + capabilities: + drop: + - ALL + - name: azurefile + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6 + imagePullPolicy: IfNotPresent + args: + - "--v=5" + - "--endpoint=$(CSI_ENDPOINT)" + - "--metrics-address=0.0.0.0:29614" + - "--user-agent-suffix=OSS-kubectl" + ports: + - containerPort: 29614 + name: metrics + protocol: TCP + livenessProbe: + failureThreshold: 5 + httpGet: + host: localhost + path: /healthz + port: 29612 + 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: /root/.azcopy + name: azcopy-dir + - mountPath: /etc/kubernetes/ + name: azure-cred + resources: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + capabilities: + drop: + - ALL + volumes: + - name: socket-dir + emptyDir: {} + - name: azcopy-dir + emptyDir: {} + - name: azure-cred + hostPath: + path: /etc/kubernetes/ + type: DirectoryOrCreate diff --git a/deploy/v1.30.6/csi-azurefile-driver.yaml b/deploy/v1.30.6/csi-azurefile-driver.yaml new file mode 100644 index 0000000000..42a29fedb2 --- /dev/null +++ b/deploy/v1.30.6/csi-azurefile-driver.yaml @@ -0,0 +1,15 @@ +--- +apiVersion: storage.k8s.io/v1 +kind: CSIDriver +metadata: + name: file.csi.azure.com + annotations: + csiDriver: v1.30.0 + snapshot: v6.2.2 +spec: + attachRequired: false + podInfoOnMount: true + volumeLifecycleModes: + - Persistent + - Ephemeral + fsGroupPolicy: ReadWriteOnceWithFSType diff --git a/deploy/v1.30.6/csi-azurefile-node-windows-hostprocess.yaml b/deploy/v1.30.6/csi-azurefile-node-windows-hostprocess.yaml new file mode 100644 index 0000000000..0dcc13bc11 --- /dev/null +++ b/deploy/v1.30.6/csi-azurefile-node-windows-hostprocess.yaml @@ -0,0 +1,122 @@ +--- +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-azurefile-node-win + namespace: kube-system +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate + selector: + matchLabels: + app: csi-azurefile-node-win + template: + metadata: + labels: + app: csi-azurefile-node-win + spec: + serviceAccountName: csi-azurefile-node-sa + tolerations: + - key: "node.kubernetes.io/os" + operator: "Exists" + effect: "NoSchedule" + nodeSelector: + kubernetes.io/os: windows + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: type + operator: NotIn + values: + - virtual-kubelet + priorityClassName: system-node-critical + securityContext: + seccompProfile: + type: RuntimeDefault + windowsOptions: + hostProcess: true + runAsUserName: "NT AUTHORITY\\SYSTEM" + hostNetwork: true + initContainers: + - name: init + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6-windows-hp + imagePullPolicy: IfNotPresent + command: + - "powershell.exe" + - "-c" + - "New-Item -ItemType Directory -Path C:\\var\\lib\\kubelet\\plugins\\file.csi.azure.com\\ -Force" + securityContext: + capabilities: + drop: + - ALL + containers: + - name: node-driver-registrar + image: mcr.microsoft.com/oss/kubernetes-csi/csi-node-driver-registrar:v2.12.0 + imagePullPolicy: IfNotPresent + command: + - "csi-node-driver-registrar.exe" + args: + - "--v=2" + - "--csi-address=$(CSI_ENDPOINT)" + - "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)" + - "--plugin-registration-path=$(PLUGIN_REG_DIR)" + env: + - name: CSI_ENDPOINT + value: unix://C:\\var\\lib\\kubelet\\plugins\\file.csi.azure.com\\csi.sock + - name: DRIVER_REG_SOCK_PATH + value: C:\\var\\lib\\kubelet\\plugins\\file.csi.azure.com\\csi.sock + - name: PLUGIN_REG_DIR + value: C:\\var\\lib\\kubelet\\plugins_registry\\ + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + resources: + limits: + memory: 150Mi + requests: + cpu: 30m + memory: 40Mi + securityContext: + capabilities: + drop: + - ALL + - name: azurefile + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6-windows-hp + imagePullPolicy: IfNotPresent + command: + - "azurefileplugin.exe" + args: + - --v=5 + - --endpoint=$(CSI_ENDPOINT) + - --nodeid=$(KUBE_NODE_NAME) + - --enable-windows-host-process=true + - --metrics-address="0.0.0.0:29615" + env: + - name: AZURE_CREDENTIAL_FILE + valueFrom: + configMapKeyRef: + name: azure-cred-file + key: path-windows + optional: true + - name: CSI_ENDPOINT + value: unix://C:\\var\\lib\\kubelet\\plugins\\file.csi.azure.com\\csi.sock + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + resources: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 40Mi + securityContext: + capabilities: + drop: + - ALL diff --git a/deploy/v1.30.6/csi-azurefile-node-windows.yaml b/deploy/v1.30.6/csi-azurefile-node-windows.yaml new file mode 100644 index 0000000000..78d841c4ec --- /dev/null +++ b/deploy/v1.30.6/csi-azurefile-node-windows.yaml @@ -0,0 +1,195 @@ +--- +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-azurefile-node-win + namespace: kube-system +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate + selector: + matchLabels: + app: csi-azurefile-node-win + template: + metadata: + labels: + app: csi-azurefile-node-win + spec: + serviceAccountName: csi-azurefile-node-sa + tolerations: + - key: "node.kubernetes.io/os" + operator: "Exists" + effect: "NoSchedule" + nodeSelector: + kubernetes.io/os: windows + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: type + operator: NotIn + values: + - virtual-kubelet + priorityClassName: system-node-critical + securityContext: + seccompProfile: + type: RuntimeDefault + containers: + - name: liveness-probe + volumeMounts: + - mountPath: C:\csi + name: plugin-dir + image: mcr.microsoft.com/oss/kubernetes-csi/livenessprobe:v2.14.0 + args: + - --csi-address=$(CSI_ENDPOINT) + - --probe-timeout=3s + - --health-port=29613 + - --v=2 + env: + - name: CSI_ENDPOINT + value: unix://C:\\csi\\csi.sock + resources: + limits: + memory: 150Mi + requests: + cpu: 10m + memory: 40Mi + securityContext: + capabilities: + drop: + - ALL + - name: node-driver-registrar + image: mcr.microsoft.com/oss/kubernetes-csi/csi-node-driver-registrar:v2.12.0 + args: + - --v=2 + - --csi-address=$(CSI_ENDPOINT) + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + livenessProbe: + exec: + command: + - /csi-node-driver-registrar.exe + - --kubelet-registration-path=$(DRIVER_REG_SOCK_PATH) + - --mode=kubelet-registration-probe + initialDelaySeconds: 60 + timeoutSeconds: 30 + env: + - name: CSI_ENDPOINT + value: unix://C:\\csi\\csi.sock + - name: DRIVER_REG_SOCK_PATH + value: C:\\var\\lib\\kubelet\\plugins\\file.csi.azure.com\\csi.sock + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + fieldPath: spec.nodeName + volumeMounts: + - name: kubelet-dir + mountPath: "C:\\var\\lib\\kubelet" + - name: plugin-dir + mountPath: C:\csi + - name: registration-dir + mountPath: C:\registration + resources: + limits: + memory: 150Mi + requests: + cpu: 30m + memory: 40Mi + securityContext: + capabilities: + drop: + - ALL + - name: azurefile + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6 + imagePullPolicy: IfNotPresent + args: + - --v=5 + - --endpoint=$(CSI_ENDPOINT) + - --nodeid=$(KUBE_NODE_NAME) + - --metrics-address="0.0.0.0:29615" + ports: + - containerPort: 29613 + 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-windows + optional: true + - name: CSI_ENDPOINT + value: unix://C:\\csi\\csi.sock + - name: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + volumeMounts: + - name: kubelet-dir + mountPath: "C:\\var\\lib\\kubelet" + - name: plugin-dir + mountPath: C:\csi + - name: azure-config + mountPath: C:\k + - name: csi-proxy-fs-pipe-v1 + mountPath: \\.\pipe\csi-proxy-filesystem-v1 + - name: csi-proxy-smb-pipe-v1 + mountPath: \\.\pipe\csi-proxy-smb-v1 + # these paths are still included for compatibility, they're used + # only if the node has still the beta version of the CSI proxy + - name: csi-proxy-fs-pipe-v1beta1 + mountPath: \\.\pipe\csi-proxy-filesystem-v1beta1 + - name: csi-proxy-smb-pipe-v1beta1 + mountPath: \\.\pipe\csi-proxy-smb-v1beta1 + resources: + limits: + memory: 200Mi + requests: + cpu: 10m + memory: 40Mi + securityContext: + capabilities: + drop: + - ALL + volumes: + - name: csi-proxy-fs-pipe-v1 + hostPath: + path: \\.\pipe\csi-proxy-filesystem-v1 + - name: csi-proxy-smb-pipe-v1 + hostPath: + path: \\.\pipe\csi-proxy-smb-v1 + # these paths are still included for compatibility, they're used + # only if the node has still the beta version of the CSI proxy + - name: csi-proxy-fs-pipe-v1beta1 + hostPath: + path: \\.\pipe\csi-proxy-filesystem-v1beta1 + - name: csi-proxy-smb-pipe-v1beta1 + hostPath: + path: \\.\pipe\csi-proxy-smb-v1beta1 + - name: registration-dir + hostPath: + path: C:\var\lib\kubelet\plugins_registry\ + type: Directory + - name: kubelet-dir + hostPath: + path: C:\var\lib\kubelet\ + type: Directory + - name: plugin-dir + hostPath: + path: C:\var\lib\kubelet\plugins\file.csi.azure.com\ + type: DirectoryOrCreate + - name: azure-config + hostPath: + path: C:\k + type: DirectoryOrCreate diff --git a/deploy/v1.30.6/csi-azurefile-node.yaml b/deploy/v1.30.6/csi-azurefile-node.yaml new file mode 100644 index 0000000000..bcd516ba93 --- /dev/null +++ b/deploy/v1.30.6/csi-azurefile-node.yaml @@ -0,0 +1,168 @@ +--- +kind: DaemonSet +apiVersion: apps/v1 +metadata: + name: csi-azurefile-node + namespace: kube-system +spec: + updateStrategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate + selector: + matchLabels: + app: csi-azurefile-node + template: + metadata: + labels: + app: csi-azurefile-node + spec: + hostNetwork: true + dnsPolicy: Default + serviceAccountName: csi-azurefile-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" + containers: + - name: liveness-probe + volumeMounts: + - mountPath: /csi + name: socket-dir + image: mcr.microsoft.com/oss/kubernetes-csi/livenessprobe:v2.14.0 + args: + - --csi-address=/csi/csi.sock + - --probe-timeout=3s + - --health-port=29613 + - --v=2 + resources: + limits: + memory: 100Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + capabilities: + drop: + - ALL + - name: node-driver-registrar + image: mcr.microsoft.com/oss/kubernetes-csi/csi-node-driver-registrar:v2.12.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/file.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 + securityContext: + capabilities: + drop: + - ALL + - name: azurefile + image: mcr.microsoft.com/oss/kubernetes-csi/azurefile-csi:v1.30.6 + imagePullPolicy: IfNotPresent + args: + - "--v=5" + - "--endpoint=$(CSI_ENDPOINT)" + - "--nodeid=$(KUBE_NODE_NAME)" + - "--metrics-address=0.0.0.0:29615" + livenessProbe: + failureThreshold: 5 + httpGet: + host: localhost + path: /healthz + port: 29613 + 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: KUBE_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + securityContext: + privileged: true + capabilities: + drop: + - ALL + volumeMounts: + - mountPath: /csi + name: socket-dir + - mountPath: /var/lib/kubelet/ + mountPropagation: Bidirectional + name: mountpoint-dir + - mountPath: /etc/kubernetes/ + name: azure-cred + - mountPath: /dev + name: device-dir + resources: + limits: + memory: 400Mi + requests: + cpu: 10m + memory: 20Mi + volumes: + - hostPath: + path: /var/lib/kubelet/plugins/file.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: /dev + type: Directory + name: device-dir +--- diff --git a/deploy/v1.30.6/csi-snapshot-controller.yaml b/deploy/v1.30.6/csi-snapshot-controller.yaml new file mode 100644 index 0000000000..ecd1649c13 --- /dev/null +++ b/deploy/v1.30.6/csi-snapshot-controller.yaml @@ -0,0 +1,59 @@ +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: csi-snapshot-controller + namespace: kube-system +spec: + replicas: 2 + selector: + matchLabels: + app: csi-snapshot-controller + # the snapshot controller won't be marked as ready if the v1 CRDs are unavailable + # in #504 the snapshot-controller will exit after around 7.5 seconds if it + # can't find the v1 CRDs so this value should be greater than that + minReadySeconds: 15 + strategy: + rollingUpdate: + maxSurge: 0 + maxUnavailable: 1 + type: RollingUpdate + template: + metadata: + labels: + app: csi-snapshot-controller + spec: + serviceAccountName: csi-snapshot-controller-sa + nodeSelector: + kubernetes.io/os: linux + priorityClassName: system-cluster-critical + tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Equal" + value: "true" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/controlplane" + operator: "Equal" + value: "true" + effect: "NoSchedule" + - key: "node-role.kubernetes.io/control-plane" + operator: "Equal" + value: "true" + effect: "NoSchedule" + containers: + - name: csi-snapshot-controller + image: mcr.microsoft.com/oss/kubernetes-csi/snapshot-controller:v8.1.0 + args: + - "--v=2" + - "--leader-election=true" + - "--leader-election-namespace=kube-system" + resources: + limits: + memory: 300Mi + requests: + cpu: 10m + memory: 20Mi + securityContext: + capabilities: + drop: + - ALL diff --git a/deploy/v1.30.6/rbac-csi-azurefile-controller.yaml b/deploy/v1.30.6/rbac-csi-azurefile-controller.yaml new file mode 100644 index 0000000000..59a0f8c2af --- /dev/null +++ b/deploy/v1.30.6/rbac-csi-azurefile-controller.yaml @@ -0,0 +1,194 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-azurefile-controller-sa + namespace: kube-system + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: azurefile-external-provisioner-role +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "create", "patch", "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: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] + verbs: ["get", "list"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["get", "list"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create", "patch"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: azurefile-csi-provisioner-binding +subjects: + - kind: ServiceAccount + name: csi-azurefile-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: azurefile-external-provisioner-role + apiGroup: rbac.authorization.k8s.io + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: azurefile-external-attacher-role +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["get", "list", "watch"] + - apiGroups: ["csi.storage.k8s.io"] + resources: ["csinodeinfos"] + verbs: ["get", "list", "watch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["storage.k8s.io"] + resources: ["volumeattachments/status"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create", "patch"] +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: azurefile-csi-attacher-binding +subjects: + - kind: ServiceAccount + name: csi-azurefile-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: azurefile-external-attacher-role + apiGroup: rbac.authorization.k8s.io + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: azurefile-external-snapshotter-role +rules: + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents/status"] + verbs: ["update", "patch"] + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create", "patch"] + +--- + +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: azurefile-csi-snapshotter-binding +subjects: + - kind: ServiceAccount + name: csi-azurefile-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: azurefile-external-snapshotter-role + apiGroup: rbac.authorization.k8s.io + +--- + +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: azurefile-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"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: azurefile-csi-resizer-role +subjects: + - kind: ServiceAccount + name: csi-azurefile-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: azurefile-external-resizer-role + apiGroup: rbac.authorization.k8s.io + +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-azurefile-controller-secret-role +rules: + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get", "create"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-azurefile-controller-secret-binding +subjects: + - kind: ServiceAccount + name: csi-azurefile-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: csi-azurefile-controller-secret-role + apiGroup: rbac.authorization.k8s.io diff --git a/deploy/v1.30.6/rbac-csi-azurefile-node.yaml b/deploy/v1.30.6/rbac-csi-azurefile-node.yaml new file mode 100644 index 0000000000..3752f36aa4 --- /dev/null +++ b/deploy/v1.30.6/rbac-csi-azurefile-node.yaml @@ -0,0 +1,30 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-azurefile-node-sa + namespace: kube-system + +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-azurefile-node-secret-role +rules: + - apiGroups: [""] + resources: ["secrets"] + verbs: ["get"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-azurefile-node-secret-binding +subjects: + - kind: ServiceAccount + name: csi-azurefile-node-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: csi-azurefile-node-secret-role + apiGroup: rbac.authorization.k8s.io diff --git a/deploy/v1.30.6/rbac-csi-snapshot-controller.yaml b/deploy/v1.30.6/rbac-csi-snapshot-controller.yaml new file mode 100644 index 0000000000..03af765424 --- /dev/null +++ b/deploy/v1.30.6/rbac-csi-snapshot-controller.yaml @@ -0,0 +1,78 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: csi-snapshot-controller-sa + namespace: kube-system + +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-snapshot-controller-role +rules: + - apiGroups: [""] + resources: ["persistentvolumes"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["persistentvolumeclaims"] + verbs: ["get", "list", "watch", "update"] + - apiGroups: ["storage.k8s.io"] + resources: ["storageclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: [""] + resources: ["events"] + verbs: ["list", "watch", "create", "update", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotclasses"] + verbs: ["get", "list", "watch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents"] + verbs: ["create", "get", "list", "watch", "update", "delete", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshotcontents/status"] + verbs: ["patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots"] + verbs: ["get", "list", "watch", "update", "patch"] + - apiGroups: ["snapshot.storage.k8s.io"] + resources: ["volumesnapshots/status"] + verbs: ["update", "patch"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-snapshot-controller-binding +subjects: + - kind: ServiceAccount + name: csi-snapshot-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: csi-snapshot-controller-role + apiGroup: rbac.authorization.k8s.io + +--- +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-snapshot-controller-leaderelection-role +rules: + - apiGroups: ["coordination.k8s.io"] + resources: ["leases"] + verbs: ["get", "watch", "list", "delete", "update", "create", "patch"] + +--- +kind: ClusterRoleBinding +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: csi-snapshot-controller-leaderelection-binding +subjects: + - kind: ServiceAccount + name: csi-snapshot-controller-sa + namespace: kube-system +roleRef: + kind: ClusterRole + name: csi-snapshot-controller-leaderelection-role + apiGroup: rbac.authorization.k8s.io diff --git a/docs/install-csi-driver-v1.30.6.md b/docs/install-csi-driver-v1.30.6.md new file mode 100644 index 0000000000..4fd474f6da --- /dev/null +++ b/docs/install-csi-driver-v1.30.6.md @@ -0,0 +1,45 @@ +## Install azurefile CSI driver v1.30.6 version on a Kubernetes cluster +If you have already installed Helm, you can also use it to install this driver. Please check [Installation with Helm](../charts/README.md). + +### Install by kubectl + - Option#1. remote install +```console +curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/v1.30.6/deploy/install-driver.sh | bash -s v1.30.6 -- +``` + + - Option#2. local install +```console +git clone https://github.com/kubernetes-sigs/azurefile-csi-driver.git +cd azurefile-csi-driver +git checkout v1.30.6 +./deploy/install-driver.sh v1.30.6 local +``` + + - check pods status: +```console +kubectl -n kube-system get pod -o wide --watch -l app=csi-azurefile-controller +kubectl -n kube-system get pod -o wide --watch -l app=csi-azurefile-node +``` + +example output: + +``` +NAME READY STATUS RESTARTS AGE IP NODE +csi-azurefile-controller-56bfddd689-dh5tk 6/6 Running 0 35s 10.240.0.19 k8s-agentpool-22533604-0 +csi-azurefile-node-cvgbs 3/3 Running 0 7m4s 10.240.0.35 k8s-agentpool-22533604-1 +csi-azurefile-node-dr4s4 3/3 Running 0 7m4s 10.240.0.4 k8s-agentpool-22533604-0 +``` + +### clean up CSI driver + - Option#1. remote uninstall +```console +curl -skSL https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/v1.30.6/deploy/uninstall-driver.sh | bash -s -- +``` + + - Option#2. local uninstall +```console +git clone https://github.com/kubernetes-sigs/azurefile-csi-driver.git +cd azurefile-csi-driver +git checkout v1.30.6 +./deploy/install-driver.sh v1.30.6 local +```