diff --git a/docs/README.md b/docs/README.md index 44297dc8b..5ee9e8c7f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -68,6 +68,7 @@ Before the example, you need to: * [Static provisioning](../examples/kubernetes/static_provisioning/README.md) * [Encryption in transit](../examples/kubernetes/encryption_in_transit/README.md) * [Accessing the filesystem from multiple pods](../examples/kubernetes/multiple_pods/README.md) +* [Consume EFS in StatefulSets](../examples/kubernetes/statefulset/README.md) ## Development Please go through [CSI Spec](https://github.com/container-storage-interface/spec/blob/master/spec.md) and [General CSI driver development guideline](https://kubernetes-csi.github.io/docs/Development.html) to get some basic understanding of CSI driver before you start. diff --git a/examples/kubernetes/statefulset/README.md b/examples/kubernetes/statefulset/README.md new file mode 100644 index 000000000..62130c838 --- /dev/null +++ b/examples/kubernetes/statefulset/README.md @@ -0,0 +1,41 @@ +## Use in Stateful Set +This example shows how to consume EFS filesystem from StatefulSets using the driver. Before the example, refer to [StatefulSets](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/) for what it is. + +## Deploy the example + +```sh +kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/examples/kubernetes/statefulset/specs/example.yaml +``` + +## Check the StatefulSets Application +Check StatefulSets is deployed successfully: +```sh +$ kubectl get sts +NAME READY AGE +efs-app-sts 3/3 70m +``` + +Check the pods are running: +```sh +$ kubectl get po +NAME READY STATUS RESTARTS AGE +efs-app-sts-0 1/1 Running 0 71m +efs-app-sts-1 1/1 Running 0 71m +efs-app-sts-2 1/1 Running 0 71m +``` + +Check data are written onto EFS filesystem: +```sh +$ kubectl exec -ti efs-app-sts-0 -- tail -f /efs-data/out.txt +Mon May 6 00:50:15 UTC 2019 +Mon May 6 00:50:18 UTC 2019 +Mon May 6 00:50:19 UTC 2019 +Mon May 6 00:50:20 UTC 2019 +Mon May 6 00:50:23 UTC 2019 +Mon May 6 00:50:24 UTC 2019 +Mon May 6 00:50:25 UTC 2019 +Mon May 6 00:50:28 UTC 2019 +Mon May 6 00:50:29 UTC 2019 +Mon May 6 00:50:30 UTC 2019 +``` + diff --git a/examples/kubernetes/statefulset/specs/example.yaml b/examples/kubernetes/statefulset/specs/example.yaml new file mode 100644 index 000000000..8263de171 --- /dev/null +++ b/examples/kubernetes/statefulset/specs/example.yaml @@ -0,0 +1,56 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: efs-pv +spec: + capacity: + storage: 5Gi + volumeMode: Filesystem + accessModes: + - ReadWriteMany + persistentVolumeReclaimPolicy: Retain + storageClassName: efs-sc + csi: + driver: efs.csi.aws.com + volumeHandle: fs-4af69aab +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: efs-claim +spec: + accessModes: + - ReadWriteMany + storageClassName: efs-sc + resources: + requests: + storage: 5Gi +--- +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: efs-app-sts +spec: + selector: + matchLabels: + app: test-efs + serviceName: efs-app + replicas: 3 + template: + metadata: + labels: + app: test-efs + spec: + terminationGracePeriodSeconds: 10 + containers: + - name: linux + image: amazonlinux:2 + command: ["/bin/sh"] + args: ["-c", "while true; do echo $(date -u) >> /efs-data/out.txt; sleep 5; done"] + volumeMounts: + - name: efs-storage + mountPath: /efs-data + volumes: + - name: efs-storage + persistentVolumeClaim: + claimName: efs-claim