Skip to content

Commit 93535af

Browse files
Merge pull request #107912 from lanicolas/patch-6
Aligning with Bash style guide
2 parents cc3b614 + 455f1d7 commit 93535af

File tree

1 file changed

+92
-92
lines changed

1 file changed

+92
-92
lines changed

articles/aks/csi-migrate-in-tree-volumes.md

Lines changed: 92 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,19 @@ The following are important considerations to evaluate:
5656
```bash
5757
#!/bin/sh
5858
# Patch the Persistent Volume in case ReclaimPolicy is Delete
59-
namespace=$1
59+
NAMESPACE=$1
6060
i=1
61-
for pvc in $(kubectl get pvc -n $namespace | awk '{ print $1}'); do
61+
for PVC in $(kubectl get pvc -n $namespace | awk '{ print $1}'); do
6262
# Ignore first record as it contains header
6363
if [ $i -eq 1 ]; then
6464
i=$((i + 1))
6565
else
66-
pv="$(kubectl get pvc $pvc -n $namespace -o jsonpath='{.spec.volumeName}')"
67-
reclaimPolicy="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
68-
echo "Reclaim Policy for Persistent Volume $pv is $reclaimPolicy"
69-
if [[ $reclaimPolicy == "Delete" ]]; then
66+
PV="$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.spec.volumeName}')"
67+
RECLAIMPOLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
68+
echo "Reclaim Policy for Persistent Volume $PV is $RECLAIMPOLICY"
69+
if [[ $RECLAIMPOLICY == "Delete" ]]; then
7070
echo "Updating ReclaimPolicy for $pv to Retain"
71-
kubectl patch pv $pv -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
71+
kubectl patch pv $PV -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}'
7272
fi
7373
fi
7474
done
@@ -95,79 +95,79 @@ The following are important considerations to evaluate:
9595
#!/bin/sh
9696
#kubectl get pvc -n <namespace> --sort-by=.metadata.creationTimestamp -o custom-columns=NAME:.metadata.name,CreationTime:.metadata.creationTimestamp,StorageClass:.spec.storageClassName,Size:.spec.resources.requests.storage
9797
# TimeFormat 2022-04-20T13:19:56Z
98-
namespace=$1
99-
fileName=$(date +%Y%m%d%H%M)-$namespace
100-
existingStorageClass=$2
101-
storageClassNew=$3
102-
starttimestamp=$4
103-
endtimestamp=$5
98+
NAMESPACE=$1
99+
FILENAME=$(date +%Y%m%d%H%M)-$NAMESPACE
100+
EXISTING_STORAGE_CLASS=$2
101+
STORAGE_CLASS_NEW=$3
102+
STARTTIMESTAMP=$4
103+
ENDTIMESTAMP=$5
104104
i=1
105-
for pvc in $(kubectl get pvc -n $namespace | awk '{ print $1}'); do
105+
for PVC in $(kubectl get pvc -n $NAMESPACE | awk '{ print $1}'); do
106106
# Ignore first record as it contains header
107107
if [ $i -eq 1 ]; then
108108
i=$((i + 1))
109109
else
110-
pvcCreationTime=$(kubectl get pvc $pvc -n $namespace -o jsonpath='{.metadata.creationTimestamp}')
111-
if [[ $pvcCreationTime > $starttimestamp ]]; then
112-
if [[ $endtimestamp > $pvcCreationTime ]]; then
113-
pv="$(kubectl get pvc $pvc -n $namespace -o jsonpath='{.spec.volumeName}')"
114-
reclaimPolicy="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
115-
storageClass="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.storageClassName}')"
116-
echo $pvc
117-
reclaimPolicy="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
118-
if [[ $reclaimPolicy == "Retain" ]]; then
119-
if [[ $storageClass == $existingStorageClass ]]; then
120-
storageSize="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.capacity.storage}')"
121-
skuName="$(kubectl get storageClass $storageClass -o jsonpath='{.reclaimPolicy}')"
122-
diskURI="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.azureDisk.diskURI}')"
123-
persistentVolumeReclaimPolicy="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
110+
PVC_CREATION_TIME=$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.metadata.creationTimestamp}')
111+
if [[ $PVC_CREATION_TIME > $STARTTIMESTAMP ]]; then
112+
if [[ $ENDTIMESTAMP > $PVC_CREATION_TIME ]]; then
113+
PV="$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.spec.volumeName}')"
114+
RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
115+
STORAGECLASS="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.storageClassName}')"
116+
echo $PVC
117+
RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
118+
if [[ $RECLAIM_POLICY == "Retain" ]]; then
119+
if [[ $STORAGECLASS == $EXISTING_STORAGE_CLASS ]]; then
120+
STORAGE_SIZE="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.capacity.storage}')"
121+
SKU_NAME="$(kubectl get storageClass $STORAGECLASS -o jsonpath='{.reclaimPolicy}')"
122+
DISK_URI="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.azureDisk.diskURI}')"
123+
PERSISTENT_VOLUME_RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
124124
125-
cat >$pvc-csi.yaml <<EOF
125+
cat >$PVC-csi.yaml <<EOF
126126
apiVersion: v1
127127
kind: PersistentVolume
128128
metadata:
129129
annotations:
130130
pv.kubernetes.io/provisioned-by: disk.csi.azure.com
131-
name: $pv-csi
131+
name: $PV-csi
132132
spec:
133133
accessModes:
134134
- ReadWriteOnce
135135
capacity:
136-
storage: $storageSize
136+
storage: $STORAGE_SIZE
137137
claimRef:
138138
apiVersion: v1
139139
kind: PersistentVolumeClaim
140-
name: $pvc-csi
141-
namespace: $namespace
140+
name: $PVC-csi
141+
namespace: $NAMESPACE
142142
csi:
143143
driver: disk.csi.azure.com
144144
volumeAttributes:
145-
csi.storage.k8s.io/pv/name: $pv-csi
146-
csi.storage.k8s.io/pvc/name: $pvc-csi
147-
csi.storage.k8s.io/pvc/namespace: $namespace
148-
requestedsizegib: "$storageSize"
149-
skuname: $skuName
150-
volumeHandle: $diskURI
151-
persistentVolumeReclaimPolicy: $persistentVolumeReclaimPolicy
152-
storageClassName: $storageClassNew
145+
csi.storage.k8s.io/pv/name: $PV-csi
146+
csi.storage.k8s.io/pvc/name: $PVC-csi
147+
csi.storage.k8s.io/pvc/namespace: $NAMESPACE
148+
requestedsizegib: "$STORAGE_SIZE"
149+
skuname: $SKU_NAME
150+
volumeHandle: $DISK_URI
151+
persistentVolumeReclaimPolicy: $PERSISTENT_VOLUME_RECLAIM_POLICY
152+
storageClassName: $STORAGE_CLASS_NEW
153153
---
154154
apiVersion: v1
155155
kind: PersistentVolumeClaim
156156
metadata:
157-
name: $pvc-csi
158-
namespace: $namespace
157+
name: $PVC-csi
158+
namespace: $NAMESPACE
159159
spec:
160160
accessModes:
161161
- ReadWriteOnce
162-
storageClassName: $storageClassNew
162+
storageClassName: $STORAGE_CLASS_NEW
163163
resources:
164164
requests:
165-
storage: $storageSize
166-
volumeName: $pv-csi
165+
storage: $STORAGE_SIZE
166+
volumeName: $PV-csi
167167
EOF
168-
kubectl apply -f $pvc-csi.yaml
169-
line="PVC:$pvc,PV:$pv,StorageClassTarget:$storageClassNew"
170-
printf '%s\n' "$line" >>$fileName
168+
kubectl apply -f $PVC-csi.yaml
169+
LINE="PVC:$PVC,PV:$PV,StorageClassTarget:$STORAGE_CLASS_NEW"
170+
printf '%s\n' "$LINE" >>$FILENAME
171171
fi
172172
fi
173173
fi
@@ -251,89 +251,89 @@ Before proceeding, verify the following:
251251
#!/bin/sh
252252
#kubectl get pvc -n <namespace> --sort-by=.metadata.creationTimestamp -o custom-columns=NAME:.metadata.name,CreationTime:.metadata.creationTimestamp,StorageClass:.spec.storageClassName,Size:.spec.resources.requests.storage
253253
# TimeFormat 2022-04-20T13:19:56Z
254-
namespace=$1
255-
fileName=$namespace-$(date +%Y%m%d%H%M)
256-
existingStorageClass=$2
257-
storageClassNew=$3
258-
volumestorageClass=$4
259-
starttimestamp=$5
260-
endtimestamp=$6
254+
NAMESPACE=$1
255+
FILENAME=$NAMESPACE-$(date +%Y%m%d%H%M)
256+
EXISTING_STORAGE_CLASS=$2
257+
STORAGE_CLASS_NEW=$3
258+
VOLUME_STORAGE_CLASS=$4
259+
START_TIME_STAMP=$5
260+
END_TIME_STAMP=$6
261261
i=1
262-
for pvc in $(kubectl get pvc -n $namespace | awk '{ print $1}'); do
262+
for PVC in $(kubectl get pvc -n $NAMESPACE | awk '{ print $1}'); do
263263
# Ignore first record as it contains header
264264
if [ $i -eq 1 ]; then
265265
i=$((i + 1))
266266
else
267-
pvcCreationTime=$(kubectl get pvc $pvc -n $namespace -o jsonpath='{.metadata.creationTimestamp}')
268-
if [[ $pvcCreationTime > $starttimestamp ]]; then
269-
if [[ $endtimestamp > $pvcCreationTime ]]; then
270-
pv="$(kubectl get pvc $pvc -n $namespace -o jsonpath='{.spec.volumeName}')"
271-
reclaimPolicy="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
272-
storageClass="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.storageClassName}')"
273-
echo $pvc
274-
reclaimPolicy="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
275-
if [[ $storageClass == $existingStorageClass ]]; then
276-
storageSize="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.capacity.storage}')"
277-
skuName="$(kubectl get storageClass $storageClass -o jsonpath='{.reclaimPolicy}')"
278-
diskURI="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.azureDisk.diskURI}')"
279-
targetResourceGroup="$(cut -d'/' -f5 <<<"$diskURI")"
280-
echo $diskURI
281-
echo $targetResourceGroup
282-
persistentVolumeReclaimPolicy="$(kubectl get pv $pv -n $namespace -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
283-
az snapshot create --resource-group $targetResourceGroup --name $pvc-$fileName --source "$diskURI"
284-
snapshotPath=$(az snapshot list --resource-group $targetResourceGroup --query "[?name == '$pvc-$fileName'].id | [0]")
285-
snapshotHandle=$(echo "$snapshotPath" | tr -d '"')
286-
echo $snapshotHandle
267+
PVC_CREATION_TIME=$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.metadata.creationTimestamp}')
268+
if [[ $PVC_CREATION_TIME > $START_TIME_STAMP ]]; then
269+
if [[ $END_TIME_STAMP > $PVC_CREATION_TIME ]]; then
270+
PV="$(kubectl get pvc $PVC -n $NAMESPACE -o jsonpath='{.spec.volumeName}')"
271+
RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
272+
STORAGE_CLASS="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.storageClassName}')"
273+
echo $PVC
274+
RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
275+
if [[ $STORAGE_CLASS == $EXISTING_STORAGE_CLASS ]]; then
276+
STORAGE_SIZE="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.capacity.storage}')"
277+
SKU_NAME="$(kubectl get storageClass $STORAGE_CLASS -o jsonpath='{.reclaimPolicy}')"
278+
DISK_URI="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.azureDisk.diskURI}')"
279+
TARGET_RESOURCE_GROUP="$(cut -d'/' -f5 <<<"$DISK_URI")"
280+
echo $DISK_URI
281+
echo $TARGET_RESOURCE_GROUP
282+
PERSISTENT_VOLUME_RECLAIM_POLICY="$(kubectl get pv $PV -n $NAMESPACE -o jsonpath='{.spec.persistentVolumeReclaimPolicy}')"
283+
az snapshot create --resource-group $TARGET_RESOURCE_GROUP --name $PVC-$FILENAME --source "$DISK_URI"
284+
SNAPSHOT_PATH=$(az snapshot list --resource-group $TARGET_RESOURCE_GROUP --query "[?name == '$PVC-$FILENAME'].id | [0]")
285+
SNAPSHOT_HANDLE=$(echo "$SNAPSHOT_PATH" | tr -d '"')
286+
echo $SNAPSHOT_HANDLE
287287
sleep 10
288288
# Create Restore File
289-
cat <<EOF >$pvc-csi.yml
289+
cat <<EOF >$PVC-csi.yml
290290
apiVersion: snapshot.storage.k8s.io/v1
291291
kind: VolumeSnapshotContent
292292
metadata:
293-
name: $pvc-$fileName
293+
name: $PVC-$FILENAME
294294
spec:
295295
deletionPolicy: 'Delete'
296296
driver: 'disk.csi.azure.com'
297-
volumeSnapshotClassName: $volumestorageClass
297+
volumeSnapshotClassName: $VOLUME_STORAGE_CLASS
298298
source:
299-
snapshotHandle: $snapshotHandle
299+
snapshotHandle: $SNAPSHOT_HANDLE
300300
volumeSnapshotRef:
301301
apiVersion: snapshot.storage.k8s.io/v1
302302
kind: VolumeSnapshot
303-
name: $pvc-$fileName
303+
name: $PVC-$FILENAME
304304
namespace: $1
305305
---
306306
apiVersion: snapshot.storage.k8s.io/v1
307307
kind: VolumeSnapshot
308308
metadata:
309-
name: $pvc-$fileName
309+
name: $PVC-$FILENAME
310310
namespace: $1
311311
spec:
312-
volumeSnapshotClassName: $volumestorageClass
312+
volumeSnapshotClassName: $VOLUME_STORAGE_CLASS
313313
source:
314-
volumeSnapshotContentName: $pvc-$fileName
314+
volumeSnapshotContentName: $PVC-$FILENAME
315315
---
316316
apiVersion: v1
317317
kind: PersistentVolumeClaim
318318
metadata:
319-
name: csi-$pvc
319+
name: csi-$PVC
320320
namespace: $1
321321
spec:
322322
accessModes:
323323
- ReadWriteOnce
324-
storageClassName: $storageClassNew
324+
storageClassName: $STORAGE_CLASS_NEW
325325
resources:
326326
requests:
327-
storage: $storageSize
327+
storage: $STORAGE_SIZE
328328
dataSource:
329-
name: $pvc-$fileName
329+
name: $PVC-$FILENAME
330330
kind: VolumeSnapshot
331331
apiGroup: snapshot.storage.k8s.io
332332
333333
EOF
334-
kubectl create -f $pvc-csi.yml
335-
line="OLDPVC:$pvc,OLDPV:$pv,VolumeSnapshotContent:volumeSnapshotContent-$fileName,VolumeSnapshot:volumesnapshot$fileName,OLDdisk:$diskURI"
336-
printf '%s\n' "$line" >>$fileName
334+
kubectl create -f $PVC-csi.yml
335+
LINE="OLDPVC:$PVC,OLDPV:$PV,VolumeSnapshotContent:volumeSnapshotContent-$FILENAME,VolumeSnapshot:volumesnapshot$FILENAME,OLDdisk:$DISK_URI"
336+
printf '%s\n' "$LINE" >>$FILENAME
337337
fi
338338
fi
339339
fi

0 commit comments

Comments
 (0)