Creating a Storage Class in Amazon Web Services

Introduction

You can set up persistent storage in Amazon EKS using either of the following options:

This page includes the necessary steps for each of the two options listed above.

circle-exclamation
circle-exclamation
circle-exclamation

Prerequisites

Before you complete the steps in either section, you must:

  • Make sure you're logged in to Amazon Management Console

  • Set AWS Identity and Access Management (IAM) permissions for creating and attaching a policy to the Amazon EKS worker node role CSI Driver Role.

  • Create your Amazon EKS cluster and join your worker nodes to the cluster.

  • For Amazon EBS CSI add-on, make sure you have an existing cluster that's version 1.18 or later. To see the required platform version, run the following command.

    aws eks describe-addon-versions --addon-name aws-ebs-csi-driver
  • Have an existing IAM OpenID Connect (OIDC) provider for your cluster. To determine if you already have a cluster, or to create one, see Create an IAM OIDC provider for your clusterarrow-up-right.

circle-exclamation

Steps to create Disk and Network Volumes

The main focus of the next steps will be Deploying and testing the Amazon EBS CSI driver.

Adding the Amazon EBS CSI add-on

For this step, you need to follow the Amazon instructions presented in the article linked herearrow-up-right.

Setting the proper context

Starting here, you will work in the terminal. Make sure you're connected to the cluster and that the cluster is the current context. Use the command kubectl config --help to obtain the necessary information.

Creating the storage class spec.yaml file

Create a spec.yaml file with the following contents:

Applying the spec.yaml file

Apply the file using the command below. Line 2 contains the expected Output.

Verifying the presence of the bns-disk-sc storage class

Use the command below to verify the presence of the storage class:

Testing the EBS CSI driver

1. Create two files to test the CSI driver:

  • Create a claim.yaml file with the contents below. Later, the claim.yaml file will generate the test PVC.

  • Create a pod.yaml file with the contents below. Later, the pod.yaml file will generate the test Pod.

2. Apply claim.yaml:

3. Apply pod.yaml:

4. Wait until the app pod reaches the status Running. To check that the pod reached the Running status, perform the following command:

5. Check for the presence of a persistent volume that has the following properties:

  • STORAGECLASS set to bns-disk-sc

  • CLAIM set to default/ebs-claim

6. Verify that the app pod is writing data to the volume:

7. If the your results are similar with the output displayed above, then you've completed the process successfully and you can delete the test resources.

  • Start by deleting the Pod:

  • Delete the PVC. This will also cause the PV to be deleted:

  • Check if the PV displayed at step 5 is no longer present:

Last updated

Was this helpful?