Storage Resources
IronCore storage resources are Volumes, their associated Volumeclasses and VolumePools that allow you to define, provision, and manage Block devices in the Ironcore infrastructure. This guide explains the core storage resource types and how to use them.
Volume
The Volume resource represents a block device in the IronCore API.
Example Volume Resource
An example of how to define a Volume resource in IronCore:
apiVersion: storage.ironcore.dev/v1alpha1
kind: Volume
metadata:
name: volume-sample
spec:
volumeClassRef:
name: volumeclass-sample
# volumePoolRef:
# name: volumepool-sample
resources:
storage: 100GiKey Fields:
volumeClassRef(string):volumeClassRefrefers to the name of an IronCorevolumeClass( for eg:slow,fast,super-fastetc.) to create a volume,volumePoolRef(string):VolumePoolRefindicates which VolumePool to use for a volume. If unset, the scheduler will figure out a suitableVolumePoolRef.resources:Resourcesis a description of the volume's resources and capacity.
VolumeClass
The VolumeClass in IronCore defines the characteristics and capabilities of storage Volume like TPS and IOPs.
Example VolumeClass Resource
An example of how to define a VolumeClass resource in IronCore:
apiVersion: storage.ironcore.dev/v1alpha1
kind: VolumeClass
metadata:
name: volumeclass-sample
capabilities:
tps: 100Mi
iops: 100Key Fields:
capabilities: Capabilities has tps and iops fields that need to be specified, it's a mandatory field,tps(string): Thetpsrepresents transactions per second.iops(string):iopsis the number of input/output operations a storage device can complete per second.
Usage
- VolumeClass Definition: Create a
VolumeClassto set storage properties based on resource capabilities. - Associate with Volume: Link a
VolumeClassto aVolumeusing a reference in the Volume resource.
VolumePool
A VolumePool is a resource in Ironcore that represents a pool of storage volume managed collectively. It defines the infrastructure's storage configuration used to provision and manage volumes, ensuring resource availability and compatibility with associated VolumeClasses.
Example VolumePool Resource
An example of how to define a VolumePool resource in IronCore:
apiVersion: storage.ironcore.dev/v1alpha1
kind: VolumePool
metadata:
name: volumepool-sample
spec:
providerID: ironcore://sharedKey Fields:
providerID(string): TheproviderIdhelps the controller identify and communicate with the correct storage system within the specific backened storage provider.
Bucket
A Bucket in IronCore refers to an object storage resource that organizes and manages data, similar to the concept of buckets in other cloud storage services. Buckets are containers for storing objects, such as files or data blobs.
Example Bucket Resource
An example of how to define a Bucket resource in IronCore:
apiVersion: storage.ironcore.dev/v1alpha1
kind: Bucket
metadata:
name: bucket-sample
spec:
bucketClassRef:
name: bucketclass-sample
# bucketPoolRef:
# name: bucketpool-sampleKey Fields:
bucketClassRef(string):- Mandatory field
BucketClassRefis theBucketClassof a bucket
bucketPoolRef(string):- Optional field
bucketPoolRefindicates whichBucketPoolto use for theBucket, if not specified the controller itself picks the availableBucketPool
Usage
- Data Storage: Use
Bucketsto store and organize data blobs, files, or any object-based data. - Multi-Tenant Workloads: Leverage buckets for isolated and secure data storage in multi-tenant environments by using separate BucketClass or BucketPool references.
- Secure Access: Buckets store a reference to the
Secretsecurely in their status, and theSecrethas the access credentials, which applications can retrieve access details from theSecret.
BucketClass
A BucketClass is a concept used to define and manage different types of storage buckets, typically based on resource capabilities. It is conceptually similar to Kubernetes StorageClass, enabling users to specify the desired properties for an Ironcore Bucket resource creation.
Example BucketClass Resource
An example of how to define a BucketClass resource in IronCore:
apiVersion: storage.ironcore.dev/v1alpha1
kind: BucketClass
metadata:
name: bucketclass-sample
capabilities:
tps: 100Mi
iops: 100Key Fields:
capabilities: Capabilities hastpsandiopsfields which need to be specified, it's a mandatory field,tps(string): Thetpsrepresents transactions per second.iops(string):iopsis the number of input/output operations a storage device can complete per second.
Usage
- BucketClass Definition: Create a
BucketClassto set storage properties based on resource capabilities. - Associate with buckets: Link a
BucketClassto aBucketusing a reference in the Bucket resource. - Dynamic configuration: Update the
BucketClassto modify storage properties for all its Buckets.
BucketPool
A BucketPool is a resource in Ironcore that represents a pool of storage buckets managed collectively. It defines the infrastructure's storage configuration used to provision and manage buckets, ensuring resource availability and compatibility with associated BucketClasses.
Example BucketPool Resource
An example of how to define a BucketPool resource in IronCore:
apiVersion: storage.ironcore.dev/v1alpha1
kind: BucketPool
metadata:
name: bucketpool-sample
spec:
providerID: ironcore://sharedKey Fields:
ProviderID(string): TheproviderIdhelps the controller identify and communicate with the correct storage system within the specific backened storage provider.