SANtricity (E-Series)¶
To create and use an E-Series backend, you will need:
- A supported E-Series storage system
- Complete E-Series backend preparation
- Credentials to the E-Series storage system
Preparation¶
All of your Kubernetes worker nodes must have the appropriate iSCSI tools installed. See the worker configuration guide for more details.
Trident uses host groups to control access to the volumes (LUNs) that it
provisions. It expects to find a host group called trident
unless a
different host group name is specified in the configuration.
While Trident associates new volumes with the configured host group, it does not create or otherwise manage host groups themselves. The host group must exist before the storage backend is added to Trident, and it needs to contain a host definition with an iSCSI IQN for every worker node in the Kubernetes cluster.
Backend configuration options¶
Parameter | Description | Default |
---|---|---|
version | Always 1 | |
storageDriverName | Always “eseries-iscsi” | |
backendName | Custom name for the storage backend | “eseries_” + hostDataIP |
webProxyHostname | Hostname or IP address of the web services proxy | |
webProxyPort | Port number of the web services proxy | 80 for HTTP, 443 for HTTPS |
webProxyUseHTTP | Use HTTP instead of HTTPS to communicate to the proxy | false |
webProxyVerifyTLS | Verify certificate chain and hostname | false |
username | Username for the web services proxy | |
password | Password for the web services proxy | |
controllerA | IP address for controller A | |
controllerB | IP address for controller B | |
passwordArray | Password for the storage array, if set | “” |
hostDataIP | Host iSCSI IP address | |
poolNameSearchPattern | Regular expression for matching available storage pools | “.+” (all) |
hostType | E-Series Host types created by the driver | “linux_dm_mp” |
accessGroupName | E-Series Host Group used by the driver | “trident” |
limitVolumeSize | Fail provisioning if requested volume size is above this value | “” (not enforced by default) |
Example configuration¶
Example 1 - Minimal backend configuration for eseries-iscsi driver
{
"version": 1,
"storageDriverName": "eseries-iscsi",
"webProxyHostname": "localhost",
"webProxyPort": "8443",
"username": "rw",
"password": "rw",
"controllerA": "10.0.0.5",
"controllerB": "10.0.0.6",
"passwordArray": "",
"hostDataIP": "10.0.0.101"
}
Example 2 - Backend and Storage Class configuration for eseries-iscsi driver with Virtual Storage Pools
This example shows the backend definition file configured with Virtual Storage Pools along with StorageClasses that refer back to them.
In the sample backend definition file shown below, the Virtual Storage Pools are defined in the storage
section.
{
"version": 1,
"storageDriverName": "eseries-iscsi",
"controllerA": "10.0.0.1",
"controllerB": "10.0.0.2",
"hostDataIP": "10.0.1.1",
"username": "user",
"password": "password",
"passwordArray": "password",
"webProxyHostname": "10.0.2.1",
"labels":{"store":"eseries"},
"region":"us-east",
"storage":[
{
"labels":{"performance":"gold", "cost":"4"},
"zone":"us-east-1a"
},
{
"labels":{"performance":"silver", "cost":"3"},
"zone":"us-east-1b"
},
{
"labels":{"performance":"bronze", "cost":"2"},
"zone":"us-east-1c"
},
{
"labels":{"performance":"bronze", "cost":"1"},
"zone":"us-east-1d"
}
]
}
The following StorageClass definitions refer to the above virtual storage pools. Using the parameters.selector
field, each StorageClass calls out which virtual pool(s) may be used to host a volume. The volume will have the aspects defined in the chosen virtual pool.
The first StorageClass (eseries-gold-four
) will map to the first virtual storage pool. This is the only pool offering gold performance in zone us-east-1a
. The last StorageClass (eseries-bronze
) calls out any storage pool which offers a bronze performance. Trident will decide which virtual storage pool is selected and will ensure the storage requirement is met.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: eseries-gold-four
provisioner: netapp.io/trident
parameters:
selector: "performance=gold; cost=4"
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: eseries-silver-three
provisioner: netapp.io/trident
parameters:
selector: "performance=silver; cost=3"
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: eseries-bronze-two
provisioner: netapp.io/trident
parameters:
selector: "performance=bronze; cost=2"
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: eseries-bronze-one
provisioner: netapp.io/trident
parameters:
selector: "performance=bronze; cost=1"
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: eseries-bronze
provisioner: netapp.io/trident
parameters:
selector: "performance=bronze"