Configure an Astra Data Store backend
Learn how to configure an Astra Data Store (ADS) backend for your Astra Trident installation using the sample configurations provided.
To configure and use the Astra Data Store backend, you need the following:
-
A supported ADS storage system. See Astra Data Store preview documentation for details.
-
Credentials for the Kubernetes cluster hosting ADS. The Kubernetes cluster hosting ADS must have a namespace dedicated to the volume, snapshot, and export policy resources that this Astra Trident backend will create and manage. A
kubeconfig
must be available for the Kubernetes cluster hosting ADS that supports:-
Reading all the objects in the
astrads-system
namespace -
Reading/writing objects in the namespace created for this Astra Trident backend’s use
-
Listing all cluster namespaces
-
Backend configuration options
See the following table for the backend configuration options:
Parameter | Description | Default |
---|---|---|
|
Always 1 |
|
|
Name of the storage driver |
"astrads-nas" |
|
Custom name or the storage backend |
ADS cluster name |
|
The name of the AstraDSCluster resource |
|
|
The namespace where Astra Trident will create all ADS custom resources |
|
|
Credentials for the ADS Kubernetes cluster (Base64 compact JSON) |
|
Fine-grained control of NFS mount options |
"vers=4.1" |
|
Enable automatic export policy creation and updating [Boolean] |
false |
|
List of CIDRs to filter Kubernetes' node IPs against when |
["0.0.0.0/0", "::/0"] |
|
Fail provisioning if requested volume size is above this value |
"" (not enforced by default) |
|
Debug flags to use when troubleshooting. Example: {"api":false, "method":true} |
null |
|
|
Do not use debugTraceFlags unless you are troubleshooting and require a detailed log dump.
|
|
You should convert the kubeconfig value from YAML to compact JSON format, and then to Base64 format before including it in the backend configuration.
|
Each backend provisions volumes in a single namespace on the Kubernetes cluster that hosts ADS. To create volumes in other namespaces, you can define additional backends. ADS volumes can be attached to any namespace in the hosting cluster, any other Kubernetes cluster, or anywhere else that can mount NFS shares.
You can control default provisioning for each volume using these options in a special section of the configuration file.
See the configuration examples below.
Parameter | Description | Default |
---|---|---|
|
Export policy to use |
"default" |
|
Mode for new volumes, must be octal and begin with "0" |
"0777" |
|
Percentage of volume reserved for snapshots |
"5" |
|
Controls visibility of the |
"false" |
|
QoS policy to assign for volumes created |
"" |
|
For all volumes created on an ADS backend, Astra Trident will copy all the labels present on a storage pool to the storage volume at the time it is provisioned. Storage administrators can define labels per storage pool and group all volumes created per storage pool. This provides a convenient way of differentiating volumes based on a set of customizable labels that are provided in the backend configuration file. |
Example 1: Minimal backend configuration
This is the absolute minimum backend configuration.
{ "version": 1, "storageDriverName": "astrads-nas", "cluster": "astrads-sti-c6220-09-10-11-12", "namespace": "test", "kubeconfig": "eyJjdXJyZW50LWNvbnRleHQiOiJmZWRlcmFsLWNvbnRleHQiLCJhcGlWZXJzaW9uIjoidjEiLCJjbHVzdGVycyI6W3siY2x1c3RlciI6eyJhcGktdmVyc2lvbiI6InYxIiwic2VydmVyIjoiaHR0cDovL2Nvdy5vcmc6ODA4MCJ9LCJuYW1lIjoiY293LWNsdXN0ZXIifSx7ImNsdXN0ZXIiOnsiY2VydGlmaWNhdGUtYXV0aG9yaXR5IjoicGF0aC90by9teS9jYWZpbGUiLCJzZXJ2ZXIiOiJodHRwczovL2hvcnNlLm9yZzo0NDQzIn0sIm5hbWUiOiJob3JzZS1jbHVzdGVyIn0seyJjbHVzdGVyIjp7Imluc2VjdXJlLXNraXAtdGxzLXZlcmlmeSI6dHJ1ZSwic2VydmVyIjoiaHR0cHM6Ly9waWcub3JnOjQ0MyJ9LCJuYW1lIjoicGlnLWNsdXN0ZXIifV0sImNvbnRleHRzIjpbeyJjb250ZXh0Ijp7ImNsdXN0ZXIiOiJob3JzZS1jbHVzdGVyIiwibmFtZXNwYWNlIjoiY2hpc2VsLW5zIiwidXNlciI6ImdyZWVuLXVzZXIifSwibmFtZSI6ImZlZGVyYWwtY29udGV4dCJ9LHsiY29udGV4dCI6eyJjbHVzdGVyIjoicGlnLWNsdXN0ZXIiLCJuYW1lc3BhY2UiOiJzYXctbnMiLCJ1c2VyIjoiYmxhY2stdXNlciJ9LCJuYW1lIjoicXVlZW4tYW5uZS1jb250ZXh0In1dLCJraW5kIjoiQ29uZmlnIiwicHJlZmVyZW5jZXMiOnsiY29sb3JzIjp0cnVlfSwidXNlcnMiOlt7Im5hbWUiOiJibHVlLXVzZXIiLCJ1c2VyIjp7InRva2VuIjoiYmx1ZS10b2tlbiJ9fSx7Im5hbWUiOiJncmVlbi11c2VyIiwidXNlciI6eyJjbGllbnQtY2VydGlmaWNhdGUiOiJwYXRoL3RvL215L2NsaWVudC9jZXJ0IiwiY2xpZW50LWtleSI6InBhdGgvdG8vbXkvY2xpZW50L2tleSJ9fV19" }
Example 2: Single service level configuration
This example shows a backend file that applies the same aspects to all Astra Trident-created storage.
{ "version": 1, "storageDriverName": "astrads-nas", "cluster": "astrads-sti-c6220-09-10-11-12", "namespace": "test", "kubeconfig": "eyJjdXJyZW50LWNvbnRleHQiOiJmZWRlcmFsLWNvbnRleHQiLCJhcGlWZXJzaW9uIjoidjEiLCJjbHVzdGVycyI6W3siY2x1c3RlciI6eyJhcGktdmVyc2lvbiI6InYxIiwic2VydmVyIjoiaHR0cDovL2Nvdy5vcmc6ODA4MCJ9LCJuYW1lIjoiY293LWNsdXN0ZXIifSx7ImNsdXN0ZXIiOnsiY2VydGlmaWNhdGUtYXV0aG9yaXR5IjoicGF0aC90by9teS9jYWZpbGUiLCJzZXJ2ZXIiOiJodHRwczovL2hvcnNlLm9yZzo0NDQzIn0sIm5hbWUiOiJob3JzZS1jbHVzdGVyIn0seyJjbHVzdGVyIjp7Imluc2VjdXJlLXNraXAtdGxzLXZlcmlmeSI6dHJ1ZSwic2VydmVyIjoiaHR0cHM6Ly9waWcub3JnOjQ0MyJ9LCJuYW1lIjoicGlnLWNsdXN0ZXIifV0sImNvbnRleHRzIjpbeyJjb250ZXh0Ijp7ImNsdXN0ZXIiOiJob3JzZS1jbHVzdGVyIiwibmFtZXNwYWNlIjoiY2hpc2VsLW5zIiwidXNlciI6ImdyZWVuLXVzZXIifSwibmFtZSI6ImZlZGVyYWwtY29udGV4dCJ9LHsiY29udGV4dCI6eyJjbHVzdGVyIjoicGlnLWNsdXN0ZXIiLCJuYW1lc3BhY2UiOiJzYXctbnMiLCJ1c2VyIjoiYmxhY2stdXNlciJ9LCJuYW1lIjoicXVlZW4tYW5uZS1jb250ZXh0In1dLCJraW5kIjoiQ29uZmlnIiwicHJlZmVyZW5jZXMiOnsiY29sb3JzIjp0cnVlfSwidXNlcnMiOlt7Im5hbWUiOiJibHVlLXVzZXIiLCJ1c2VyIjp7InRva2VuIjoiYmx1ZS10b2tlbiJ9fSx7Im5hbWUiOiJncmVlbi11c2VyIiwidXNlciI6eyJjbGllbnQtY2VydGlmaWNhdGUiOiJwYXRoL3RvL215L2NsaWVudC9jZXJ0IiwiY2xpZW50LWtleSI6InBhdGgvdG8vbXkvY2xpZW50L2tleSJ9fV19", "defaults": { "exportPolicy": "myexportpolicy1", "qosPolicy": "bronze", "snapshotReserve": "10" }, "labels": {"cloud": "on-prem", "creator": "ads-cluster-1", "performance": "bronze"} }
Example 3: Virtual storage pool configuration
This example shows the backend definition file configured with virtual storage pools along with StorageClasses that refer back to them.
{ "version": 1, "storageDriverName": "astrads-nas", "cluster": "astrads-sti-c6220-09-10-11-12", "namespace": "test", "kubeconfig": "eyJjdXJyZW50LWNvbnRleHQiOiJmZWRlcmFsLWNvbnRleHQiLCJhcGlWZXJzaW9uIjoidjEiLCJjbHVzdGVycyI6W3siY2x1c3RlciI6eyJhcGktdmVyc2lvbiI6InYxIiwic2VydmVyIjoiaHR0cDovL2Nvdy5vcmc6ODA4MCJ9LCJuYW1lIjoiY293LWNsdXN0ZXIifSx7ImNsdXN0ZXIiOnsiY2VydGlmaWNhdGUtYXV0aG9yaXR5IjoicGF0aC90by9teS9jYWZpbGUiLCJzZXJ2ZXIiOiJodHRwczovL2hvcnNlLm9yZzo0NDQzIn0sIm5hbWUiOiJob3JzZS1jbHVzdGVyIn0seyJjbHVzdGVyIjp7Imluc2VjdXJlLXNraXAtdGxzLXZlcmlmeSI6dHJ1ZSwic2VydmVyIjoiaHR0cHM6Ly9waWcub3JnOjQ0MyJ9LCJuYW1lIjoicGlnLWNsdXN0ZXIifV0sImNvbnRleHRzIjpbeyJjb250ZXh0Ijp7ImNsdXN0ZXIiOiJob3JzZS1jbHVzdGVyIiwibmFtZXNwYWNlIjoiY2hpc2VsLW5zIiwidXNlciI6ImdyZWVuLXVzZXIifSwibmFtZSI6ImZlZGVyYWwtY29udGV4dCJ9LHsiY29udGV4dCI6eyJjbHVzdGVyIjoicGlnLWNsdXN0ZXIiLCJuYW1lc3BhY2UiOiJzYXctbnMiLCJ1c2VyIjoiYmxhY2stdXNlciJ9LCJuYW1lIjoicXVlZW4tYW5uZS1jb250ZXh0In1dLCJraW5kIjoiQ29uZmlnIiwicHJlZmVyZW5jZXMiOnsiY29sb3JzIjp0cnVlfSwidXNlcnMiOlt7Im5hbWUiOiJibHVlLXVzZXIiLCJ1c2VyIjp7InRva2VuIjoiYmx1ZS10b2tlbiJ9fSx7Im5hbWUiOiJncmVlbi11c2VyIiwidXNlciI6eyJjbGllbnQtY2VydGlmaWNhdGUiOiJwYXRoL3RvL215L2NsaWVudC9jZXJ0IiwiY2xpZW50LWtleSI6InBhdGgvdG8vbXkvY2xpZW50L2tleSJ9fV19", "autoExportPolicy": true, "autoExportCIDRs": ["10.211.55.0/24"], "labels": {"cloud": "on-prem", "creator": "ads-cluster-1"}, "defaults": {"snapshotReserve": "5"}, "storage": [ { "labels": {"performance": "gold", "cost": "3"}, "defaults": { "qosPolicy": "gold", "snapshotReserve": "10" } }, { "labels": {"performance": "silver", "cost": "2"}, "defaults": {"qosPolicy": "silver"} }, { "labels": {"performance": "bronze", "cost": "1"}, "defaults": {"qosPolicy": "bronze"} } ] }
The following StorageClass definitions refer to the storage pools above. By using the parameters.selector
field, you can specify for each StorageClass the virtual pool that is used to host a volume. The volume will have the aspects defined in the chosen virtual pool.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ads provisioner: csi.trident.netapp.io parameters: backendType: astrads-nas allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ads-gold provisioner: csi.trident.netapp.io parameters: backendType: astrads-nas selector: performance=gold allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ads-silver provisioner: csi.trident.netapp.io parameters: backendType: astrads-nas selector: performance=silver allowVolumeExpansion: true --- apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ads-bronze provisioner: csi.trident.netapp.io parameters: backendType: astrads-nas selector: performance=bronze allowVolumeExpansion: true
What’s next?
After you create the backend configuration file, run the following command:
tridentctl create backend -f <backend-file>
If the backend creation fails, something is wrong with the backend configuration. You can view the logs to determine the cause by running the following command:
tridentctl logs
After you identify and correct the problem with the configuration file, you can run the create command again.