Recommended setup for utilizing EFS with CloudBees Core running on Kubernetes

Issue

Recommended setup for utilizing EFS with CloudBees Core running on Kubernetes

Environment

Resolution

As stated in the Supported platforms:

CloudBees supports Amazon EFS as a storage backend for CloudBees CI. However, like any technology, Amazon EFS comes with tradeoffs that should be explored and understood.

You can use EFS to create a volume available across multiple Availability Zones. However, this comes at the cost of both performance and a higher price. Due to EFS’s nature, it will almost always perform slower than EBS, which some will find unacceptable. For fine-tuning the EFS performance configuration, please refer to Amazon’s documentation: https://aws.amazon.com/premiumsupport/knowledge-center/linux-efs-performance-modes/.

For those who still want to use EFS, this KB guides you in using your EFS storage with CloudBees CI.

Create an EFS filesystem from the AWS console

Step 1 - Configure file system access

  • VPC
  • Availability Zones

### Step 2 - Choose optional settings

  1. Choose the performance mode. It is recommended that you use General Purpose to achieve best performance with CloudBees Core.
  2. Choose the throughput mode. It is recommended that you use the following settings to achieve best performance with CloudBees Core:
  3. Provisioned
  4. Throughput (MiB/s) 160

Step 3 - Review and create

It is recommended that you choose the Create File System setting for CloudBees Core.

Configure NFS as your desired storage for Kubernetes

The efs-provisioner, which has been used for a while, has been deprecated. At the moment of writing this article, there is a new Amazon EFS CSI driver, but the problem with this solution is that it does not dynamically create a PV from a PVC. CloudBees Core CI expects your StorageClass to automatically create a PV once a PVC is created. This is a requeriment for the product to work correctly with the volume provisioning.

In the current state, CloudBees CI recommends to deploy nfs-subdir-external-provisioner. When deploying ensure that nfs.server is filled with the DNS of the EFS server.

Have more questions?

0 Comments

Please sign in to leave a comment.