Skip to content

Commit ebb9d84

Browse files
committed
Update deploy script to deploy snapshot-metadata service
Signed-off-by: Prasad Ghangal <[email protected]>
1 parent 245a8ee commit ebb9d84

File tree

3 files changed

+93
-2
lines changed

3 files changed

+93
-2
lines changed

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

Lines changed: 25 additions & 1 deletion
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:
@@ -219,12 +237,15 @@ spec:
219237
serviceAccountName: csi-hostpathplugin-sa
220238
containers:
221239
- name: hostpath
222-
image: registry.k8s.io/sig-storage/hostpathplugin:v1.15.0
240+
# TODO: Revert comment once https://github.com/kubernetes-csi/csi-driver-host-path/pull/569 is merged
241+
#image: registry.k8s.io/sig-storage/hostpathplugin:v1.15.0
242+
image: prasadg193/hostpathplugin:amd64-linux-canary
223243
args:
224244
- "--drivername=hostpath.csi.k8s.io"
225245
- "--v=5"
226246
- "--endpoint=$(CSI_ENDPOINT)"
227247
- "--nodeid=$(KUBE_NODE_NAME)"
248+
# end hostpath args
228249
env:
229250
- name: CSI_ENDPOINT
230251
value: unix:///csi/csi.sock
@@ -367,6 +388,8 @@ spec:
367388
- mountPath: /csi
368389
name: socket-dir
369390

391+
# end csi containers
392+
370393
volumes:
371394
- hostPath:
372395
path: /var/lib/kubelet/plugins/csi-hostpath
@@ -394,3 +417,4 @@ spec:
394417
path: /dev
395418
type: Directory
396419
name: dev-dir
420+
# 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:main
4+
imagePullPolicy: "Always"
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: 45 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,38 @@ 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+
# TODO: Replace with external-snapshot-metadata link
175+
CSI_SNAPSHOT_METADATA_TLS_CERT_YAML="https://raw.githubusercontent.com/PrasadG193/k8s-external-snapshot-metadata/refs/heads/add-testdata/deploy/example/csi-driver/testdata/csi-snapshot-metadata-tls-secret.yaml"
176+
SNAPSHOT_METADATA_SERVICE_CR_YAML="https://raw.githubusercontent.com/PrasadG193/k8s-external-snapshot-metadata/refs/heads/add-testdata/deploy/example/csi-driver/testdata/snapshotmetadataservice.yaml"
177+
CSI_SNAPSHOT_METADATA_SERVICE_YAML="https://raw.githubusercontent.com/PrasadG193/k8s-external-snapshot-metadata/refs/heads/add-testdata/deploy/example/csi-driver/testdata/csi-snapshot-metadata-service.yaml"
178+
164179
INSTALL_CRD=${INSTALL_CRD:-"false"}
165180

166181
# Some images are not affected by *_REGISTRY/*_TAG and IMAGE_* variables.
@@ -176,7 +191,7 @@ run () {
176191

177192
# rbac rules
178193
echo "applying RBAC rules"
179-
for component in CSI_PROVISIONER CSI_ATTACHER CSI_SNAPSHOTTER CSI_RESIZER CSI_EXTERNALHEALTH_MONITOR; do
194+
for component in CSI_PROVISIONER CSI_ATTACHER CSI_SNAPSHOTTER CSI_RESIZER CSI_EXTERNALHEALTH_MONITOR CSI_SNAPSHOT_METADATA; do
180195
eval current="\${${component}_RBAC}"
181196
eval original="\${${component}_RBAC_YAML}"
182197
if [ "$current" != "$original" ]; then
@@ -210,13 +225,42 @@ EOF
210225
run kubectl apply --kustomize "${TEMP_DIR}"
211226
done
212227

228+
# deploy snapshot-metadata service components
229+
if snapshot_metadata; then
230+
echo "applying snapshot metadata components"
231+
for component in ${CSI_SNAPSHOT_METADATA_TLS_CERT_YAML} ${SNAPSHOT_METADATA_SERVICE_CR_YAML} ${CSI_SNAPSHOT_METADATA_SERVICE_YAML}; do
232+
run curl "${component}" --output "${TEMP_DIR}"/snap-metadata-comp.yaml --silent --location
233+
cat <<- EOF > "${TEMP_DIR}"/kustomization.yaml
234+
apiVersion: kustomize.config.k8s.io/v1beta1
235+
kind: Kustomization
236+
237+
commonLabels:
238+
app.kubernetes.io/instance: hostpath.csi.k8s.io
239+
app.kubernetes.io/part-of: csi-driver-host-path
240+
241+
resources:
242+
- ./snap-metadata-comp.yaml
243+
EOF
244+
245+
run kubectl apply --kustomize "${TEMP_DIR}"
246+
done
247+
fi
248+
213249
# deploy hostpath plugin and registrar sidecar
214250
echo "deploying hostpath components"
215251
for i in $(ls ${BASE_DIR}/hostpath/*.yaml | sort); do
216252
echo " $i"
217253
if volume_mode_conversion; then
218254
sed -i -e 's/# end csi-provisioner args/- \"--prevent-volume-mode-conversion=true\"\n # end csi-provisioner args/' $i
219255
fi
256+
257+
# Add external-snapshot-metadata sidecar to the driver, mount TLS certs,
258+
# and enable snapshot-metadata service
259+
if snapshot_metadata; then
260+
sed -i -e "/# end csi containers/r ${SNAPSHOT_METADATA_SIDECAR_PATCH_RELATIVE_PATH}" $i
261+
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
262+
sed -i -e 's/# end hostpath args/- \"--enable-snapshot-metadata\"\n # end hostpath args/' $i
263+
fi
220264
modified="$(cat "$i" | sed -e "s;${default_kubelet_data_dir}/;${KUBELET_DATA_DIR}/;" | while IFS= read -r line; do
221265
nocomments="$(echo "$line" | sed -e 's/ *#.*$//')"
222266
if echo "$nocomments" | grep -q '^[[:space:]]*image:[[:space:]]*'; then

0 commit comments

Comments
 (0)