@@ -46,6 +46,8 @@ default_kubelet_data_dir=/var/lib/kubelet
46
46
# - CSI_PROVISIONER_TAG
47
47
# - CSI_SNAPSHOTTER_REGISTRY
48
48
# - CSI_SNAPSHOTTER_TAG
49
+ # - CSI_SNAPSHOT_METADATA_REGISTRY
50
+ # - CSI_SNAPSHOT_METADATA_TAG
49
51
# - HOSTPATHPLUGIN_REGISTRY
50
52
# - HOSTPATHPLUGIN_TAG
51
53
#
@@ -142,25 +144,37 @@ function volume_mode_conversion () {
142
144
[ " ${VOLUME_MODE_CONVERSION_TESTS} " == " true" ]
143
145
}
144
146
147
+ function snapshot_metadata () {
148
+ [ " ${SNAPSHOT_METADATA_TESTS} " == " true" ]
149
+ }
150
+
145
151
# In addition, the RBAC rules can be overridden separately.
146
152
# For snapshotter 2.0+, the directory has changed.
147
153
SNAPSHOTTER_RBAC_RELATIVE_PATH=" rbac.yaml"
148
154
if version_gt $( rbac_version " ${BASE_DIR} /hostpath/csi-hostpath-snapshotter.yaml" csi-snapshotter " ${UPDATE_RBAC_RULES} " ) " v1.255.255" ; then
149
155
SNAPSHOTTER_RBAC_RELATIVE_PATH=" csi-snapshotter/rbac-csi-snapshotter.yaml"
150
156
fi
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"
151
159
152
160
CSI_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"
153
161
: ${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}
154
162
CSI_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"
155
163
: ${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}
156
164
CSI_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} "
157
165
: ${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} }
158
168
CSI_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"
159
169
: ${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}
160
170
161
171
CSI_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"
162
172
: ${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}
163
173
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
+
164
178
INSTALL_CRD=${INSTALL_CRD:- " false" }
165
179
166
180
# Some images are not affected by *_REGISTRY/*_TAG and IMAGE_* variables.
@@ -176,7 +190,11 @@ run () {
176
190
177
191
# rbac rules
178
192
echo " 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
180
198
eval current=" \$ {${component} _RBAC}"
181
199
eval original=" \$ {${component} _RBAC_YAML}"
182
200
if [ " $current " != " $original " ]; then
@@ -210,13 +228,42 @@ EOF
210
228
run kubectl apply --kustomize " ${TEMP_DIR} "
211
229
done
212
230
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
+
213
252
# deploy hostpath plugin and registrar sidecar
214
253
echo " deploying hostpath components"
215
254
for i in $( ls ${BASE_DIR} /hostpath/* .yaml | sort) ; do
216
255
echo " $i "
217
256
if volume_mode_conversion; then
218
257
sed -i -e ' s/# end csi-provisioner args/- \"--prevent-volume-mode-conversion=true\"\n # end csi-provisioner args/' $i
219
258
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
220
267
modified=" $( cat " $i " | sed -e " s;${default_kubelet_data_dir} /;${KUBELET_DATA_DIR} /;" | while IFS= read -r line; do
221
268
nocomments=" $( echo " $line " | sed -e ' s/ *#.*$//' ) "
222
269
if echo " $nocomments " | grep -q ' ^[[:space:]]*image:[[:space:]]*' ; then
0 commit comments