Skip to content

Commit 15cff3a

Browse files
authored
Merge pull request #73 from davidz627/fix/projectBindingDelete
Remove old policy bindings so that setup-project is reentrant
2 parents 8d2bd1a + 6ad9a4b commit 15cff3a

File tree

2 files changed

+34
-5
lines changed

2 files changed

+34
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
title: "GCP Compute Persistent Disk CSI Driver Custom Roles"
2+
description: Custom roles required for functions of the gcp-compute-persistent-disk-csi-driver
3+
stage: ALPHA
4+
includedPermissions:
5+
- compute.instances.get
6+
- compute.instances.attachDisk

deploy/setup-project.sh

+28-5
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,40 @@
33
set -o nounset
44
set -o errexit
55

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"
610
IAM_NAME="${GCEPD_SA_NAME}@${PROJECT}.iam.gserviceaccount.com"
711

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
925
if [ -f $SA_FILE ]; then
1026
rm "$SA_FILE"
1127
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
1234
gcloud iam service-accounts delete "$IAM_NAME" --quiet || true
13-
# TODO: Delete ALL policy bindings
1435

1536
# Create new Service Account and Keys
1637
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

Comments
 (0)