# 2022-03-18-13:54:09+0800 Add mount options for storageclass

- Cause: https://jira.tidbcloud.com/browse/DM-3753
- Operation:

Run the following script:

``` sh
#!/usr/bin/env bash

cat <<EOF > mount-opts-patch.yaml
mountOptions:
- nodelalloc,noatime
EOF

for ctx in $(kubectl config get-contexts --output=name | grep garden-prod); do
    # switch to the shoot cluster context
    kubectl config use-context ${ctx}

    # only when shoot is not hibernated
    if kubectl version > /dev/null; then
	for sc in $(kubectl get sc --output=name); do
	    if kubectl get ${sc} -oyaml | grep nodelalloc > /dev/null; then
		echo "Skipping ${sc} as it already has the expected mount options"
		continue
	    fi
	    if kubectl get ${sc} -oyaml | grep mountOptions > /dev/null; then
		echo "Skipping ${sc} as it already has mountoptions"
		continue
	    fi
	    echo "kubectl patch ${sc} --patch-file mount-opts-patch.yaml" >> patches.sh
	done
    fi
done
```

After running the script, it will generate the patch script. The `patches.sh` script content is as follows:

``` sh
kubectl --context garden-prod-1444c115-aws-ap-southeast-1-1372813089188271295 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-1444c115-aws-ap-southeast-1-1372813089188271295 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-1eaf9754-aws-us-west-2-1372813089190221285 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-1eaf9754-aws-us-west-2-1372813089190221285 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-1fd3fa82-aws-eu-central-1-1372813089189201287 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-1fd3fa82-aws-eu-central-1-1372813089189201287 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-2dfff8dd-aws-ap-northeast-1-1372813089190491281 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-2dfff8dd-aws-ap-northeast-1-1372813089190491281 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-2eaaa9a5-aws-us-east-1-1372813089188271295 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-2eaaa9a5-aws-us-east-1-1372813089188271295 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-3c0ab3c-aws-us-west-2-1 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-3c0ab3c-aws-us-west-2-1 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-445f9b59-gcp-us-central1-1326455380288475136 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-445f9b59-gcp-us-central1-1326455380288475136 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-445f9b59-gcp-us-central1-1326455380288475136 patch storageclass.storage.k8s.io/gce-sc-fast --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-445f9b59-gcp-us-central1-1326455380288475136 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-46291076-aws-us-east-1-1372813089189321293 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-46291076-aws-us-east-1-1372813089189321293 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4ae75c48-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4ae75c48-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4ae75c48-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4ae75c48-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4ae75c48-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/tiflash-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4ae75c48-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/tikv-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4bc76ea-aws-ap-northeast-2-1311265642040528896 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4bc76ea-aws-ap-northeast-2-1311265642040528896 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4bc76ea-aws-ap-northeast-2-1311265642040528896 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-4bc76ea-aws-ap-northeast-2-1311265642040528896 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-52802e62-aws-us-west-2-1 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-52802e62-aws-us-west-2-1 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-52b5bba3-aws-ap-northeast-1-1372813089188271295 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-52b5bba3-aws-ap-northeast-1-1372813089188271295 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-626162c1-aws-us-east-1-1 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-626162c1-aws-us-east-1-1 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-626162c1-aws-us-east-1-1 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-626162c1-aws-us-east-1-1 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-626162c1-aws-us-east-1-1 patch storageclass.storage.k8s.io/tiflash-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-626162c1-aws-us-east-1-1 patch storageclass.storage.k8s.io/tikv-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-64c6da39-aws-ap-northeast-1-1372813089190911285 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-64c6da39-aws-ap-northeast-1-1372813089190911285 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-6d936e40-aws-us-west-2-1372813089188331290 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-6d936e40-aws-us-west-2-1372813089188331290 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-6d936e40-aws-us-west-2-1372813089188331290 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-6d936e40-aws-us-west-2-1372813089188331290 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-6d936e40-aws-us-west-2-1372813089188331290 patch storageclass.storage.k8s.io/tiflash-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-6d936e40-aws-us-west-2-1372813089188331290 patch storageclass.storage.k8s.io/tikv-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-7d0f2715-aws-ap-southeast-1-1372813089187641282 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-7d0f2715-aws-ap-southeast-1-1372813089187641282 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8977b265-gcp-us-west1-1372813089187791289 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8977b265-gcp-us-west1-1372813089187791289 patch storageclass.storage.k8s.io/gce-sc-fast --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8c82dc3b-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8c82dc3b-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8c82dc3b-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/gce-sc-fast --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8c82dc3b-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8fd6130c-aws-us-west-2-1 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8fd6130c-aws-us-west-2-1 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8fd6130c-aws-us-west-2-1 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8fd6130c-aws-us-west-2-1 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8fd6130c-aws-us-west-2-1 patch storageclass.storage.k8s.io/tiflash-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-8fd6130c-aws-us-west-2-1 patch storageclass.storage.k8s.io/tikv-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-94adc86f-aws-us-west-2-1372813089187791289 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-94adc86f-aws-us-west-2-1372813089187791289 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-9c68b3fe-gcp-us-west1-1311274104996761600 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-9c68b3fe-gcp-us-west1-1311274104996761600 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-9c68b3fe-gcp-us-west1-1311274104996761600 patch storageclass.storage.k8s.io/gce-sc-fast --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-9c68b3fe-gcp-us-west1-1311274104996761600 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a13df0bd-gcp-us-west1-1 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a13df0bd-gcp-us-west1-1 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a13df0bd-gcp-us-west1-1 patch storageclass.storage.k8s.io/gce-sc-fast --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a13df0bd-gcp-us-west1-1 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a5d45b93-aws-ap-northeast-1-1372813089191061283 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a5d45b93-aws-ap-northeast-1-1372813089191061283 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a699f2c4-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a699f2c4-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a699f2c4-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/gce-sc-fast --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-a699f2c4-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b37987b1-aws-ap-southeast-1-1372813089188361291 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b37987b1-aws-ap-southeast-1-1372813089188361291 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b37987b1-aws-ap-southeast-1-1372813089188361291 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b37987b1-aws-ap-southeast-1-1372813089188361291 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b37987b1-aws-ap-southeast-1-1372813089188361291 patch storageclass.storage.k8s.io/tiflash-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b936733a-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b936733a-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b936733a-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/gce-sc-fast --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-b936733a-gcp-asia-northeast1-1326455380288475136 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-bc674294-aws-us-west-2-1372813089187791289 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-bc674294-aws-us-west-2-1372813089187791289 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-c0744937-aws-ap-northeast-1-1 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-c0744937-aws-ap-northeast-1-1 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-c7e9f09-aws-ap-southeast-1-1 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-c7e9f09-aws-ap-southeast-1-1 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-c7e9f09-aws-ap-southeast-1-1 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-c7e9f09-aws-ap-southeast-1-1 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-c7e9f09-aws-ap-southeast-1-1 patch storageclass.storage.k8s.io/tiflash-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-c7e9f09-aws-ap-southeast-1-1 patch storageclass.storage.k8s.io/tikv-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-cd13c1ac-gcp-us-west1-1372813089187791289 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-cd13c1ac-gcp-us-west1-1372813089187791289 patch storageclass.storage.k8s.io/gce-sc-fast --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-da9df9e5-aws-ap-southeast-1-1372813089190611291 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-da9df9e5-aws-ap-southeast-1-1372813089190611291 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-deff9a68-aws-us-west-2-1372813089188271295 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-deff9a68-aws-us-west-2-1372813089188271295 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-e1aa45ca-aws-ap-northeast-1-1372813089187971283 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-e1aa45ca-aws-ap-northeast-1-1372813089187971283 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-e1aa45ca-aws-ap-northeast-1-1372813089187971283 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-e1aa45ca-aws-ap-northeast-1-1372813089187971283 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-efc3f625-aws-ap-northeast-1-1 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-efc3f625-aws-ap-northeast-1-1 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fa365e72-aws-ap-northeast-1-1372813089187701282 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fa365e72-aws-ap-northeast-1-1372813089187701282 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fa365e72-aws-ap-northeast-1-1372813089187701282 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fa365e72-aws-ap-northeast-1-1372813089187701282 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fa365e72-aws-ap-northeast-1-1372813089187701282 patch storageclass.storage.k8s.io/tiflash-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fa365e72-aws-ap-northeast-1-1372813089187701282 patch storageclass.storage.k8s.io/tikv-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fa5db089-aws-us-west-2-1372813089191661282 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fa5db089-aws-us-west-2-1372813089191661282 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fd720095-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/cloud-ssd --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fd720095-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/default --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fd720095-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/gp2 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fd720095-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/local-storage --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fd720095-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/tiflash-gp3 --patch-file mount-opts-patch.yaml
kubectl --context garden-prod-fd720095-aws-us-west-2-1372813089187041280 patch storageclass.storage.k8s.io/tikv-gp3 --patch-file mount-opts-patch.yaml
```

Then run the patch script

``` sh
bash patches.sh
```

- Impact:

The storageclass will be added with the mountoptions: `nodelalloc,noatime`

- Recovery operation:

N/A

- Time window:

2022-03-18 14:00~15:00
