Recommended setup for utilizing EFS with CloudBees Core running on Kubernetes
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.
- Availability Zones
### Step 2 - Choose optional settings
- Choose the performance mode. It is recommended that you use General Purpose to achieve best performance with CloudBees Core.
- Choose the throughput mode. It is recommended that you use the following settings to achieve best performance with CloudBees Core:
- Throughput (MiB/s) 160
It is recommended that you choose the Create File System setting for CloudBees Core.
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.