3
3
set -o nounset
4
4
set -o errexit
5
5
6
+ readonly PKGDIR=" ${GOPATH} /src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver"
7
+ readonly KUBEDEPLOY=" ${PKGDIR} /deploy/kubernetes"
8
+
9
+ BIND_ROLES=" roles/compute.storageAdmin roles/iam.serviceAccountUser projects/${PROJECT} /roles/gcp_compute_persistent_disk_csi_driver_custom_role"
6
10
IAM_NAME=" ${GCEPD_SA_NAME} @${PROJECT} .iam.gserviceaccount.com"
7
11
8
- # Cleanup old Service Account and Key
12
+ # Create or Update Custom Role
13
+ if gcloud iam roles describe gcp_compute_persistent_disk_csi_driver_custom_role --project " ${PROJECT} " ;
14
+ then
15
+ gcloud iam roles update gcp_compute_persistent_disk_csi_driver_custom_role --quiet \
16
+ --project " ${PROJECT} " \
17
+ --file " ${PKGDIR} /deploy/gcp-compute-persistent-disk-csi-driver-custom-role.yaml"
18
+ else
19
+ gcloud iam roles create gcp_compute_persistent_disk_csi_driver_custom_role --quiet \
20
+ --project " ${PROJECT} " \
21
+ --file " ${PKGDIR} /deploy/gcp-compute-persistent-disk-csi-driver-custom-role.yaml"
22
+ fi
23
+
24
+ # Delete Service Account Key
9
25
if [ -f $SA_FILE ]; then
10
26
rm " $SA_FILE "
11
27
fi
28
+ # Delete ALL EXISTING Bindings
29
+ gcloud projects get-iam-policy " ${PROJECT} " --format json > " ${PKGDIR} /deploy/iam.json"
30
+ sed -i " /serviceAccount:${IAM_NAME} /d" " ${PKGDIR} /deploy/iam.json"
31
+ gcloud projects set-iam-policy " ${PROJECT} " " ${PKGDIR} /deploy/iam.json"
32
+ rm -f " ${PKGDIR} /deploy/iam.json"
33
+ # Delete Service Account
12
34
gcloud iam service-accounts delete " $IAM_NAME " --quiet || true
13
- # TODO: Delete ALL policy bindings
14
35
15
36
# Create new Service Account and Keys
16
37
gcloud iam service-accounts create " ${GCEPD_SA_NAME} "
17
- gcloud iam service-accounts keys create " ${SA_FILE} " --iam-account " ${IAM_NAME} "
18
- gcloud projects add-iam-policy-binding " ${PROJECT} " --member serviceAccount:" ${IAM_NAME} " --role roles/compute.admin
19
- gcloud projects add-iam-policy-binding " ${PROJECT} " --member serviceAccount:" ${IAM_NAME} " --role roles/iam.serviceAccountUser
38
+ for role in ${BIND_ROLES}
39
+ do
40
+ gcloud projects add-iam-policy-binding " ${PROJECT} " --member serviceAccount:" ${IAM_NAME} " --role ${role}
41
+ done
42
+ gcloud iam service-accounts keys create " ${SA_FILE} " --iam-account " ${IAM_NAME} "
0 commit comments