Skip to content

Commit 1d228b0

Browse files
authored
Add GCSFUSE filesystem (google#42)
* Add GCSFUSE filesystem * Restart daemonset after completion * grant admin permission to the service account * delete temp directory * Move gcsfuse.sh to start.sh * delete gcsfuse.sh * delete gsa when stopping cluster
1 parent a75a253 commit 1d228b0

File tree

4 files changed

+36
-42
lines changed

4 files changed

+36
-42
lines changed

infrastructure/kctf/config/daemon-gcsfuse.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ spec:
2222
image: ubuntu:19.10
2323
securityContext:
2424
privileged: true
25-
command: ["sh", "-c", "apt-get update && apt-get install -y wget fuse && wget -q https://github.com/GoogleCloudPlatform/gcsfuse/releases/download/v0.29.0/gcsfuse_0.29.0_amd64.deb && dpkg -i gcsfuse_0.29.0_amd64.deb && mkdir -p /mnt/disks/gcs && ((test -f /config/gcs_bucket && gcsfuse --foreground --debug_fuse --debug_gcs --stat-cache-ttl 0 -type-cache-ttl 0 -o allow_other --file-mode 0777 --dir-mode 0777 --uid 1000 --gid 1000 --key-file=$(ls /secrets/*.json|head -n 1) $(cat /config/gcs_bucket) /mnt/disks/gcs) || echo NO GCS BUCKET CONFIGURED>&2; chmod 0777 /mnt/disks/gcs && chown 1000:1000 /mnt/disks/gcs)"]
25+
command: ["sh", "-c", "apt-get update && apt-get install -y wget fuse && wget -q https://github.com/GoogleCloudPlatform/gcsfuse/releases/download/v0.29.0/gcsfuse_0.29.0_amd64.deb && dpkg -i gcsfuse_0.29.0_amd64.deb && mkdir -p /mnt/disks/gcs && ((test -f /config/gcs_bucket && gcsfuse --foreground --debug_fuse --debug_gcs --stat-cache-ttl 0 -type-cache-ttl 0 -o allow_other --file-mode 0777 --dir-mode 0777 --uid 1000 --gid 1000 --key-file=$(ls /secrets/*.json|head -n 1) $(cat /config/gcs_bucket) /mnt/disks/gcs) || echo NO GCS BUCKET CONFIGURED>&2; chmod 0777 /mnt/disks/gcs && chown 1000:1000 /mnt/disks/gcs; true)"]
2626
volumeMounts:
2727
- name: mnt-disks-gcs
2828
mountPath: /mnt/disks/gcs

infrastructure/kctf/scripts/cluster/start.sh

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,37 @@ gcloud compute routers nats create kctf-${CLUSTER_NAME}-nat-config --router-regi
1818

1919
get_cluster_creds
2020

21-
kubectl create configmap gcsfuse-config --namespace kube-system
22-
kubectl create secret generic gcsfuse-secrets --namespace kube-system
21+
# GCSFUSE
22+
23+
SUFFIX=$(echo "${PROJECT}-${CLUSTER_NAME}-${ZONE}" | sha1sum)
24+
BUCKET_NAME="kctf-gcsfuse-${SUFFIX:0:16}"
25+
GSA_NAME="${BUCKET_NAME}"
26+
GSA_EMAIL=$(gcloud iam service-accounts list --filter "name:${GSA_NAME}" --format 'get(email)' || true)
27+
if [ -z "${GSA_EMAIL}" ]; then
28+
gcloud iam service-accounts create "${GSA_NAME}" --description "kCTF GCSFUSE service account ${CLUSTER_NAME} ${ZONE}" --display-name "kCTF GCSFUSE ${CLUSTER_NAME} ${ZONE}"
29+
GSA_EMAIL=$(gcloud iam service-accounts list --filter "name:${GSA_NAME}" --format 'get(email)')
30+
fi
31+
if ! gsutil du "gs://${BUCKET_NAME}/"; then
32+
gsutil mb -l eu "gs://${BUCKET_NAME}/"
33+
gsutil uniformbucketlevelaccess set on "gs://${BUCKET_NAME}/"
34+
fi
35+
gcloud projects add-iam-policy-binding "${PROJECT}" --member "serviceAccount:${GSA_EMAIL}" --role roles/storage.objectAdmin
36+
37+
KEY_PATH=$(mktemp -d)/key.json
38+
39+
gcloud iam service-accounts keys create "${KEY_PATH}" --iam-account "${GSA_EMAIL}"
40+
41+
kubectl create secret generic gcsfuse-secrets --from-file="${KEY_PATH}" --namespace kube-system
42+
43+
rm -rf $(dirname "${KEY_PATH}")
44+
45+
kubectl create configmap gcsfuse-config --from-literal=gcs_bucket="${BUCKET_NAME}" --namespace kube-system
46+
47+
kubectl create -f "${DIR}/config/daemon-gcsfuse.yaml"
48+
2349

2450
kubectl create -f "${DIR}/config/apparmor.yaml"
2551
kubectl create -f "${DIR}/config/daemon.yaml"
26-
kubectl create -f "${DIR}/config/daemon-gcsfuse.yaml"
2752
kubectl create -f "${DIR}/config/network-policy.yaml"
2853
kubectl create -f "${DIR}/config/allow-dns.yaml"
2954
kubectl patch ServiceAccount default --patch "automountServiceAccountToken: false"

infrastructure/kctf/scripts/cluster/stop.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,10 @@ load_config
88

99
gcloud container clusters delete ${CLUSTER_NAME}
1010
gcloud compute routers delete kctf-${CLUSTER_NAME}-nat-router --region ${ZONE::-2}
11+
12+
SUFFIX=$(echo "${PROJECT}-${CLUSTER_NAME}-${ZONE}" | sha1sum)
13+
GSA_NAME="kctf-gcsfuse-${SUFFIX:0:16}"
14+
GSA_EMAIL=$(gcloud iam service-accounts list --filter "name:${GSA_NAME}" --format 'get(email)' || true)
15+
if [ -z "${GSA_EMAIL}" ]; then
16+
gcloud iam service-accounts delete "${GSA_EMAIL}"
17+
fi

infrastructure/kctf/scripts/setup/gcsfuse.sh

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)