Storage Classes for Helm Charts¶
Storage Classes¶
Storage classes in Kubernetes define the types of storage available for dynamic provisioning of persistent volumes. When using Helm charts with Omnistrate, you can leverage dynamic provisioning to create volumes of different types based on your application's requirements.
Omnistrate pre-provisions a defined set of storage classes for persistent volumes across different cloud providers, ensuring consistent storage options and optimal performance for your Helm deployments.
When using Compose specifications using storage classes directly is not required.
Pre-Provisioned Storage Classes¶
Omnistrate automatically provisions the following storage classes across different cloud providers:
AWS Storage Classes¶
Storage Class | Type | Description | Use Cases |
---|---|---|---|
gp3 | AWS EBS GP3 | General Purpose SSD with configurable IOPS and throughput | General workloads, databases |
gp3-immediate | AWS EBS GP3 | General Purpose SSD with configurable IOPS and throughput | General workloads, databases |
gp2 | AWS EBS GP2 | General Purpose SSD with baseline performance | Legacy applications, development |
io2 | AWS EBS IO2 | Latest generation Provisioned IOPS SSD | Mission-critical applications requiring highest performance |
io2-immediate | AWS EBS IO2 | Latest generation Provisioned IOPS SSD | Mission-critical applications requiring highest performance |
Storage Class Configuration:
- Volume Binding Mode:
WaitForFirstConsumer
(default),Immediate
(for-immediate
variants) - Reclaim Policy:
Delete
- volumes are automatically deleted when deployment instances are deleted - Volume Expansion: Enabled for all AWS storage classes
- Encryption: All volumes are encrypted
- Default:
gp3
GCP Storage Classes¶
Storage Class | Type | Description | Use Cases |
---|---|---|---|
standard-rwo | GCP Standard | Standard ReadWriteOnce storage | Development, testing, general workloads |
standard-rwo-immediate | GCP Standard | Standard ReadWriteOnce storage | Development, testing, general workloads |
pd-balanced | GCP Balanced | Balanced persistent disk with good performance | Production workloads, databases |
pd-balanced-immediate | GCP Balanced | Balanced persistent disk with good performance | Production workloads, databases |
pd-ssd | GCP SSD | High-performance SSD persistent disk | High-performance applications, databases |
pd-ssd-immediate | GCP SSD | High-performance SSD persistent disk | High-performance applications, databases |
pd-standard | GCP Standard | Standard persistent disk | General workloads, development |
pd-standard-immediate | GCP Standard | Standard persistent disk | General workloads, development |
pd-extreme | GCP Extreme | Highest performance persistent disk | Mission-critical, high-IOPS applications |
pd-extreme-immediate | GCP Extreme | Highest performance persistent disk | Mission-critical, high-IOPS applications |
hyperdisk | GCP Hyperdisk | Ultra-high performance storage | Extreme performance requirements |
hyperdisk-immediate | GCP Hyperdisk | Ultra-high performance storage | Extreme performance requirements |
Storage Class Configuration:
- Volume Binding Mode:
WaitForFirstConsumer
(default),Immediate
(for-immediate
variants) - Reclaim Policy:
Delete
- volumes are automatically deleted when deployment instances are deleted - Volume Expansion: Enabled for all GCP storage classes
- Encryption: All volumes are encrypted
- Default:
pd-balanced
Azure Storage Classes¶
Storage Class | Type | Description | Use Cases |
---|---|---|---|
managed-premium | Azure Premium LRS | Premium locally redundant SSD storage | Production databases, high-performance apps |
managed-premium-immediate | Azure Premium LRS | Premium locally redundant SSD storage | Production databases, high-performance apps |
managed-standard | Azure Standard LRS | Standard locally redundant storage | Development, testing, general workloads |
managed-standard-immediate | Azure Standard LRS | Standard locally redundant storage | Development, testing, general workloads |
managed-ultra | Azure Ultra SSD LRS | Ultra-high performance SSD storage | Mission-critical, high-IOPS applications |
managed-ultra-immediate | Azure Ultra SSD LRS | Ultra-high performance SSD storage | Mission-critical, high-IOPS applications |
azurefiles-standard | Azure Files Standard LRS | Standard file storage | Shared file systems, development |
azurefiles-standard-immediate | Azure Files Standard LRS | Standard file storage | Shared file systems, development |
azurefiles-premium | Azure Files Premium LRS | Premium file storage | High-performance shared file systems |
azurefiles-premium-immediate | Azure Files Premium LRS | Premium file storage | High-performance shared file systems |
Storage Class Configuration:
- Volume Binding Mode:
WaitForFirstConsumer
(default),Immediate
(for-immediate
variants) - Reclaim Policy:
Delete
- volumes are automatically deleted when deployment instances are deleted - Volume Expansion: Enabled for
managed-premium
storage classes only - Encryption: All volumes are encrypted
- Default:
managed-premium
Cloud Agnostic Storage Class¶
Omnistrate configures default storage classes for each cloud, if you don't have specific performance requirements you can rely on the default storage class for simplicity.
Using Storage classes on your Helm¶
When deploying Helm charts through Omnistrate, you can specify storage classes in your Helm values to dynamically provision persistent volumes. The storage class determines the type and performance characteristics of the underlying storage.
Example of using storage classes on you Helm Chart¶
# values.yaml
persistence:
enabled: true
storageClass: "gp3" # AWS GP3 storage
size: 100Gi
accessMode: ReadWriteOnce
# templates/pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "myapp.fullname" . }}-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.size }}
{{- if .Values.persistence.storageClass }}
storageClassName: {{ .Values.persistence.storageClass }}
{{- end }}
Multi-Cloud Storage Configuration¶
For applications that need to work across different cloud providers, you can use layered config logic in your Helm config values in Omnistrate.
Creating Custom Storage Classes¶
If the pre-provisioned storage classes don't meet your specific requirements, you can create your own storage classes using the pre-installed drivers that Omnistrate provides for each cloud provider.
Note
Custom storage classes must be created in each deployment cell where you plan to use them. Omnistrate automatically manages the lifecycle of pre-provisioned storage classes, but custom storage classes require manual management across your deployment cells.
Available Pre-Installed Drivers¶
Omnistrate pre-installs the following storage drivers in each deployment cell:
Block Storage Drivers¶
AWS: - ebs.csi.aws.com
- AWS EBS CSI driver for block storage
GCP: - pd.csi.storage.gke.io
- GCP Persistent Disk CSI driver for block storage
Azure: - disk.csi.azure.com
- Azure Disk CSI driver for block storage
File Storage Drivers¶
AWS: - efs.csi.aws.com
- AWS EFS CSI driver for shared file systems
GCP: - filestore.csi.storage.gke.io
- GCP Filestore CSI driver for shared file systems
Azure: - file.csi.azure.com
- Azure Files CSI driver for shared file systems
Blob Storage Drivers¶
AWS: - s3.csi.aws.com
- AWS S3 CSI driver for object storage
GCP: - gcs.csi.storage.gke.io
- GCP Cloud Storage CSI driver for object storage
Azure: - blob.csi.azure.com
- Azure Blob Storage CSI driver for object storage
Custom Storage Class Examples¶
Custom Block Storage Class¶
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: custom-high-iops
provisioner: ebs.csi.aws.com
parameters:
type: io2
iops: "20000"
throughput: "1000"
encrypted: "true"
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete
allowVolumeExpansion: true
Custom File Storage Class¶
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: custom-efs-performance
provisioner: efs.csi.aws.com
parameters:
provisioningMode: efs-ap
fileSystemId: fs-12345678
directoryPerms: "0755"
performanceMode: maxIO
throughputMode: provisioned
provisionedThroughputInMibps: "500"
volumeBindingMode: Immediate
reclaimPolicy: Delete
Custom Blob Storage Class¶
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: custom-s3-storage
provisioner: s3.csi.aws.com
parameters:
mounter: geesefs
bucketName: my-custom-bucket
region: us-west-2
storageClass: STANDARD_IA
volumeBindingMode: Immediate
reclaimPolicy: Delete
Monitoring and Troubleshooting¶
Check Storage Class Availability¶
# List available storage classes
kubectl get storageclass
# Describe a specific storage class
kubectl describe storageclass gp3
Monitor PVC Status¶
# Check PVC status
kubectl get pvc
# Describe PVC for troubleshooting
kubectl describe pvc my-app-data
Common Issues¶
- PVC Stuck in Pending: Verify the storage class exists and there is sufficient quota in the deployment cell
- Volume Mount Failures: Ensure the storage class supports the requested access mode
- Performance Issues: Consider upgrading to a higher-performance storage class or adjusting IOPS settings
Note
Omnistrate automatically handles storage class provisioning and configuration. If you encounter persistent issues, contact support for assistance with your specific deployment environment.