@@ -46,6 +46,8 @@ default_kubelet_data_dir=/var/lib/kubelet
4646# - CSI_PROVISIONER_TAG
4747# - CSI_SNAPSHOTTER_REGISTRY
4848# - CSI_SNAPSHOTTER_TAG
49+ # - CSI_SNAPSHOT_METADATA_REGISTRY
50+ # - CSI_SNAPSHOT_METADATA_TAG
4951# - HOSTPATHPLUGIN_REGISTRY
5052# - HOSTPATHPLUGIN_TAG
5153#
@@ -142,25 +144,37 @@ function volume_mode_conversion () {
142144 [ " ${VOLUME_MODE_CONVERSION_TESTS} " == " true" ]
143145}
144146
147+ function snapshot_metadata () {
148+ [ " ${SNAPSHOT_METADATA_TESTS} " == " true" ]
149+ }
150+
145151# In addition, the RBAC rules can be overridden separately.
146152# For snapshotter 2.0+, the directory has changed.
147153SNAPSHOTTER_RBAC_RELATIVE_PATH=" rbac.yaml"
148154if version_gt $( rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-snapshotter.yaml" csi-snapshotter " ${UPDATE_RBAC_RULES} " ) " v1.255.255" ; then
149155 SNAPSHOTTER_RBAC_RELATIVE_PATH=" csi-snapshotter/rbac-csi-snapshotter.yaml"
150156fi
157+ SNAPSHOT_METADATA_RBAC_RELATIVE_PATH=" snapshot-metadata-cluster-role.yaml"
158+ SNAPSHOT_METADATA_SIDECAR_PATCH_RELATIVE_PATH=" ${BASE_DIR} /hostpath/csi-snapshot-metadata-sidecar.patch"
151159
152160CSI_PROVISIONER_RBAC_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-provisioner/$( rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-provisioner.yaml" csi-provisioner false) /deploy/kubernetes/rbac.yaml"
153161: ${CSI_PROVISIONER_RBAC:= https:// raw.githubusercontent.com/ kubernetes-csi/ external-provisioner/ $(rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-provisioner.yaml" csi-provisioner " ${UPDATE_RBAC_RULES} " )/ deploy/ kubernetes/ rbac.yaml}
154162CSI_ATTACHER_RBAC_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-attacher/$( rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-attacher.yaml" csi-attacher false) /deploy/kubernetes/rbac.yaml"
155163: ${CSI_ATTACHER_RBAC:= https:// raw.githubusercontent.com/ kubernetes-csi/ external-attacher/ $(rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-attacher.yaml" csi-attacher " ${UPDATE_RBAC_RULES} " )/ deploy/ kubernetes/ rbac.yaml}
156164CSI_SNAPSHOTTER_RBAC_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$( rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-snapshotter.yaml" csi-snapshotter false) /deploy/kubernetes/${SNAPSHOTTER_RBAC_RELATIVE_PATH} "
157165: ${CSI_SNAPSHOTTER_RBAC:= https:// raw.githubusercontent.com/ kubernetes-csi/ external-snapshotter/ $(rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-snapshotter.yaml" csi-snapshotter " ${UPDATE_RBAC_RULES} " )/ deploy/ kubernetes/ ${SNAPSHOTTER_RBAC_RELATIVE_PATH} }
166+ CSI_SNAPSHOT_METADATA_RBAC_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-snapshot-metadata/$( rbac_version " ${BASE_DIR} /hostpath/csi-snapshot-metadata-sidecar.patch" csi-snapshot-metadata false) /deploy/${SNAPSHOT_METADATA_RBAC_RELATIVE_PATH} "
167+ : ${CSI_SNAPSHOT_METADATA_RBAC:= https:// raw.githubusercontent.com/ kubernetes-csi/ external-snapshot-metadata/ $(rbac_version " ${BASE_DIR} /hostpath/csi-snapshot-metadata-sidecar.patch" csi-snapshot-metadata " ${UPDATE_RBAC_RULES} " )/ deploy/ ${SNAPSHOT_METADATA_RBAC_RELATIVE_PATH} }
158168CSI_RESIZER_RBAC_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-resizer/$( rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-resizer.yaml" csi-resizer false) /deploy/kubernetes/rbac.yaml"
159169: ${CSI_RESIZER_RBAC:= https:// raw.githubusercontent.com/ kubernetes-csi/ external-resizer/ $(rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-resizer.yaml" csi-resizer " ${UPDATE_RBAC_RULES} " )/ deploy/ kubernetes/ rbac.yaml}
160170
161171CSI_EXTERNALHEALTH_MONITOR_RBAC_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-health-monitor/$( rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-plugin.yaml" csi-external-health-monitor-controller false) /deploy/kubernetes/external-health-monitor-controller/rbac.yaml"
162172: ${CSI_EXTERNALHEALTH_MONITOR_RBAC:= https:// raw.githubusercontent.com/ kubernetes-csi/ external-health-monitor/ $(rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-plugin.yaml" csi-external-health-monitor-controller " ${UPDATE_RBAC_RULES} " )/ deploy/ kubernetes/ external-health-monitor-controller/ rbac.yaml}
163173
174+ CSI_SNAPSHOT_METADATA_TLS_CERT_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-snapshot-metadata/$( rbac_version " ${BASE_DIR} /hostpath/csi-snapshot-metadata-sidecar.patch" csi-snapshot-metadata false) /deploy/example/csi-driver/testdata/csi-snapshot-metadata-tls-secret.yaml"
175+ SNAPSHOT_METADATA_SERVICE_CR_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-snapshot-metadata/$( rbac_version " ${BASE_DIR} /hostpath/csi-snapshot-metadata-sidecar.patch" csi-snapshot-metadata false) /deploy/example/csi-driver/testdata/snapshotmetadataservice.yaml"
176+ CSI_SNAPSHOT_METADATA_SERVICE_YAML=" https://raw.githubusercontent.com/kubernetes-csi/external-snapshot-metadata/$( rbac_version " ${BASE_DIR} /hostpath/csi-snapshot-metadata-sidecar.patch" csi-snapshot-metadata false) /deploy/example/csi-driver/testdata/csi-snapshot-metadata-service.yaml"
177+
164178INSTALL_CRD=${INSTALL_CRD:- " false" }
165179
166180# Some images are not affected by *_REGISTRY/*_TAG and IMAGE_* variables.
@@ -176,7 +190,11 @@ run () {
176190
177191# rbac rules
178192echo " applying RBAC rules"
179- for component in CSI_PROVISIONER CSI_ATTACHER CSI_SNAPSHOTTER CSI_RESIZER CSI_EXTERNALHEALTH_MONITOR; do
193+ components=(CSI_PROVISIONER CSI_ATTACHER CSI_SNAPSHOTTER CSI_RESIZER CSI_EXTERNALHEALTH_MONITOR)
194+ if snapshot_metadata; then
195+ components+=(CSI_SNAPSHOT_METADATA)
196+ fi
197+ for component in " ${components[@]} " ; do
180198 eval current=" \$ {${component} _RBAC}"
181199 eval original=" \$ {${component} _RBAC_YAML}"
182200 if [ " $current " != " $original " ]; then
@@ -210,13 +228,42 @@ EOF
210228 run kubectl apply --kustomize " ${TEMP_DIR} "
211229done
212230
231+ # deploy snapshot-metadata service components
232+ if snapshot_metadata; then
233+ echo " applying snapshot metadata components"
234+ for component in ${CSI_SNAPSHOT_METADATA_TLS_CERT_YAML} ${SNAPSHOT_METADATA_SERVICE_CR_YAML} ${CSI_SNAPSHOT_METADATA_SERVICE_YAML} ; do
235+ run curl " ${component} " --output " ${TEMP_DIR} " /snap-metadata-comp.yaml --silent --location
236+ cat << - EOF > "${TEMP_DIR} "/kustomization.yaml
237+ apiVersion: kustomize.config.k8s.io/v1beta1
238+ kind: Kustomization
239+
240+ commonLabels:
241+ app.kubernetes.io/instance: hostpath.csi.k8s.io
242+ app.kubernetes.io/part-of: csi-driver-host-path
243+
244+ resources:
245+ - ./snap-metadata-comp.yaml
246+ EOF
247+
248+ run kubectl apply --kustomize " ${TEMP_DIR} "
249+ done
250+ fi
251+
213252# deploy hostpath plugin and registrar sidecar
214253echo " deploying hostpath components"
215254for i in $( ls ${BASE_DIR} /hostpath/* .yaml | sort) ; do
216255 echo " $i "
217256 if volume_mode_conversion; then
218257 sed -i -e ' s/# end csi-provisioner args/- \"--prevent-volume-mode-conversion=true\"\n # end csi-provisioner args/' $i
219258 fi
259+
260+ # Add external-snapshot-metadata sidecar to the driver, mount TLS certs,
261+ # and enable snapshot-metadata service
262+ if snapshot_metadata; then
263+ sed -i -e " /# end csi containers/r ${SNAPSHOT_METADATA_SIDECAR_PATCH_RELATIVE_PATH} " $i
264+ sed -i -e ' s/# end csi volumes/- name: csi-snapshot-metadata-server-certs\n secret:\n secretName: csi-snapshot-metadata-certs\n # end csi volumes/' $i
265+ sed -i -e ' s/# end hostpath args/- \"--enable-snapshot-metadata\"\n # end hostpath args/' $i
266+ fi
220267 modified=" $( cat " $i " | sed -e " s;${default_kubelet_data_dir} /;${KUBELET_DATA_DIR} /;" | while IFS= read -r line; do
221268 nocomments=" $( echo " $line " | sed -e ' s/ *#.*$//' ) "
222269 if echo " $nocomments " | grep -q ' ^[[:space:]]*image:[[:space:]]*' ; then
0 commit comments