Skip to content

Commit c6e6e9a

Browse files
authored
Merge pull request #575 from PrasadG193/update-deploy-script
Add documentation to deploy and test SnapshotMetadata support
2 parents 0bfbc4b + 8110ea0 commit c6e6e9a

File tree

4 files changed

+335
-1
lines changed

4 files changed

+335
-1
lines changed

deploy/kubernetes-1.27/hostpath/csi-hostpath-plugin.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,24 @@ subjects:
102102
namespace: default
103103
---
104104
apiVersion: rbac.authorization.k8s.io/v1
105+
kind: ClusterRoleBinding
106+
metadata:
107+
labels:
108+
app.kubernetes.io/instance: hostpath.csi.k8s.io
109+
app.kubernetes.io/part-of: csi-driver-host-path
110+
app.kubernetes.io/name: csi-hostpathplugin
111+
app.kubernetes.io/component: snapshot-metadata-cluster-role
112+
name: csi-hostpathplugin-snapshot-metadata-cluster-role
113+
roleRef:
114+
apiGroup: rbac.authorization.k8s.io
115+
kind: ClusterRole
116+
name: external-snapshot-metadata-runner
117+
subjects:
118+
- kind: ServiceAccount
119+
name: csi-hostpathplugin-sa
120+
namespace: default
121+
---
122+
apiVersion: rbac.authorization.k8s.io/v1
105123
kind: RoleBinding
106124
metadata:
107125
labels:
@@ -225,6 +243,7 @@ spec:
225243
- "--v=5"
226244
- "--endpoint=$(CSI_ENDPOINT)"
227245
- "--nodeid=$(KUBE_NODE_NAME)"
246+
# end hostpath args
228247
env:
229248
- name: CSI_ENDPOINT
230249
value: unix:///csi/csi.sock
@@ -367,6 +386,8 @@ spec:
367386
- mountPath: /csi
368387
name: socket-dir
369388

389+
# end csi containers
390+
370391
volumes:
371392
- hostPath:
372393
path: /var/lib/kubelet/plugins/csi-hostpath
@@ -394,3 +415,4 @@ spec:
394415
path: /dev
395416
type: Directory
396417
name: dev-dir
418+
# end csi volumes
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
- name: csi-snapshot-metadata
2+
# TODO: Replace main tag with actual released tag once external-snapshot-metadata is released
3+
image: gcr.io/k8s-staging-sig-storage/csi-snapshot-metadata:canary
4+
imagePullPolicy: "IfNotPresent"
5+
command:
6+
args:
7+
- "--csi-address=/csi/csi.sock"
8+
- "--tls-cert=/tmp/certificates/tls.crt"
9+
- "--tls-key=/tmp/certificates/tls.key"
10+
readinessProbe:
11+
exec:
12+
command:
13+
- "/bin/grpc_health_probe"
14+
- "-addr=:50051"
15+
- "-tls"
16+
- "-tls-no-verify"
17+
initialDelaySeconds: 5
18+
volumeMounts:
19+
- mountPath: /csi
20+
name: socket-dir
21+
- name: csi-snapshot-metadata-server-certs
22+
mountPath: /tmp/certificates
23+
readOnly: true

deploy/util/deploy-hostpath.sh

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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.
147153
SNAPSHOTTER_RBAC_RELATIVE_PATH="rbac.yaml"
148154
if 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"
150156
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"
151159

152160
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"
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}
154162
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"
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}
156164
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}"
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}}
158168
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"
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

161171
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"
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+
164178
INSTALL_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
178192
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
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}"
211229
done
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
214253
echo "deploying hostpath components"
215254
for 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

Comments
 (0)