- Helm chart distribution: The driver is provided as an OCI Helm chart and requires Helm v3.8.0 or newer.
- DNS access: Pods must have access to external DNS to mount Archil disks. (Note: some providers, such as Fly.io, donβt enable this by default.)
Dynamic Provisioning
Dynamic provisioning automatically creates and deletes Archil disks when PersistentVolumeClaims are created and deleted. This is the recommended approach for most workloads.1. Install CSI driver with controller
Create a Kubernetes secret with your API key:2. Create a PersistentVolumeClaim
3. Use the disk in a pod
reclaimPolicy: Delete), the disk is cleaned up automatically.
Static Provisioning
If you need to use a pre-existing Archil disk, you can create PersistentVolumes manually.1. Install CSI driver
Install the CSI driver using our official Helm chart from Docker Hub. The chart deploys the archildata/csi-driver container image.2. Configure disk users
3. Create PersistentVolume
4. Create PersistentVolumeClaim
5. Create a pod
This example creates a simple demo pod to verify connectivity to your Archil disk. You can deploy your own applications using any pod configuration, just mount the PVC as shown below.Configuration reference
Storage access modes
TheaccessMode that you use when creating your PersistentVolume and PersistentVolumeClaim will determine whether the
disk is mounted with support for other clients to access it. When using ReadWriteOnce, the disk is mounted into single
ownership mode, preventing other clients from accessing the disk. When using ReadWriteMany, the disk is mounted with
--shared, allowing multiple clients to access the disk simultaneously. For more details, see the
Shared Disks page.
Helm Chart values
The following table describes all available configuration options invalues.yaml:
| Parameter | Description | Default | Required |
|---|---|---|---|
image.tag | Container image tag | 0.1.0 | No |
image.pullPolicy | Image pull policy | IfNotPresent | No |
serviceAccount.annotations | Service account annotations for AWS IRSA | {} | No |
extraEnv | Additional environment variables for the CSI driver container | [] | No |
resources | Resource limits and requests for the CSI driver container | {} | No |
nodeSelector | Node selector for CSI driver pod placement | {} | No |
tolerations | Pod tolerations | [] | No |
affinity | Pod affinity rules | {} | No |
controller.enabled | Enable the controller plugin for dynamic provisioning | false | No |
controller.apiKeySecretName | Name of the K8s Secret containing the API key | archil-controlplane-api-key | No |
controller.controlplaneURL | Override controlplane URL (empty = auto-detect from region) | "" | No |
controller.serviceAccount.annotations | Annotations for the controller service account | {} | No |
storageClass.enabled | Create a StorageClass for dynamic provisioning | false | No |
storageClass.name | StorageClass name | archil | No |
storageClass.isDefault | Set as default StorageClass | false | No |
storageClass.reclaimPolicy | PV reclaim policy (Delete or Retain) | Delete | No |
storageClass.volumeBindingMode | When to bind volumes (Immediate or WaitForFirstConsumer) | Immediate | No |
storageClass.region | Archil region for provisioned disks | "" | Yes (if enabled) |
storageClass.nodeAuthType | Node authentication type (awssts or token) | awssts | No |
storageClass.iamRoleArn | IAM role ARN for node authentication | "" | Yes (if awssts) |
Changelog
- Dynamic provisioning via controller plugin
- Automatic disk creation/deletion when PVCs are created/deleted
- Support for both IAM (AWS STS) and disk-token-based node authentication
- New StorageClass with configurable region and auth type
- Initial preview release